如何使用C语言实现贪吃蛇游戏
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下如何使用C语言实现贪吃蛇游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、实现效果键位:使用wasd
千家信息网最后更新 2025年02月01日如何使用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安全错误
数据库的锁怎样保障安全
软件开发的年终奖
服务器返回302什么意思
软件开发要哪些基础
数据库的计算表
固定资产数据库模型
黑客网络安全新闻
数据库管理系统必需组成
数据库数据分析方法有哪些
网络数字监控管理服务器
电商平台用什么类型数据库
软件开发哪个牌子质量好
漳州市政务网络安全预警
魔兽怀旧服怒炉服务器人口
快速的软件开发平台
河南洛水网络技术有限公司
2020网络安全技术对抗赛
软件开发项目的分包
php的数据库中文乱码
柳州网络安全实战培训老品牌
手机虚拟服务器搭建
服务器默认管理员账号密码
dna打拐数据库找到了多少个
河北统一软件开发价格优惠
滕州软件开发教学课程哪里好
复印机网络安全要关闭什么端口
局域网ftp连接服务器
韶关网络安全工程师十大品牌
三维软件开发学
ecshop备份数据库
手机虚拟服务器搭建