该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#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语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法相关推荐

  1. c++贪吃蛇_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码

    在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最简单的方法实现,晚上大约两个小时写了出来 ...

  2. c语言写贪吃蛇什么水平_细致的C语言写贪吃蛇教程+详细思路-适合新手附源码...

    #史上最详细的C语言贪吃蛇教程 #前言 在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂.恩...或者说不是一下子就能看出来思路+具体怎么实现.所以,我花了早自习的时间想了想如何用最 ...

  3. c语言实现贪吃蛇教程

    效果图如图 首先发现组成元素是"实心方块"我们可以百度 也可以在我这里直接复制 ▇ 进编译环境 (这个方块是两个字节这个很重要) 完成这个小程序基本上我们分以下几步 1.完成所有静 ...

  4. C语言实现贪吃蛇小游戏!(超简单详细)详细思路+源码分享

    贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本.既简单又耐玩.该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长. 我们的今天的目标就是:用C语言来实现一个贪吃蛇项目,也不用 ...

  5. c语言设计贪吃蛇实验报告,贪吃蛇游戏程序设计实验报告

    <贪吃蛇游戏程序设计实验报告>由会员分享,可在线阅读,更多相关<贪吃蛇游戏程序设计实验报告(11页珍藏版)>请在人人文库网上搜索. 1.Windows编程大作业贪吃蛇设计与实现 ...

  6. c语言贪吃蛇游戏报告,贪吃蛇游戏c程序报告.docx

    一.读程序题部分(贪吃蛇) 1.程序的功能 设计游戏界面,包括画墙.画蛇.画食物,并且设置蛇和食物的届性,编 写蛇的运动方式和游戏方式. 2.主函数分析 主函数中前两行与编写图形程序有关,第三行中调用 ...

  7. 贪吃蛇游戏实践(附源码),链表的应用!

    本文由"壹伴编辑器"提供技术支 前言 今天我们介绍的项目,是各位大多数人都有玩过,就算没玩过也不可能没听过的一款经典游戏,那就是 贪 吃 蛇 . 制作一个贪吃蛇游戏也有许多不同的方 ...

  8. C语言贪吃蛇最短路径,AI贪吃蛇前瞻——基于Dijkstra算法的最短路径问题

    在贪吃蛇流程结构优化之后,我又不满足于亲自操刀控制这条蠢蠢的蛇,干脆就让它升级成AI,我来看程序自己玩,哈哈. 一.Dijkstra算法原理 作为一种广为人知的单源最短路径算法,Dijkstra用于求 ...

  9. C语言综合练习6:制作贪吃蛇

    1 初始化界面 因为还没学QT,我们就使用终端界面替代. 这里我们假设界面中没有障碍物,我们只需要设定界面的高宽就行,这是蛇的移动范围,我们可以写两个宏来规定界面的高宽 新建一个snake.c的文件 ...

最新文章

  1. python【蓝桥杯vip练习题库】ALGO-79删除数组零元素
  2. 远离客户陷阱小故事 转
  3. SQL优化:紧急情况下提高SQL性能竟是这样实现的!(文中有惊喜)
  4. 设计一算法查找链表的中间结点。要求该算法的时间复杂度为O(n),空间复杂度为O(1)
  5. 343. 整数拆分(JavaScript)
  6. 订单页面添加收货地址html,添加收货地址展示
  7. [已解决]Warning: Solver not found (cplex)
  8. Vue小写金额转大写金额以及watch(监听)的使用
  9. 程序逸的Java项目之旅-图书管理系统之环境的搭建
  10. 席育凡-软件研发文章
  11. GO微服务实战之红包系统
  12. 技术贴_关于某信辅助分析记录和若干检测方法
  13. 华为nova5iotg功能使用_在华为nova3中使用otg功能的具体步骤
  14. 通信NR-5G测试频段大全
  15. java笔记10-多态
  16. tcpdump命令使用
  17. 清华大学计算机专业学什么好,2021清华大学王牌专业排名 清华最好的专业有哪些...
  18. iOS极光推送清除角标解决方案
  19. 在外远程访问公司内网的OA办公系统【内网穿透】
  20. 毫米波雷达(AWR1864)-CCS调试代码(AUTOPARKING DEMO)

热门文章

  1. centos6.5安装mongodb2.6
  2. JDBC 获取被插入数据的主键ID值
  3. php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
  4. getminimum_Java Calendar getMinimum()方法与示例
  5. Java LocalDate类| minusWeeks()方法与示例
  6. Java RandomAccessFile getFilePointer()方法与示例
  7. php整合支付宝,Thinkphp5.0整合支付宝在线下单
  8. ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
  9. java中的de是什么_【转】java中main函数解析
  10. c语言负数左移右移_C语言 位运算符的运算规则