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();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬解析优化_72最近一次现场生产系统优化的成果与开发建议

上周给南京某客户一个重要业务系统的数据库做优化&#xff0c;能实施的马上做了实施&#xff0c;优化前后性能对比非常明显&#xff0c;系统最为严重的IO负载过重问题基本得到解决&#xff1a;优化前一天的物理读是48亿次&#xff0c;优化后是15亿次&#xff0c;效果那是刚刚的…

c语言中的运算符按位或,|按位或运算符

|按位或运算符&#xff0c;同样&#xff0c;它也与我们前面学过的逻辑或运算符类似&#xff0c;只有一个竖线表示&#xff0c;作用位&#xff0c;两个对应的二进制位有一个为1结果即为1。如8|7的运算过程可以如下表示&#xff1a;8 0000 0000 0000 0000 0000 0000 0000 1000…

为什么仿宋字体打印出楷体_win7缺少仿宋_GB2312和楷体_GB2312字体,造成word字体显示不正常...

领导反映说自己电脑上word显示的字体和打印机打出来的字体不一样。且别人发过来的word文件格式会不一样&#xff0c;本来只有2页的&#xff0c;到她那里会变成3页。她说会不会是字体有问题。我说要看一下。我当时想也可能是word设置有问题。后来上网查了下&#xff0c;说win7系…

android动态开发,android开发实现动态壁纸

释放双眼&#xff0c;带上耳机&#xff0c;听听看~&#xff01;代码中有用到两个接口IWallpaperService mService;IWallpaperEngine mEngine;我们可以看到该目录下面有三个aidl接口&#xff0c;分别是复制代码 代码如下:interface IWallpaperConnection {void attachEngine(IWa…

build 之前执行task_浅谈VS编译自定义编译任务—MSBuild Task(csproject)-阿里云开发者社区...

在上一篇浅谈.NET编译时注入(C#-->IL)中我们简单的反编译查看了几种c#语法糖和PostSharp在编译成IL时为我做的MSIL注入。紧接着在这节&#xff0c;要来看的就是MSBuild Task。在我们的代码预编译过程中我们可以创建我们自己的任务Task。下面我们就开始做一个简单的Task。1&a…

xml层级工具_.NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1

上周为了快速了解一个.NET的库而需要查看其类型层次。假如要在文章中表示一个类型层次&#xff0c;还是用文本比较舒服&#xff0c;截图始终是不方便。Reflector虽然能够显示类型层次&#xff0c;但我无法方便的把显示出来的类型层次转换为文本形式。而且&#xff0c;Reflector…

XM7 FOR ANDROID,视频剪辑制作app-视频剪辑制作xm8.0安卓版-蜻蜓手游网

视频剪辑制作是一款很好用的手机视频编辑软件&#xff0c;在这里你可以进行视频剪辑、制作字幕、背景音乐制作等&#xff0c;让你可以轻松的制作视频&#xff0c;需要视频剪辑制作的就来蜻蜓手游网下载吧&#xff01;软件功能【背景配乐】给视频添加背景音乐&#xff0c;支持MP…

css宋体代码_css中宋体怎么设置?

CSS 能够对网页中元素位置的排版进行像素级精确控制&#xff0c;支持几乎所有的字体字号样式&#xff0c;拥有对网页对象和模型样式编辑的能力。下面我们来看一下css设置宋体的方法。css设置宋体代码如下&#xff1a;div里面设置字体宋体样式全局设置字体样式font-family 规定元…

android极光推送声音,android 极光推送 声音与振动 的关闭和开启

前言&#xff1a;最近刚好在写一些推送方面的东西&#xff0c;又是新手&#xff0c;不断在网上找资料&#xff0c;很少&#xff0c;不过还是找到了一些&#xff0c;反正百度我是再也不想百度了&#xff0c;谷歌一下子就能找到想要的。废话不多说。1.主要方法就是如下一个函数pr…

linux禁止客户端上传文件_Linux 几种上传文件到linux服务的方法

Linux下几种文件传输命令 sz rz sftp scp最近在部署系统时接触了一些文件传输命令&#xff0c;分别做一下简单记录&#xff1a;1.sftpSecure Ftp 是一个基于SSH安全协议的文件传输管理工具。由于它是基于SSH的&#xff0c;会在传输过程中对用户的密码、数据等敏感信息进行加密&…

韩泰机器人_[视频]Hankook Mirae展示四米高的Method-2载人两足机器人

Method-2 身高 13 英尺(约合 4 米)&#xff0c;重 1.5 吨。当它“走路”的时候&#xff0c;地面都会跟着一起震动。Hankook Mirae Technology 董事长 Yang Jin-Ho 表示&#xff1a;“Method-2 是全球首款载人双足机器人&#xff0c;它能够在人类难以企及的极端危险地带开展工作…

r语言的MASS包干什么的_R语言综述的包

Multivariate Statistics(多元统计)基本的R包已经实现了传统多元统计的很多功能&#xff0c;然而CRNA的许多其它包提供了更深入的多元统计方法&#xff0c;下面做个简要的综述。多元统计的特殊应用在CRNA的其它任务列表(taskview)里也会提及&#xff0c;如&#xff1a;排序(ord…

eps倾斜摄影矢量化采集毕业设计_eps倾斜摄影矢量化dlg采集

1、倾斜摄影测量倾斜摄影测量和我们传统影像的区别&#xff1a;从数据采集的方式来看&#xff0c;传统影像是通过飞机上搭载的航摄仪对地面连续摄取相片&#xff0c;而后经过一系列的内业处理得到的影像数据&#xff0c;获取的成果只有地物俯视角度信息&#xff0c;也就是视角垂…

在html中怎么写背景色渐变,css3背景色渐变

css3背景色渐变难是不难&#xff0c;就是麻烦。不同浏览器用法不同&#xff0c;还有个爱掺和的ie。。。一. Webkit浏览器(1) 第一种写法&#xff1a;background:-webkit-gradient(linear ,10% 10%&#xff0c;100% 100%&#xff0c;color-stop(0.14,rgb(255,0,0)),color-stop(0…

混凝土墙开洞_易县混凝土剪力墙切割常见问题

易县混凝土剪力墙切割常见问题北京专业切割 承接水泥地面切割路面切割 混凝土地面切割 地面切割开线槽 楼板切割 墙体切割 柱子切割 沥青地面切割 洋灰地面切割 切割开线槽 。是一个以建筑液压钳拆除结构加固和切割拆除、水钻钻孔的综合性公司。加固设计、混凝土外部粘钢加固、…

html中怎么写播放音乐格式,HTML+CSS入门 如何实现多浏览器播放wav格式的音频文件...

本篇教程介绍了HTMLCSS入门 如何实现多浏览器播放wav格式的音频文件&#xff0c;希望阅读本篇文章以后大家有所收获&#xff0c;帮助大家HTMLCSS入门。<使用audioplayer.js 基本上能支持大部分浏览器播放wav音频文件&#xff0c;经测试IE、火狐、google浏览器都可以播放编码…

差分放大电路差模共模公式_差分放大电路对差模信号和共模信号有什么影响?...

现在在应用中使用的放大电路一般都是由各级级联组成的&#xff0c;直接级联的放大电路各级的直流通路相互关联&#xff0c;因而当前级的静态工作点由于某种原因而稍有偏移时&#xff0c;这种缓慢的微小变化就会逐级影响&#xff0c;致使放大器的输出端产生较大的电压漂移&#…

html本地载入缓存文件,Flutter中如何加载并预览本地的html文件的方法

搜索热词直接进入主题&#xff0c;大概步骤如下在 assets 创建需要访问 html 文件&#xff0c;如下这里创建一个files文件夹&#xff0c;专门来放这些静态 html 文件.在 pubspec.yaml 中配置访问位置assets:- assets/images/- assets/files/在 pubspec.yaml 添加 webview_flutt…

三维数据平滑处理_关于CAD三维对象建模

下面是本公众号文章分类目录&#xff0c;点击标题文字可打开分类文章列表&#xff1a;安装卸载 异常、退出 文件及输入输出 基本操作技巧 设置及相关问题 界面和显示 快捷键 视图设置和调整 图层管理 颜色 线型 字体、文字样式和文字输入 标注、引线和标注样式 坐标系…

html下拉列表框的长度,HTML中如何定义下拉列表框的默认长度?

一共两个文件,html页面里面调用js文件就可以了,不是要把代码也复制到html文件里面^……联动菜单 是这个意思吗?实现方法很多 推荐一个比较好的:琥珀联动菜单以下信息为琥珀联动菜单&#xff1a;(在此感谢作者&#xff01;)下面是静态页面&#xff1a;HPMenu_Demo.html<html…