如何使用C语言做出来简易的贪食蛇

#include<stdio.h>
#include<graphics.h>  //easy图形库
#include<conio.h>     //_getch
#include<stdlib.h>
#include<time.h>
//坐标属性
typedef struct Point
{int x, y;}MYPOINT;
//蛇的属性
struct snake
{MYPOINT xy[100];          //最多长度为100int num;                  //节数,长度char position;            //方向
}snake;
//食物属性
struct Food
{MYPOINT  fdxy;              //食物的坐标int grade;                  //经验值(分数)int flag;                   //标记
}food;
//枚举方向
enum snakePosition{ up,down,left,right};
//模块化设计(函数实现模块化功能)
//初始化蛇
void initSnake()
{//一开始前三节snake.xy[2].x = 0;snake.xy[2].y = 0;snake.xy[1].x = 10;snake.xy[1].y = 0;snake.xy[0]. x = 20;snake.xy[0].y = 0;snake.num = 3;             //三节snake.position = right;    //方向向右
}
//画蛇
void drawSnake()
{//画蛇,画的不止一节
for (int i = 0; i < snake.num; i++)
{setlinecolor(BLACK);setfillcolor(RGB(211, 148, 163));fillrectangle(snake.xy[i].x, snake.xy[i].y, snake.xy[i].x + 10, snake.xy[i].y + 10);}
}
//蛇移动
void moveSnake()
{//移动的原理:控制蛇头,蛇的身体是不是向前走//蛇的身体移动:替换for (int i = snake.num - 1; i > 0; i--){snake.xy[i].x = snake.xy[i - 1].x;snake.xy[i].y = snake.xy[i - 1].y;}//蛇头移动switch (snake.position){case up:snake.xy[0].y -= 10;break;case down:snake.xy[0].y += 10;break;case left:snake.xy[0].x -= 10;break;case right:snake.xy[0].x += 10;break;}
}
//游戏移动的原理:按键交互
void keyDown()
{//按键操作char key = _getch();switch (key){//w,s,a,d代表方向case 'w':case 'W':case 72:if (snake.position != down)snake.position = up;break;case's':case'S':case 80:if (snake.position != up)snake.position = down;break;case 'd':case 'D':case 77:if (snake.position != left)snake.position = right;break;case 'a':case 'A':case 75:if (snake.position != right)snake.position = left;break;}
}
//初始化食物
void initfood()
{//随机产生食物food.fdxy.x = rand() % 80 * 10;//[0,790]food.fdxy.y = rand() % 60 * 10;//食物一开始有food.flag = 1;//出现在蛇的身上,重新产生for (int i = 0; i < snake.num; i++){if (food.fdxy.x == snake.xy[i].x && food.fdxy.y == snake.xy[i].y){//随机产生食物food.fdxy.x = rand() % 80 * 10;//[0,790]food.fdxy.y = rand() % 60 * 10;}}
}
//画食物
void drawFood()
{setlinecolor(BLACK);setfillcolor(RGB(211, 148, 163));fillrectangle(food.fdxy.x, food.fdxy.y, food.fdxy.x + 10, food.fdxy.y + 10);
}
//吃食物
void eatFood()
{//原理:蛇头碰到食物if (snake.xy[0].x == food.fdxy.x && snake.xy[0].y == food.fdxy.y){food. flag = 0;snake.num++;food.grade += 10;
}
}
int main()
{srand((unsigned int)time(NULL));initgraph(800, 600);setbkcolor(RGB(20,105,190));cleardevice();initSnake();while(1){cleardevice();drawSnake();drawFood();eatFood();moveSnake();if (_kbhit()){keyDown();}if (food.flag== 0){initfood();Sleep(100);}Sleep(100);}_getch();closegraph();return 0;
}

C语言如何做出简易贪食蛇相关推荐

  1. Python 简易版贪食蛇(源代码)

    Python 简易版贪食蛇 简易版贪食蛇代码如下,直接运行即可. 1. 效果图 2.源代码 源代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*-im ...

  2. C语言 实现贪食蛇游戏

    参照博客"贪食蛇的C语言实现"的图形界面,用了大概一天的时间我也写了一个简单版的贪食蛇,能玩. 游戏截图 1.调用Windows API 解决画图问题 2.初始化画出围墙,蛇身体 ...

  3. 学习C语言之用函数做出简易计算器

    学习C语言之用函数做出简易计算器 #include<stdio.h> #include<stdlib.h>int add(int x,int y) {int z;z = x+y ...

  4. C语言贪食蛇(数组实现)

    源码如下: #include<stdio.h> #include<windows.h> #include<time.h> #include<stdlib.h& ...

  5. [原]Console小技巧——Console版贪食蛇

    这一篇是我的Console小技巧的最后一篇文章,以下是索引: 1.[原]Console小技巧--七彩输出 2.[原]Console小技巧--字符涂鸦 3.[原]Console小技巧--Console版 ...

  6. 有一只会射子弹的贪食蛇,你见过吗?

    在游戏编程学习过程中,我们可以有意识地对游戏案例进行一些改进和创新,这样不仅能增进学习效果,还能提高编程能力. 这里简单聊聊改进的思路,一般可以从两方面考虑:一是改变原有的玩法规则,二是综合不同案例的 ...

  7. c++课程设计之贪食蛇

    这个程序是windows环境下完成的,为了更好的做出动画效果,定义了gotoxy函数,主要用了三个 类Game_Map,Snake,和Snake_Game类,在第一次游戏时需要在菜单中初始化玩家数据, ...

  8. java贪吃蛇设计流程_JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)

    JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文12000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘要 "贪食蛇"游戏 ...

  9. c# winfrom 贪食蛇游戏

    QQ:285679784   欢迎加入博主CSDN资源QQ群799473954(附加信息:CSDN博客)一起学习 ! using System; using System.Collections.Ge ...

最新文章

  1. 虚拟化文件服务器,VMware虚拟化效率之文件服务器性能测试(上)
  2. stm32f401 i2s 时序图
  3. MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表
  4. 手工计算YARN和MapReduce、tez内存配置设置
  5. 【玩转cocos2d-x之九】动作类CCAction
  6. [SpringBoot2]定制化原理_SpringBoot定制化组件的几种方式
  7. ApacheCN Angular 译文集 20211114 更新
  8. linux shell编程if语句内判断参数详解【ZT】
  9. html怎么保存曲奇,曲奇烘焙不可不知的小技巧,烘焙出绝对赞的口感!
  10. 中维监控显示无法连接服务器失败,中维远程监控系统服务器端
  11. 屏幕尺寸、分辨率、像素密度三者关系
  12. 手写curry函数,实现函数柯里化
  13. 集成学习(ensemble learning)基础知识
  14. 转载tangl_99的Servlet 实现文件上传下载--自己的一点心得
  15. 汇编语言的一些相关资料(上机或者实验)
  16. C# 调用BarTender打印标签报错
  17. Hibernate新官网下载源码及支持jar
  18. win10台式机 更换蓝牙模块后配对过的蓝牙设备无法连接 且删除失败解决方法
  19. isam2 优化pose graph
  20. [生存志] 第112节 义军起山东

热门文章

  1. 物竞天择2 NS2 -MOD制作教程 -制作工具
  2. ubuntu程序莫名崩溃显示killed,程序闪退,排除OOM
  3. 从 “ 我爱你 ” 到 “ 我爱钱 ”
  4. 鲁大师2022牛角尖颁奖盛典落幕,年度最强产品揭晓!
  5. QWERTY键盘排列的历史
  6. C++裁剪图像并填充
  7. 资料外泄:给系统管理者的警告
  8. ArcGIS教程:分水岭的工作原理
  9. python数字金额转换为中文大写金额(角、分)
  10. Unix/BSD/Linux的口令机制初探(转)