void creatfood(){bool flag = false;if (f.iseat == true) {while (1){flag = false;//设定flag判断食物是否与蛇身重合f.x = rand() % 68*10;f.y = rand() % 48*10;//食物的随机生成for (int i = 0; i < s.n; i++){if (f.x == s.szb[i].x && f.y == s.szb[i].y){flag = true;break;}}if (!flag){f.iseat = false;break;}//上面部分为判断食物是否与蛇身重合}}}
八、吃食物
代码如下(示例):
void eatfood(){if (s.szb[0].x == f.x && s.szb[0].y == f.y)//如果蛇头与食物重合那么食物就被吃掉了{f.iseat = true;s.n++;}}
九、游戏失败的判定
代码如下(示例):
因为我初始化的窗口为640*480,if判断的范围打击可以根据自己窗口大小设定 。
int gameover(){if (s.szb[0].x < 0 || s.szb[0].x>640 || s.szb[0].y < 0 || s.szb[0].y>480){return 1;}for (int i = 1; i < s.n; i++){if (s.szb[0].x == s.szb[i].x && s.szb[0].y == s.szb[i].y){return 1;}}return 0;}
十、main函数
代码如下(示例):
int main(){initgraph(680,480);mciSendString(L"open 7895.mp3", 0, 0, 0);mciSendString(L"play 7895.mp3", 0, 0, 0);//添加音乐必须加上这个预处理指令#pragma comment(lib,"winmm.lib")int n = 0;gameinit();while (1) {while (!_kbhit()){snakemove();drawgame();creatfood();eatfood();n = gameover();if (n)break;Sleep(100);}if (n)break;changech();}closegraph();getchar();return 0;}
总结
【二、创建蛇与食物的结构体】贪吃蛇游戏的难点就在于蛇身的变化与移动,只要这两个问题解决后其他的都很好想 。封面就是运行后的结果 。
- 泛型编程基础 C++之auto、decltype
- 1、学习三极管的使用
- 此作是公认的隶书第一,“二王”书法的先声,没十年功底学不好它 中国之最草书
- 齐齐哈尔天气预报
- 无锡、鼋头渚、灵山等。太湖中国最大的淡水湖之一被誉为江南明珠 太湖中国之最
- 最无聊的世界纪录 最大的老二吉尼斯记录
- 郑州“7.20”特大暴雨灾害调查报告出炉!解读“重面子、轻里子” 郑州720历史之最
- 一二百的酒哪种比较好,过年送礼什么牌子酒好一些
- 阿二冰茶,阿二冰茶哪里有
- 揭秘:清朝十二位皇帝*后都葬在哪儿?