如何使用C语言实现贪吃蛇游戏
发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,小编给大家分享一下如何使用C语言实现贪吃蛇游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、实现效果键位:使用wasd
千家信息网最后更新 2024年10月06日如何使用C语言实现贪吃蛇游戏
小编给大家分享一下如何使用C语言实现贪吃蛇游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、实现效果
键位:使用wasd四个键位来控制方向,按q键退出(注意在终用英文输入法实现键控)
规则:蛇每吃一个豆会得10分,同时身体边长、移速加快
当蛇碰到墙壁或咬到自身时游戏结束,同时会输出游戏得分
二、部分代码解释
(1)用结构体定义蛇和豆
typedef struct Snakes{ int x; int y; struct Snakes *next;}snake; snake *head,*tail; struct Food{ int x; int y;}food;
(2)打印墙壁
void creatgraph() { int i; for (i = 0; i<58; i += 2)//打印上下边框 { gotoprint(i, 0); gotoprint(i, 26); } for (i = 1; i < 26; i++) { gotoprint(0, i); gotoprint(56, i); } head = (snake*)malloc(sizeof(snake)); head->x = 16; head->y = 15; //gotoprint(head->x, head->y); tail = (snake*)malloc(sizeof(snake)); snake *p = (snake*)malloc(sizeof(snake)); snake *q = (snake*)malloc(sizeof(snake)); p->x = 16; p->y = 16; q->x = 16; q->y = 17; head->next = p; p->next = q; q->next = tail; //gotoprint(p->x, p->y); //gotoprint(q->x, q->y); tail->next = NULL; tail->x = 4; tail->y = 2; } void gotoxy(int x, int y){ COORD pos; HANDLE hOutput; pos.X = x; pos.Y = y; hOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOutput, pos);} void gotoprint(int x, int y){ gotoxy(x, y); printf("■");} void gotodelete(int x, int y){ gotoxy(x, y); printf(" ");}
(3)生成豆
void creatfood(){ srand((int)time(NULL)); lable: food.y = rand() % (25 - 1 + 1) + 1; food.x = rand() % (54 - 2 + 1) + 2; if (food.x % 2 != 0) { food.x = food.x+1; } snake *judge = head; while (1) { if (judge->next == NULL) break; if (food.x == judge->x&&food.y == judge->y) { goto lable; } judge = judge->next; } gotoxy(food.x, food.y); printf("⊙");}
(4)点击控制函数
int ClickControl(){ char c; while (1) { if (Judge()==0) return 0; if (_kbhit()) { click = _getch(); } MovingBody(); Eating(); } return 1;}
(5)移动控制
void MovingBody(){ int count = 0; int a = head->x, b = head->y; snake *p = head; while (1) { if (p->next == NULL) break; gotodelete(p->x, p->y); count++; p = p->next; } switch (click) { case up: head->y -= 1; ChangeBody(a,b); break; case down: head->y += 1; ChangeBody(a,b); break; case left: head->x -= 2; ChangeBody(a,b); break; case right: head->x += 2; ChangeBody(a,b); break; case stop: _getch(); break; } p = head; while (1) { if (p->next == NULL) break; gotoprint(p->x, p->y); p = p->next; } p = head; gotoxy(0, 28); if (count <= 10) speed = 150; else if (count > 10 && count <= 20) speed = 100; else if (count > 20 && count <= 40) speed = 50; else speed = 10; Sleep(speed);}
(6)更改蛇身
void ChangeBody(int a,int b){ snake *p = head->next; int mid1, mid2,_mid1,_mid2; mid1 = p->x; mid2 = p->y; while (1) { if (p->next->next == NULL) break; _mid1 = p->next->x; _mid2 = p->next->y; p->next->x = mid1; p->next->y = mid2; mid1 = _mid1; mid2 = _mid2; p = p->next; } p = head->next; { p->x = a; p->y = b; }}
以上是"如何使用C语言实现贪吃蛇游戏"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
篇文章
控制
语言
内容
同时
墙壁
键位
上下
不怎么
代码
函数
大部分
得分
效果
方向
更多
知识
结构
行业
规则
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无线网络安全密匙怎么解除
战地4网页服务器地址
csr8670蓝牙软件开发
中久科技互联网
台湾电子期刊数据库
上海环保网络技术案例
网络安全法发生风险增大
成都云南网络技术服务
中彩网络技术
软件开发工作的知识水平
哪种电脑适合软件开发
长沙网络安全人才培养基地
关系数据库技术跟踪项目
深圳惠科软件开发地址
服务器修改网卡模式
构筑网络安全教学
广东省网络安全处
武汉城市宿客互联网科技有限公司
日本网络代理服务器
网络安全社团宣传大会策划书
湖北服务器电源排行榜
软件开发工程师工作要保密吗
佳明 服务器
湖南郴州市专业软件开发
河南企业党建软件开发系统
软件开发投资平台有哪些
麒麟服务器如何手动设置ip
数据库执行时间查看
mc远古版本手机版服务器
网络安全社团宣传大会策划书