当前位置:神舟问>百科知识>c语言贪吃蛇挥搞术古果型精危源代码怎么用?

c语言贪吃蛇挥搞术古果型精危源代码怎么用?

2024-04-06 20:28:49 编辑:join 浏览量:595

   C语言贪同距须找具厚土传括吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。

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

  下面就快完掉决气搞场轮衡刘接以VC++6.0来说明补探府编译过程:

1.在VC++6.0中通过“File”菜单下的“Open”子菜滑假新执冲千红巴独单打开贪吃蛇代码

 

c语言贪吃蛇挥搞术古果型精危源代码怎么用?

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

 

c语言贪吃蛇挥搞术古果型精危源代码怎么用?

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

 

c语言贪吃蛇挥搞术古果型精危源代码怎么用?

 

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

1234567891011121314151617181920212223242526水附修兴2728293031323334353637383940414243444546474849505152535455565758596杆0616263646566676869707172737475767778798081828384858687888990919293949596979899100脸写半1011021031041周员亚05106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148求转育酸清走屋留汉需用1491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951正指96197198199200201202203艺合2042052062072082092102112122132142152162展京革素坚往设眼段以17218219220221222223224225226227228229失历致凯23023123223323轻移识在画弦假局翻423523623723823924024124224324424524624724824925别假委带曾鲜动0251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393/*C/C++贪吃蛇游戏,zjlj,2015.3.16*/#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;//*fpini 信息文件 readini(&fpini, &score, argv);//读取ini文件的最高纪录 if (score<0)//最高成绩小于零设置为零,初建文件会是负数  score=0; while(1) {  for(i=1;i<=20;i++)   for(j=1;j<=20;j++)    tcsQipan[i][j]=0;    //贪吃蛇棋盘相应坐标标上中间空白部分的标志0  for(i=0;i<=21;i++)   tcsQipan[0][i] = tcsQipan[21][i] = 1;      //贪吃蛇棋盘相应坐标标上上下墙壁的标志1  for(i=1;i<=20;i++)   tcsQipan[i][0] = tcsQipan[i][21] = 2;      //贪吃蛇棋盘相应坐标标上左右墙壁的标志2  int tcsZuobiao[2][500];     //蛇的坐标数组  for(i=0; i<4; i++)  {   tcsZuobiao[0][i] = 1;//蛇身和蛇头的x坐标   tcsZuobiao[1][i] = i + 1;//蛇身和蛇头的y坐标  }  int head = 3,tail = 0;//标示蛇头和蛇尾的数组偏移量  for(i=1;i<=3;i++)   tcsQipan[1][i]=4;    //蛇身  tcsQipan[1][4]=3;       //蛇头  int x1, y1;           // 随机出果子  srand(time(0));//设置随机种子  do  {   x1=rand()%20+1;   y1=rand()%20+1;  }  while(tcsQipan[x1][y1]!=0);//如果不是在空白处重新出果子  tcsQipan[x1][y1]=5;//贪吃蛇棋盘相应坐标标上果子的标志5  color(12);  cout<<"\n\n\t\t\t\t贪吃蛇游戏即将开始 !"<<endl;//准备开始  long start,starttemp;  int grade = 1, length = 4;  //设置初始等级和蛇的初始长度  int gamespeed = 500;  //设置初始前进时间间隔  for(i=3;i>=0;i--)  {   start=clock();   while(clock()-start<=1000);   system("cls");   if(i>0)    cout << "\n\n\t\t\t\t进入倒计时:" << i << endl;  //倒计时显示   else    Refresh(tcsQipan,grade,gamespeed,length,score);  //初始棋盘显示  }  int timeover=1,otherkey=1;//初始化超时时间和按键判断参数  char direction = 77;  // 设置初始情况下,向右运动  int x=tcsZuobiao[0][head],y=tcsZuobiao[1][head];//保存蛇头坐标到x,y变量  while(1)//运行一局游戏  {   start = clock();   while((timeover=((starttemp=clock())-start<=gamespeed))&&!kbhit());//如果有键按下或时间超过自动前进时间间隔则终止循环   if(direction==72||direction==80||direction==75 ||direction==77)   directiontemp=direction;//保留上一次方向按键            //starttemp=gamespeed+start-starttemp;//保留停留时间   if(timeover)   {    #if (DEBUG==1)    direction = getch();//调试代码             #else    if((direction =getch())==-32)     direction = getch();       #endif   }             #if (DEBUG==1)//调试代码       start=clock();    while(clock()-start<=2000);    gotoxy(24,4);    cout << "\t按键ASCII代码"<<(int)direction<<"    "<<endl;             #endif    if(!(direction==72||direction==80||direction==75 ||direction==77))    {        otherkey=0;//  按键非方向键,otherkey设置为0    }    else    {     otherkey=1;//  按键为方向键,otherkey设置为1    }             if(direction==72 && directiontemp==80)//忽略反方向按键    {        direction=32;     otherkey=0;                 //start = clock();        //while(clock()-start<=starttemp);    }    else if(direction==80 && directiontemp==72)   {        direction=32;//设置按键为非方向键      otherkey=0;//  按键为非方向键,otherkey设置为0                // start = clock();       //while(clock()-start<=starttemp);//补偿等待时间    }    else if(direction==75 && directiontemp==77)    {        direction=32;     otherkey=0;                 //start = clock();        //while(clock()-start<=starttemp);    }    else if(direction==77 && directiontemp==75)    {        direction=32;     otherkey=0;                 //start = clock();        //while(clock()-start<=starttemp);    }              switch(direction)//判断方向键    {     case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break;      // 向上     case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break;      // 向下     case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break;      // 向左     case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1;break;      // 向右     default: break;    }          if(x==0 || x==21 ||y==0 || y==21)      // 蛇头碰到墙壁,结束本局游戏    {       gotoxy(22,12);     cout << "\t游戏已结束!" << endl;     if(score>=(length+(grade-1)*8)*10)//判断是否破记录     {      gotoxy(10,7);      color(12);      cout << "闯关失败 加油耶!" << endl;      fclose(fpini);//关闭ini文件     }     else     {      gotoxy(10,7);      color(12);      cout << "恭喜您打破记录" << endl;      score=(length+(grade-1)*8)*10;      writeini(&fpini, &score, argv);//写入ini文件的最高纪录     }     gotoxy(23,12);        cout << "按回车键重新开始,按ESC退出游戏" << endl;//显示的提示     break;//退出该局游戏    }    if(tcsQipan[x][y]!=0&&!(x==x1&&y==y1)&&tcsQipan[x][y]!=3) //   蛇头碰到蛇身,结束本局游戏    {     gotoxy(22,12);     cout << "\t游戏已结束!" << endl;     if(score>=(length+(grade-1)*8)*10)//判断是否破记录     {      gotoxy(10,7);      color(12);      cout << "闯关失败 加油耶!" << endl;      fclose(fpini);//关闭ini文件     }     else     {      gotoxy(10,7);      color(12);      cout << "恭喜您打破记录" << endl;      score=(length+(grade-1)*8)*10;      writeini(&fpini, &score, argv);//写入ini文件的最高纪录     }     gotoxy(23,12);     cout << "按回车键重新开始,按ESC退出游戏" << endl;//显示的提示     break;//退出该局游戏    }    /*    游戏运行时的核心算法开始    */    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;}

标签:源代码,贪吃蛇,搞术

版权声明:文章由 神舟问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.shenzhouwen.com/article/319624.html
热门文章