c语言贪吃蛇源代码怎么用?

核心提示C语言贪吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。 由于我们通常使用的操作系统是Windows系统,而在该系统下最长用的C/C++编译器是VC++编译器,目前在大专院校常用的版本还是VC++6.0 下面就以VC

C语言贪吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。

由于我们通常使用的操作系统是Windows系统,而在该系统下最长用的C/C++编译器是VC++编译器,目前在大专院校常用的版本还是VC++6.0

下面就以VC++6.0来说明编译过程:

1.在VC++6.0中通过“File”菜单下的 “Open”子菜单打开贪吃蛇代码

2.在VC++6.0中通过“Build”菜单下的 “Compile xxxx.xx”子菜单编译贪吃蛇代码

3.在VC++6.0中通过“Build”菜单下的 “Execute xxxx.exe”子菜单运行贪吃蛇程序

附:在VC++6环境下可运行的C/C++贪吃蛇源代码(无版权,自己编写,欢迎任意修改拷贝)

#define?DEBUG?0?//当程序在调试阶段时?DEBUG为?1

#include<iostream>

#include<windows.h>

#include<time.h>

#include<conio.h>

using?namespace?std;

void?readini(FILE?**fphead,?int?*score,?char?*argv[])?//创建或打开一个和运行文件对应的ini文件,读取最高纪录

{

char?filename[200],*pfilename;

int?flag=-1,i;

strcpy(filename,argv[0]);

for(i=0;filename[i]!='0';i++)

{

if?('.'==filename[i])flag=1;

}

if(1==flag)

{

filename[i-1]='i';

filename[i-2]='n';

filename[i-3]='i';

}

else

{

filename[i]='.';

filename[i+1]='i';

filename[i+2]='n';

filename[i+3]='i';

filename[i+4]='0';

}

for(;filename[i]!=''&&i>=0;i--)pfilename=&filename[i];

if?(?(*fphead=fopen(pfilename,?"rb+"))==NULL)

{

if?(?(*fphead=fopen(pfilename,?"wb+"))==NULL)

{

printf("无法创建或打开"%s"文件n",pfilename);

system("pause");

exit(0);

}

}

else

{

fread(score,sizeof(int),1,*fphead);

}

}

void?writeini(FILE?**fphead,?int?*score,?char?*argv[])//打开一个和运行文件对应的ini文件,写入最高纪录

{

char?filename[200],*pfilename;

int?flag=-1,i;

strcpy(filename,argv[0]);

for(i=0;filename[i]!='0';i++)

{

if?('.'==filename[i])flag=1;

}

if(1==flag)

{

filename[i-1]='i';

filename[i-2]='n';

filename[i-3]='i';

}

else

{

filename[i]='.';

filename[i+1]='i';

filename[i+2]='n';

filename[i+3]='i';

filename[i+4]='0';

}

for(;filename[i]!=''&&i>=0;i--)pfilename=&filename[i];

if?(?(*fphead=fopen(pfilename,?"wb+"))==NULL)

{

printf("无法写入"%s"文件,磁盘写保护!n",pfilename);

system("pause");

exit(0);

}

else

{

rewind(*fphead);

fwrite(score,sizeof(int),1,*fphead);

fclose(*fphead);

}

}

void?gotoxy(int?x,int?y)//光标定位,光标定位函数SetConsoleCursorPosition是左上角位置是0,0然后向左向下延伸

{

COORD?pos;

pos.X=2*y;

pos.Y=x;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

void?color(int?a)//颜色函数

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

}

void?Refresh(int?q[][22],?int?grade,?int?gamespeed,?int?length,int?score)?//输出贪吃蛇棋盘

{

int?i,j;

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

{

for(j=0;j<22;j++)

{

if(q[i][j]==0)//输出棋盘空白

{

gotoxy(i,j);

color(11);

cout<<"■";

}

if(q[i][j]==1||q[i][j]==2)//输出棋盘墙壁

{

gotoxy(i,j);

color(11);

cout<<"□";

}

if(q[i][j]==3)//输出蛇头

{

gotoxy(i,j);

color(14);

cout<<"★";

}

if(q[i][j]==4)//输出蛇身

{

gotoxy(i,j);

color(12);

cout<<"◆";

}

if(q[i][j]==5)//输出果子

{

gotoxy(i,j);

color(12);

cout<<"●";

}

}

if(i==0)?cout?<<?"t***********************";

if(i==1)?cout?<<?"t等级为:"?<<?grade;//显示等级

if(i==3)?cout?<<?"t自动前进时间";

if(i==4)?cout?<<?"t间隔为:"?<<?gamespeed?<<?"ms";//显示时间

if(i==6)?cout?<<?"t历史最高分为:"?<<?score?<<?"分";

if(i==7)?cout?<<?"t你现在得分为:"?<<?(length+(grade-1)*8)*10?<<?"分";

if(i==8)?cout?<<?"t**********************";

if(i==9)?cout?<<?"t游戏说明:";

if(i==10)?cout?<<?"t(1)用小键盘方向键控制";

if(i==11)?cout?<<?"t蛇头运动方向;";

if(i==12)?cout?<<?"t(2)蛇每吃一个果子蛇身";

if(i==13)?cout?<<?"t增加一节;";

if(i==14)?cout?<<?"t(3)蛇咬到自己或碰到墙";

if(i==15)?cout?<<?"t壁游戏结束。";

if(i==18)?cout?<<?"t**********************";

if(i==19)?cout?<<?"tC/C++语言作业:";

if(i==20)?cout?<<?"tzjlj,2015.03.16?";

}

}

int?main(int?argc,?char?*argv[]){

int?tcsQipan[22][22];?//贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)

int?i,j,score,directiontemp;

FILE*fpini;/

if(x==x1?&&?y==y1)?//吃果子,长度加1

{?

length?++;

if(length>=8)//长度大于等于8重新计算长度,等级加1

{

length?-=?8;//重新计算长度

grade?++;//等级加1

if(gamespeed>50)//控制最快速度为50

gamespeed?=?550?-?grade?*?50;?//?改变自动前进时间间隔

}

tcsQipan[x][y]=?3;//贪吃蛇棋盘相应坐标现在蛇头标志改为蛇头标志3

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]?=?4;//贪吃蛇棋盘相应坐标原来蛇头标志改为蛇身标志4

head?=?(head+1)%400;//防止数组越界

tcsZuobiao[0][head]?=?x;//蛇头的x坐标

tcsZuobiao[1][head]?=?y;//蛇头的y坐标

do//随机出果子

{

x1=rand()%20+1;

y1=rand()%20+1;

}

while(tcsQipan[x1][y1]!=0);//如果不是在空白处重新出果子

tcsQipan[x1][y1]=5;//贪吃蛇棋盘相应坐标标上果子的标志5

gotoxy(22,12);

cout?<<?"t游戏进行中!"?<<?endl;

Refresh(tcsQipan,grade,gamespeed,length,score);

}

else//不吃果子

{

if(otherkey)

{

tcsQipan?[tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=0;

tail=(tail+1)%400;//防止数组越界

tcsQipan?[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=4;

head=(head+1)%400;//防止数组越界

tcsZuobiao[0][head]=x;//蛇头的x坐标

tcsZuobiao[1][head]=y;//蛇头的y坐标

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=3;

gotoxy(22,12);

cout?<<?"t游戏进行中!"?<<?endl;

Refresh(tcsQipan,grade,gamespeed,length,score);

}

else

{

gotoxy(22,12);

cout?<<?"t游戏暂停中!"?<<?endl;

}

}

}

while(1)

{

while(!kbhit());

if((direction?=getch())==13)//按回车键开始下一局

break;

if(direction?==27)//按ESC退出游戏

exit(0);

}

system("cls");//清除屏幕重新开始

}

return?0;

}

 
友情链接
鄂ICP备19019357号-22