c语言之贪吃蛇源码,C语言之贪吃蛇经典源码
#define BEG_X2
#define BEG_Y1
#define WID20
#define HEI20
HANDLE hout;
typedef enum {UP, DOWN, LEFT, RIGHT} DIR;
typedef struct Snake_body
{
COORD pos;//蛇身的位置
struct Snake_body *next;//下一个蛇身
struct Snake_body *prev;//前一个蛇身
}SNAKE, *PSNAKE;
PSNAKE head = NULL;//蛇头
PSNAKE tail = NULL;//蛇尾
//画游戏边框的函数
void DrawBorder()
{
int i, j;
COORD pos = {BEG_X, BEG_Y};
for(i = 0; i < hei;="">
{
SetConsoleCursorPosition(hout, pos);
for(j = 0; j < wid;="">
{
if(i == 0)//第一行
{
if(j == 0)
printf('┏');
else if(j == WID - 1)
printf('┓');
else
printf('━');
}
else if(i == HEI - 1)//最后一行
{
if(j == 0)
printf('┗');
else if(j == WID - 1)
printf('┛');
else
printf('━');
}
else if(j == 0 || j == WID - 1)//第一列或最后一列
printf('┃');
else
printf(' ');
}
++pos.Y;
}
}
//添加蛇身的函数
void AddBody(COORD pos)
{
PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));
pnew->pos = pos;
if(!head)
{
head = tail = pnew;
}
else
{
pnew->next = head;//新创建蛇身的next指向原先的蛇头
head->prev = pnew;//原先的蛇头的prev指向新创建的蛇身
head = pnew;//把新创建的蛇身作为新的蛇头
}
SetConsoleCursorPosition(hout, head->pos);
printf('◎');
}
//蛇身移动的函数
void MoveBody(DIR dir)
{
PSNAKE ptmp;
COORD pos = head->pos;
switch(dir)
{
case UP:
if(head->pos.Y > BEG_Y + 1)
--pos.Y;
else
return;
break;
case DOWN:
if(head->pos.Y < beg_y="" +="" hei="" -="">
++pos.Y;
else
return;
break;
case LEFT:
if(head->pos.X > BEG_X + 2)
pos.X -= 2;
else
return;
break;
case RIGHT:
if(head->pos.X < beg_x="" +="" (wid="" -="" 2)="" *="">
pos.X += 2;
else
return;
break;
}
AddBody(pos);//添加了一个新的蛇头
ptmp = tail;//保存当前的蛇尾
tail = tail->prev;
if(tail)
tail->next = NULL;
SetConsoleCursorPosition(hout, ptmp->pos);
printf(' ');
free(ptmp);
}
int main()
{
int ctrl;
DIR dir = RIGHT;//初始蛇的方向是向右的
COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};
system('color 0E');
system('mode con cols=90 lines=30');
hout = GetStdHandle(STD_OUTPUT_HANDLE);
printf(' ------------贪吃蛇的移动------------');
DrawBorder();
//自定义几个蛇的身体
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
//控制蛇的移动
while(ctrl = getch())
{
switch(ctrl)
{
case 'w':
if(dir == DOWN)
continue;
dir = UP;
break;
case 's':
if(dir == UP)
continue;
dir = DOWN;
break;
case 'a':
if(dir == RIGHT)
continue;
dir = LEFT;
break;
case 'd':
if(dir == LEFT)
continue;
dir = RIGHT;
break;
case 'q':
return 0;
}
MoveBody(dir);
}
return 0;
}
c语言之贪吃蛇源码,C语言之贪吃蛇经典源码相关推荐
- 贪吃蛇的c语言程序码,C语言贪吃蛇代码下载_C语言贪吃蛇代码官方下载-太平洋下载中心...
C语言编写贪吃蛇源代码,简单易懂,文件为VC源代码.如果你正在学习c语言,就来下载吧.很经典的. C语言贪吃蛇代码原理: 产生一个固定大小没有边界的游戏区域,蛇从区域的中心开始,由玩家通过键盘控制蛇的 ...
- c语言贪吃蛇添加排行榜,c语言贪吃蛇排行榜_...12年4月编程语言排行榜 C语言荣归宝座...
12年4月编程语言排行榜 C语言荣归宝座 JPG,902x531,131KB,424_250 C语言在目前的编程语言排行榜上占据头名的位置-全屏显示课程章节 JPG,500x267,232KB,467 ...
- 基于EasyX的贪吃蛇游戏(C语言)
贪吃蛇游戏EasyX图形库C语言 #前言 关于贪吃蛇游戏这种学生时代,用来应付一个期末设计的东西.网上各式各样用不同方式实现的核心代码已经烂大街了. 用esayX这种图形库,可以简单进行蛇体,游戏界面 ...
- 如何用c语言实现贪吃蛇登录界面,c语言贪吃蛇UI界面版.docx
c语言UI界面版贪吃蛇 使用ege图形库,游戏实现单双人功能.道具有炸弹,随机魔盒,炸弹.有随机障碍物生成. 不附加图片 . /************************************ ...
- e语言通用进销存源码_Go 语言设计哲学之五:代码风格的唯一标准
一. gofmt Go 语言设计的目标之一就是解决大型软件系统的大规模开发的问题,解决大型团队的开发问题,Go 核心团队给它起了一个名字叫:规模化(scale). gofmt 是伴随着 Go 语言诞生 ...
- [iOS] 完整源码, Swift语言 - 账号保存工具
代码地址如下: http://www.demodashi.com/demo/15017.html 1. 需求分析 作为一个开发者,平时肯定在各个平台,网站注册了各种账号:由于太多,很多时候都是注册之后 ...
- 易语言窗口c_句柄取进程名,易语言窗口句柄取进程文件名源码
窗口句柄取进程文件名系统结构:句柄取进程文件名,CreateToolhelp32Snapshot,GetWindowThreadProcessId,CloseHandle,Module32First, ...
- 阿里api网关接口客户端demo,java实现源码,其他语言可参考
访问阿里api网关接口客户端demo,java实现源码,其他语言可参考 上一篇文章 <阿里api网关接口创建.发布.授权.调试> 中,介绍了3个典型接口的创建并在阿里控制台调试完成,地址: ...
- 会员管理系统源码 php语言开发
会员管理系统源码 php语言开发 可用于美容店,理发店,服装店,美甲店,奢侈品店等等 功能介绍: 1.常用功能 会员登记,会员充值,会员充次,商品消费(会员),商品消费(散客),快速消费(会员),快速 ...
最新文章
- MATLAB函数记录
- HDU 1042 N!
- 《毅力–如何培养自律的习惯》读书笔记
- linux中python如何调用matlab的数据_特征锦囊:如何在Python中处理不平衡数据
- 合同相似可逆等价矩阵的关系及性质_行列式的性质问题
- emacs mysql代码阅读_Emacs + etags + cscope 阅读代码
- Eclipse中配置mybatis-3-config.dtd
- 如何使用 JavaScript 快速构建一个二维码生成器
- Google登陆集成笔记-含坑
- ACCESS-入门思维导图
- 2022抖音日活用户超8亿,旅游商家如何从抖音获客?
- Struts中动态ActionForm与静态ActionForm有什么区别?_
- 基于MATLAB的语音信号设计,基于MATLAB的语音信号处理系统设计
- DockOne微信分享(八十一):唯品会数据库备份恢复容器化项目实践经验总结
- Arrays.sort排二维数组
- 读取本地相册 兼容了小米
- 主机屋虚拟主机php版本,5款免费虚拟主机管理系统(云虚拟主机管理)
- Word代做,线上兼职,月入过万
- 怎么样很快的速度锁定计算机,怎样让电脑速度变快
- Dashgo D1使用手册
热门文章
- java图片文件字符串jsp_将图片转成base64字符串并在JSP页面显示的Java代码
- vue点击增加class_Vuevbind动态绑定class
- NSURLCache
- 打开共享文件闪退怎么解决_文件共享解决方案-随时随地共享同步访问文件
- 11、Kubernetes集群安全机制
- 网络天才网页中文版_LVMH 旗下奢侈品电商 24S 的中文版正式上线,还有带来“双 11”优惠...
- visual basic从入门到精通第三版cd_C++从零到精通,这才是你需要的书单!
- r语言聚类分析_技术贴 | R语言pheatmap聚类分析和热图
- 网络波动服务器维护中,官方回应《王者荣耀》游戏无法登录:网络波动导致,已修复...
- oracle顺序读等待,Oracle Study之--Oracle等待事件(4)