关闭
当前位置:首页 - 中超联赛 - 正文

溏心风暴3,小伙仅用200行C++代码,完成贪吃蛇小游戏(附源码),为人师表

admin 2019-05-06 300°c



小编是一个有着6年工作经验的工程师,关于C++编程,自己有做材料的整合,一个完好的C++编程学习道路,学习材料和东西,能够进我的群10048,-83029收取,免费送给我们,期望你也能凭着自己的尽力,成为下一个优异的程序员

#include #include #include #include #include #include #def聚和适ine WIDTH 40 #define初级会计职称 HEIGH 12 enum direction{//方向 LEFT, RIGHT, UP, DOWN }; struct Food{//食物 int 曾祥耿x; int y; }; struct Node{//画蛇身 int x; int y; struct Node *next; }; struct Snake{//蛇特点 int lenth;//长度 enum direction dir;//方向 }; struct Food *food; //食物 struct Snake *溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表snake;//蛇特点 struct Node *snode,*tail;//蛇身 int SPEECH=200; int score=0;//分数 int smark=0;//吃食物符号 int times=0; int STOP=0; void Initfood();//发生食物 void Initsnake();//结构snake void Eatfood();//头部行进 void Addnode(int x, int y);//添加蛇身 void display(struct Node *shead);//显现蛇身坐标 void move();//蛇移动 void draw();//画蛇 void Homepage();//主页 void keybordhit();//监控键盘按键 void Addtail();//吃到食物 void gotoxy(int x, int y)//定位光标 { COORD pos; pos.X = x - 1; pos.Y = y - 1; SetConsoleCursor菌组词Position(GetStdHandle(STD_OUTPUT_HANDLE),pos); } void Initsnake()//黄巢结构snake { int i; snake=(struct S蛇女nake*)malloc(sizeof(struct Snake)); tail=(struct Node*)malloc(sizeof(struct Node)); food = (struct Food*)malloc(sizeof(struct Food)); snake->lenth=5;//初始长度 5 snake->dir=RIGHT;//初始蛇头方向 右 for(i=2;i<=snake->lenth+2;i++)//添加 5 个结点 { Addnode(i,2); } } void Initfood()//发生食物 { struct Node *p=snode; int mark=1;



srand((unsign溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表ed)time(NULL));//以时刻为种子发生随机数 while(1) { food->x=ra轿车电瓶寿数nd()%(WIDTH-2)+2;//食物X坐标 food->y=rand()%(HEIGH-2)+2;//食物Y坐标 while(p!=NULL) { if((food->x==p->x)&&(food->y==p->y))//假如食物发生在蛇身上 {//则从头生成食物 mark=0;//食物生成无效 break; } p=p->next; } if(mark==1)//假如食物不在蛇身上,生成食物,不然从头生成食物 { gotoxy(food->x,food->y); printf("%c",3); break; } mark=1; p=snode; } } void move()//移动 { struct Node *q, *p=snode; if(snake->dir==RIGHT) { Addnode(p->x+1,p->y); if(smark==0) { while(p->next!=NULL) { q=p; p=p->next; } q->next=NULL; free(p); } } if(snake->dir==LEFT) { Addnode(p->x-1,p->y); if(smark==0) { while(p->next!=NULL) { q=p; p=p->next; } q->戴娇倩next=NULL; free(p); } } if(snake->dir==UP) { Addnode(p->x,p->y-1); if(smark==0) { while(p->next!=NULL) { q=p; p=p->next; } q->next=NULL; free(p); } } if(snake->dir==DOWN) { Addnode(p->x,p->y+1); if(smark==0) { while(p->next!=NULL) { q=p; p=p->next; } q->next=NULL; free(p); } } } void Addnode(int x, int y)//添加蛇身 { struct Node *newnode=(struct Node *)malloc(sizeof(struct Node)); struct Node *p=snode; newnode->next=snode; newnode->x=x; newnode->y=y; snode=newnode;//结点加到蛇头 if(x<2||x>=WIDTH||y<2||y>=HEIGH)//碰新农合报销份额到鸿沟 { STOP=1; gotoxy(10,19); printf("撞墙,游戏完毕,任意键退出!\n");//失利 _getch(); free(snode);//开释内存 free(snake); exit(0); } while(p!=NULL)//碰到本身 { if(p->next!=NULL) if((p->x==x)&&(p->y==y)) { STOP=1; gotoxy(10,19); printf("撞到本身,游戏完毕,任意键退出!\n");//失利 _getch(); free(snode);/亡羊补牢的故事/开释内存 free(snake); exit(0); } p=p->next; } } void Eatfood()//吃到食物 { Addtail(); score++; } void Addtail()//添加蛇尾 { struc春风又绿江南岸t Node *newnode=(struct Node *)malloc(sizeof(struct Node)); struct Node *p=snode; tail->next=newnode; newnode->x=50; newnode->y=20; newnode->next=NULL;//结点加到蛇头 tail=newnode;//新的蛇尾 } void draw()//画蛇 { struct Node *p=snode; int i,j; while(p!=NULL) { gotoxy(p->x,p->y); printf("%c"溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表,2); tail=p; p=p->next; } if(snode->x==food->x&&snode->y==food->y)//蛇头坐标溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表等于食物坐标 { smark=1; Eatfood();//添加结点 Initfood();//发生食物 } if(smark==0) { gotoxy(tail->x,tail->y);//没吃到食物铲除之前的尾结点 printf("%c",' ');//假如吃到食物,不清楚尾结点 } else { times=1; } if((smark==1)&&(times==1)) { gotoxy(tail->x,tail->y);//没吃到食物铲除之前的尾结点 printf("%c",' ');//假如吃到食物,不清楚尾结点 smark=0; } gotoxy(50,12); printf("食物: %d,%d",food->x,food->y); gotoxy(50,5); printf("分数: %d",score); gotoxy(50,7); printf("速度: %d不死法医",SPEECH); gotoxy(15,14); printf("按o键加速"); gotoxy(15,15); printf("按p键减速"); gotoxy(15,16); printf("按空格键暂停"); } void HideCursor()//躲藏光标 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetC红通女逃犯黄红onsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void Homepage()//绘主页 { int x,y; HideCursor();//躲藏光标 printf("----------------------溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表-方建兴新浪博客-----------------\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\t\t |\n"); printf("|\t\t\溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表t\t |\n"); printf("----------------------------------------美国黄片\n"); gotoxy(5,13); printf("任意键开端游戏!按W.A.S.D操控方向"); _getch(); Initsnake(); Initfood(); gotoxy(5,13); printf("猪肚 "); } void keybordhit()//监控键盘 { char ch; if(_kbhit()) { ch=getch(); switch(c简历表格h) { case 'W': case 'w':if(snake->dir==DOWN)//假如原本方向是下,而按相反方向无效 { break; } else snake->dir=UP;break; case 'A': case 'a':if(snake->dir==RIGHT)//假如原本方向是右,而按相反方向无效 { break; } else snake->dir=LEFT;break; case 'S': case 's':if(snake->dir==UP)//假如原本方向是上,而按相反方向无效 { break; } else snake->dir=DOWN;break; case 'D': case 'd':if(snake->dir==LEFT)//假如原本方向是左,而按相反方向无效 { break; } else snake->dir=RIGHT;break; case 'O': case 'o': if(SPEECH>=15小优0)//速度加速 { SPEEC性感早餐妹H=SPEECH-50; } break; case 'P': case 'p': if(SPEECH<=400)//速度减慢 { SPEECH=SPEECH+50; } break; case ' '://暂停 gotoxy(15,18); printf("游戏已暂停,按任意键康复游戏"); system("pause>nul"); gotoxy(15,18); printf(" "); break; default:break; } } } int main(void)//程序进口 { Homepage(); while(!STOP) { keybordhit();//监控键盘按键 溏心风暴3,小伙仅用200行C++代码,完结贪吃蛇小游戏(附源码),为人师表move();//蛇的坐标改变 draw();//蛇的重绘 Sleep(SPEECH);//暂时挂起线程 } return 0; }

初学编程的同学能够参阅 联络我学习



admin 14文章 0评论 主页

相关文章

  用户登录