c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#include
#define ESC 0x011b
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
struct rode
{int x;
int y;
struct rode *next;
};
struct rode *head,food;
void initgra()
{int dr=DETECT,mode=0;
registerbgidriver(EGAVGA_driver);
initgraph(&dr,&mode,"");
}
int message(char *s)
{ char c;
setfillstyle(1,4);
setcolor(1);
settextstyle(0,0,3);
bar(640/2-200,480/2-50,640/2+250,480/2+50);
outtextxy(640/2-200,480/2-20,s);
c=getch();
sleep(2);
if(c=='n'|| c=='N')return(0);else return(1);
}
initgame()
{
int i;
randomize();
cleardevice();
clear();
setbkcolor(15);
setcolor(4);
for(i=0;i<=640;i+=20) line(i,0,i,479);
for(i=0;i<=480;i+=20) line(0,i,639,i);
add(5,5);
add(5,6);
add(5,7);
rndfood();
getch();
}
add(int x,int y)
{
struct rode *newrode;
newrode=(struct rode*)malloc(sizeof(struct rode));
newrode->x=x;
newrode->y=y;
newrode->next=head;
head=newrode;
draw(x,y);
}
delete()
{struct rode *p1,*p2;
p1=p2=head;
while (p1->next !=NULL) {
p2=p1;
p1=p1->next;
}
redraw(p1->x,p1->y);
free(p1);
p2->next=NULL;
}
long getkey(long oldkey)
{long k;
if(bioskey(1)==0) return 0;
k=bioskey(0);
if(oldkey==UP && k==DOWN) return 0;
if(oldkey==DOWN &&k==UP) return 0;
if(oldkey==RIGHT&&k==LEFT) return 0;
if(oldkey==LEFT&&k==RIGHT) return 0;
return k;
}
clear()
{struct rode *p1,*p2;
p1=p2=head;
while(p1){
p2=p1->next;
free(p1);
p1=p2;
}
head=NULL;
}
draw(int x,int y)
{setcolor(1);
setfillstyle(1,1);
bar((x-1)*20+1,(y-1)*20+1,x*20-1,y*20-1);
}
redraw(int x,int y)
{int c;
c=getbkcolor();
setcolor©;
setfillstyle(1,c);
bar((x-1)*20+1,(y-1)*20+1,x*20-1,y*20-1);
}
rndfood()
{
food.x=random(31)+1;
food.y=random(23)+1;
draw(food.x,food.y);
}
gameover()
{clear();
closegraph();
exit(1);
}
main()
{struct time t;
int oldtime;
long key,oldkey;
int nx,ny,x,y;
long getkey(long oldtime);
initgra();
again:
initgame();
x=0;
y=1;
oldkey=DOWN;
key=DOWN;
gettime(&t);
oldtime=t.ti_hund;
while(key!=ESC)
{gettime(&t);
if((t.ti_hund+100-oldtime)%100<40)
{
if((key=getkey(oldkey))!=0)
{
switch(key)
{case UP:x=0;y=-1;break;
case DOWN:x=0;y=1;break;
case LEFT:x=-1;y=0;break;
case RIGHT:x=1;y=0;break;
default:continue;
}
oldkey=key;
}
}
else{
oldtime=t.ti_hund;
nx=head->x+x;
ny=head->y+y;
if(nx==food.x && ny==food.y)
{
add(food.x,food.y);
rndfood();
continue;
}
if(nx>32||nx <1 ||ny >24 ||ny<1)
if (message("Do you want play again?[Y/N]") ) goto again;
else
gameover();
delete();
add(nx,ny);
}
}
gameover();
}
c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法相关推荐
- c++贪吃蛇_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码
在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最简单的方法实现,晚上大约两个小时写了出来 ...
- c语言写贪吃蛇什么水平_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码...
#史上最详细的C语言贪吃蛇教程 #前言 在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最 ...
- c语言实现贪吃蛇教程
效果图如图 首先发现组成元素是"实心方块"我们可以百度 也可以在我这里直接复制 ▇ 进编译环境 (这个方块是两个字节这个很重要) 完成这个小程序基本上我们分以下几步 1.完成所有静 ...
- C语言实现贪吃蛇小游戏!(超简单详细)详细思路+源码分享
贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长. 我们的今天的目标就是:用C语言来实现一个贪吃蛇项目,也不用 ...
- c语言设计贪吃蛇实验报告,贪吃蛇游戏程序设计实验报告
<贪吃蛇游戏程序设计实验报告>由会员分享,可在线阅读,更多相关<贪吃蛇游戏程序设计实验报告(11页珍藏版)>请在人人文库网上搜索. 1.Windows编程大作业贪吃蛇设计与实现 ...
- c语言贪吃蛇游戏报告,贪吃蛇游戏c程序报告.docx
一.读程序题部分(贪吃蛇) 1.程序的功能 设计游戏界面,包括画墙.画蛇.画食物,并且设置蛇和食物的届性,编 写蛇的运动方式和游戏方式. 2.主函数分析 主函数中前两行与编写图形程序有关,第三行中调用 ...
- 贪吃蛇游戏实践(附源码),链表的应用!
本文由"壹伴编辑器"提供技术支 前言 今天我们介绍的项目,是各位大多数人都有玩过,就算没玩过也不可能没听过的一款经典游戏,那就是 贪 吃 蛇 . 制作一个贪吃蛇游戏也有许多不同的方 ...
- C语言贪吃蛇最短路径,AI贪吃蛇前瞻——基于Dijkstra算法的最短路径问题
在贪吃蛇流程结构优化之后,我又不满足于亲自操刀控制这条蠢蠢的蛇,干脆就让它升级成AI,我来看程序自己玩,哈哈. 一.Dijkstra算法原理 作为一种广为人知的单源最短路径算法,Dijkstra用于求 ...
- C语言综合练习6:制作贪吃蛇
1 初始化界面 因为还没学QT,我们就使用终端界面替代. 这里我们假设界面中没有障碍物,我们只需要设定界面的高宽就行,这是蛇的移动范围,我们可以写两个宏来规定界面的高宽 新建一个snake.c的文件 ...
最新文章
- python【蓝桥杯vip练习题库】ALGO-79删除数组零元素
- 远离客户陷阱小故事 转
- SQL优化:紧急情况下提高SQL性能竟是这样实现的!(文中有惊喜)
- 设计一算法查找链表的中间结点。要求该算法的时间复杂度为O(n),空间复杂度为O(1)
- 343. 整数拆分(JavaScript)
- 订单页面添加收货地址html,添加收货地址展示
- [已解决]Warning: Solver not found (cplex)
- Vue小写金额转大写金额以及watch(监听)的使用
- 程序逸的Java项目之旅-图书管理系统之环境的搭建
- 席育凡-软件研发文章
- GO微服务实战之红包系统
- 技术贴_关于某信辅助分析记录和若干检测方法
- 华为nova5iotg功能使用_在华为nova3中使用otg功能的具体步骤
- 通信NR-5G测试频段大全
- java笔记10-多态
- tcpdump命令使用
- 清华大学计算机专业学什么好,2021清华大学王牌专业排名 清华最好的专业有哪些...
- iOS极光推送清除角标解决方案
- 在外远程访问公司内网的OA办公系统【内网穿透】
- 毫米波雷达(AWR1864)-CCS调试代码(AUTOPARKING DEMO)
热门文章
- centos6.5安装mongodb2.6
- JDBC 获取被插入数据的主键ID值
- php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
- getminimum_Java Calendar getMinimum()方法与示例
- Java LocalDate类| minusWeeks()方法与示例
- Java RandomAccessFile getFilePointer()方法与示例
- php整合支付宝,Thinkphp5.0整合支付宝在线下单
- ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
- java中的de是什么_【转】java中main函数解析
- c语言负数左移右移_C语言 位运算符的运算规则