C语言贪吃蛇游戏开发详解:从初始化到游戏结束

创始人
2024-12-28 05:11:02
0 次浏览
0 评论

贪吃蛇c语言代码

#defineN200#include#include#include#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011binti,key;intscore=0;/*分数*/intgamespeed=50000;/*调整游戏速度自己做*/structFood{intx;/*食物的横坐标*/inty;/*食物的纵坐标*/intyes;/*决定食物是否应该出现的变量*/}food;/*食物结构*/structSnake{intx[N];inty[N];intnode;/*蛇段数*/intdirection;/*蛇移动方向*/intlife;/*蛇的生命,0条活着,1死*/}snake;voidInit(void);/*图形驱动*/voidClose(void);/*图形结束*/voidDrawK(void);/*开始画面*/voidGameOver(void);/*结束游戏*/voidGamePlay(void);/*玩游戏的具体流程*/voidPrScore(void);/*输出结果*//*Mainfunction*/voidmain(void){Init();/*图形驱动*/DrawK();/*启动画面*/GamePlay();/*玩游戏具体流程*/Close();/*图形结束*/}/*图形驱动*/voidInit(void){intgd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*启动屏幕,左上角坐标为(50,40),右下角坐标为(610,460)wall*/voidDrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线条样式*/for(i=50;i<=600;i+=10)/*绘制栅栏*/{矩形(i,40,i+10,49);/*上边*/矩形(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){矩形(50,i,59,i+10);/*左侧*/矩形(601,i,610,i+10);/*右侧*/}}/*玩游戏的具体流程*/voidGamePlay(void){randomize();/*随机数生成器*/food.yes=1;/*1表示新食物需要出现,0表示食物已经存在*/snake.life=0;/*活着*/snake.direction=1;/*向右方向*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*数量sections*/PrScore();/*输出分数*/while(1)/*可以重复玩游戏,按ESC键结束*/{while(!kbhit())/*不用按任何键,贪吃蛇移动它的身体*/{if(food.yes==1)/*需要出现新的食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x!=0)/*食物随机出现后,食物必须在整个格子内,这样蛇才能吃到*/food.x++;while(food.y!=0)food.y++;food.yes=0;/*屏幕上有食物*/}if(food.yes==0)/*有时显示屏幕上的食物*/{setcolor(GREEN);矩形(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*每个蛇的链接向前移动,这是贪心蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右、左、上、下四个方向,用这个判断来移动蛇头*/switch(snake.direction){case1:snake.x[0]+=10;break;case2:snake.x[0]-=10;break;case3:snake.y[0]-=10;break;case4:snake.y[0]+=10;break;}for(i=3;i595||snake.y[0]<55>455)/*蛇是否击中wall*/{GameOver();/*游戏结束*/snake.life=1;/*蛇死亡*/}if(snake.life==1)/*经过以上两个判断,如果蛇死了,则跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃完食物后*/{setcolor(0);/*去掉上面的食物屏幕*/矩形(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*先把新的一段放到看不见的地方,下次通过循环位置取之前的一段*/snake.node++;/*蛇的身体是一段long*/food.yes=1;/*屏幕上需要出现新的食物*/score+=10;PrScore();/*输出新的分数*/}setcolor(4);/*画一个蛇*/for(i=0;i

我学完C语言了,但是还是做不出完整的游戏啊,只能做出个黑窗口出来,想做一个完整的游戏还要学习什么?

制作游戏需要图形库。

C语言GetMouseMsg函数不好使

看看这个。

//******友情提醒:如果想要更快,请更改函数_sleep(500)中的参数*****#include#include#include#include#include
热门文章
1
C语言编程:爱心图案代码解析与实现 爱心c语言程序代码详情如下。#include,intmain()inti,j,k...

2
C程序设计实践教程:系统学习与实际操作指... c程序设计实践教程内容简介这是一本《C程序设计》实用教程,共分10章,内容分为学...

3
C++字符串处理技巧:定义、操作与排序实... c++如何定义大量字符串字符*s[100];这样,你就会得到一个包含100个字符...

4
C语言实现字符剔除与输出——C++程序示... C语言C++程序编写要求键盘输入一串字符,然后剔除其中一个字符,再输出剩下的字符...

5
C语言for循环嵌套执行原理及运算流程解... c语言中for循环嵌套的运算流程?for循环的一般形式为:for(表达式1;表达...

6
C语言实现100以内素数和计算方法详解 c语言求100以内素数的和解决方案1:#include#includeintpr...

7
Java面试常见问题解析攻略 一般java面试都会问些什么问题1您能介绍一下自己吗?回答提示:大多数人回答这个...

8
AI代写应用解析:从学生到技术工人,探索... ai代写使用人群有哪些学生、科技工作者等。学生:无论是初中生、大学生还是研究生,...

9
Python编程教程:0-10000数字... python输入0-10000的一个数,将数字转换成中文汉字零一二三四五六七八九...

10
C语言贪吃蛇游戏开发详解:从初始化到游戏... 贪吃蛇c语言代码#defineN200#include#include#incl...