C语言如何做出简易贪食蛇
如何使用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语言如何做出简易贪食蛇相关推荐
- Python 简易版贪食蛇(源代码)
Python 简易版贪食蛇 简易版贪食蛇代码如下,直接运行即可. 1. 效果图 2.源代码 源代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*-im ...
- C语言 实现贪食蛇游戏
参照博客"贪食蛇的C语言实现"的图形界面,用了大概一天的时间我也写了一个简单版的贪食蛇,能玩. 游戏截图 1.调用Windows API 解决画图问题 2.初始化画出围墙,蛇身体 ...
- 学习C语言之用函数做出简易计算器
学习C语言之用函数做出简易计算器 #include<stdio.h> #include<stdlib.h>int add(int x,int y) {int z;z = x+y ...
- C语言贪食蛇(数组实现)
源码如下: #include<stdio.h> #include<windows.h> #include<time.h> #include<stdlib.h& ...
- [原]Console小技巧——Console版贪食蛇
这一篇是我的Console小技巧的最后一篇文章,以下是索引: 1.[原]Console小技巧--七彩输出 2.[原]Console小技巧--字符涂鸦 3.[原]Console小技巧--Console版 ...
- 有一只会射子弹的贪食蛇,你见过吗?
在游戏编程学习过程中,我们可以有意识地对游戏案例进行一些改进和创新,这样不仅能增进学习效果,还能提高编程能力. 这里简单聊聊改进的思路,一般可以从两方面考虑:一是改变原有的玩法规则,二是综合不同案例的 ...
- c++课程设计之贪食蛇
这个程序是windows环境下完成的,为了更好的做出动画效果,定义了gotoxy函数,主要用了三个 类Game_Map,Snake,和Snake_Game类,在第一次游戏时需要在菜单中初始化玩家数据, ...
- java贪吃蛇设计流程_JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)
JAVA版贪食蛇(贪吃蛇)游戏的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文12000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘要 "贪食蛇"游戏 ...
- c# winfrom 贪食蛇游戏
QQ:285679784 欢迎加入博主CSDN资源QQ群799473954(附加信息:CSDN博客)一起学习 ! using System; using System.Collections.Ge ...
最新文章
- 虚拟化文件服务器,VMware虚拟化效率之文件服务器性能测试(上)
- stm32f401 i2s 时序图
- MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表
- 手工计算YARN和MapReduce、tez内存配置设置
- 【玩转cocos2d-x之九】动作类CCAction
- [SpringBoot2]定制化原理_SpringBoot定制化组件的几种方式
- ApacheCN Angular 译文集 20211114 更新
- linux shell编程if语句内判断参数详解【ZT】
- html怎么保存曲奇,曲奇烘焙不可不知的小技巧,烘焙出绝对赞的口感!
- 中维监控显示无法连接服务器失败,中维远程监控系统服务器端
- 屏幕尺寸、分辨率、像素密度三者关系
- 手写curry函数,实现函数柯里化
- 集成学习(ensemble learning)基础知识
- 转载tangl_99的Servlet 实现文件上传下载--自己的一点心得
- 汇编语言的一些相关资料(上机或者实验)
- C# 调用BarTender打印标签报错
- Hibernate新官网下载源码及支持jar
- win10台式机 更换蓝牙模块后配对过的蓝牙设备无法连接 且删除失败解决方法
- isam2 优化pose graph
- [生存志] 第112节 义军起山东