當前位置:編程學習大全網 - 編程語言 - 求幾個C++在VC6.0環境下編寫的遊戲小程序的源代碼實例教程

求幾個C++在VC6.0環境下編寫的遊戲小程序的源代碼實例教程

在百度上看到的壹個貪吃蛇遊戲

#include<iostream.h>

#include<windows.h>

#include<time.h>

#include<stdlib.h>

#include<conio.h>

#define N 21

void gotoxy(int x,int y)//位置函數

{

COORD pos;

pos.X=2*x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

void color(int a)//顏色函數

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

}

void init(int apple[2])//初始化函數(初始化圍墻、顯示信息、蘋果)

{

int i,j;//初始化圍墻

int wall[N+2][N+2]={{0}};

for(i=1;i<=N;i++)

{

for(j=1;j<=N;j++)

wall[i][j]=1;

}

color(11);

for(i=0;i<N+2;i++)

{

for(j=0;j<N+2;j++)

{

if(wall[i][j])

cout<<"■";

else cout<<"□" ;

}

cout<<endl;

}

gotoxy(N+3,1);//顯示信息

color(20);

cout<<"按 W S A D 移動方向"<<endl;

gotoxy(N+3,2);

color(20);

cout<<"按任意鍵暫停"<<endl;

gotoxy(N+3,3);

color(20);

cout<<"得分:"<<endl;

apple[0]=rand()%N+1;//蘋果

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout<<"●"<<endl;

}

int main()

{

int i,j;

int** snake=NULL;

int apple[2];

int score=0;

int tail[2];

int len=3;

char ch='p';

srand((unsigned)time(NULL));

init(apple);

snake=(int**)realloc(snake,sizeof(int*)*len);

for(i=0;i<len;i++)

snake[i]=(int*)malloc(sizeof(int)*2);

for(i=0;i<len;i++)

{

snake[i][0]=N/2;

snake[i][1]=N/2+i;

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout<<"★"<<endl;

}

while(1)//進入消息循環

{

tail[0]=snake[len-1][0];

tail[1]=snake[len-1][1];

gotoxy(tail[0],tail[1]);

color(11);

cout<<"■"<<endl;

for(i=len-1;i>0;i--)

{

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout<<"★"<<endl;

}

if(kbhit())

{

gotoxy(0,N+2);

ch=getche();

}

switch(ch)

{

case 'w':snake[0][1]--;break;

case 's':snake[0][1]++;break;

case 'a':snake[0][0]--;break;

case 'd':snake[0][0]++;break;

default: break;

}

gotoxy(snake[0][0],snake[0][1]);

color(14);

cout<<"★"<<endl;

Sleep(abs(200-0.5*score));

if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉蘋果後蛇分數加1,蛇長加1

{

score++;

len++;

snake=(int**)realloc(snake,sizeof(int*)*len);

snake[len-1]=(int*)malloc(sizeof(int)*2);

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout<<"●"<<endl;

gotoxy(N+5,3);

color(20);

cout<<score<<endl;

}

if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到圍墻後失敗

{

gotoxy(N/2,N/2);

color(30);

cout<<"Game over"<<endl;

for(i=0;i<len;i++)

free(snake[i]);

Sleep(INFINITE);

exit(0);

}

}

return 0;

}

2

|評論(3)

向TA求助

回答者: C加語言初學者 | 五級采納率:42%

擅長領域: C/C++ 華語流行樂

參加的活動: 暫時沒有參加的活動

  • 上一篇:立式註塑機的結構及說明
  • 下一篇:電能計量的圖書二
  • copyright 2024編程學習大全網