用c语言编写贪吃蛇的心得体会,刚学C语言,想写一个贪吃蛇的代码_业勋优质程序的博客-程序员宅基地

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

#include

#include

#include

#include

typedef struct snake

{

int a;

int b;

struct snake *u;

struct snake *n;

}snake,*snake1;

typedef struct food

{

int a;

int b;

}food;

void main()

{

char c,c0 = 'd';

int i,j,k,n=1,t,at;

snake p,q;

snake *dd,*dd0,*dd1,*dd2;

food f;

srand(time(NULL));

p.u = NULL;

p.n = &q;

p.a = 5;p.b = 6;q.a = 5;q.b = 5;

q.u = &p;q.n = NULL;

dd=dd2= &q;

f.a=(rand()%15+1);

f.b=(rand()%15+1);

while(1)

{

srand(time(NULL));

system("cls");

for(i = 0;i < 17;i ++)

{

for(j = 0; j < 17;j++)

{

if(i == 0 )

printf("▁");

else if(i == 16)

printf("▔");

else if(j == 0)

printf("▕");

else if(j == 16)

printf("▏");

else if(i == p.a && j == p.b)

printf("■");//头

else if(i == f.a && j == f.b)

printf("★");//就是贪吃蛇吃的那个东东

else

{

t = 0;

dd = dd2;

for(k = 0; k < n ;k++)

{

if(i == dd->a && j == dd->b)

{

printf("□");//尾巴

t = 1;

break;

}

dd = dd->u;

}

if(t == 0)

printf(" ");

}

}printf("\n");

}

at = 0;

dd =dd2;

for(i=0;i

{

if(p.a == dd->a && p.b == dd->b)

{

printf("game over!!\n");//条件,也就是碰到自己身体才会输

exit(0);

}

dd = dd->u;

}

if(p.a == f.a && p.b == f.b)

{

dd = dd2;

at =1;

f.a = (rand()%15+1);

f.b = (rand()%15+1);

for(i=0;i

{

if(f.a == dd->a && f.b == dd->b)

{

f.a = dd2->a;

f.b = dd2->b;

break;

}

}

n++;

}

if(kbhit())

{

c = getch();

dd = dd2;

if(c == 'w' && c0 != 's')

{

if(at == 1)

{

dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}

dd = dd2;

for(i = 0; i

{

dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}

if(p.a == 1)

p.a = 15;

else

p.a = (p.a-1)%15;

}

else if(c == 's' && c0 != 'w')

{

if(at == 1)

{

dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}

dd = dd2;

for(i = 0; i

{

dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}

p.a = (p.a%15)+1;

}

else if(c == 'a' && c0 != 'd')

{

if(at == 1)

{

dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}

dd = dd2;

for(i = 0; i

{

dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}

if(p.b == 1)

p.b = 15;

else

p.b = (p.b-1)%15;

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35573869/article/details/117272465

智能推荐

Angular15 利用ng2-file-upload实现文件上传_weixin_30653023的博客-程序员宅基地

待更新转载于:https://www.cnblogs.com/NeverCtrl-C/p/8279246.html

原生js写的贪吃蛇网页版游戏特效_weixin_33909059的博客-程序员宅基地

&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;body&gt;&lt;title&gt;原生js写的贪吃蛇网页版游戏特效代码 demo by js.alixixi.com&lt;/title&gt;&lt;/body&gt;&lt;scri...

Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by se..._花儿为何那样红的博客-程序员宅基地

修改 my.ini 加上 max_allowed_packet =6710886467108864=64M默认大小4194304 也就是4M修改完成之后要重启mysql服务,如果通过命令行修改就不用重启mysql服务。命令修改:设置为500Mmysql&gt; set global max_allowed_packet = 500*1024*1024;查看mysql的max_al...

javascript正则表达式_The butcher的博客-程序员宅基地

// 正则:// 正确的规则:// 字符的正则的规则,所以说,正则使用来操作字符串的 // 正则对字符串提供的三大功能: // 验证: reg.test(str) // 查询: str.search(reg) / str.match(reg) // 替换: str.replace(reg,newStr); // 注意:哪个方法...

(一)sklearn数据预处理_HawardScut的博客-程序员宅基地

from sklearn import preprocessingimport numpy as npX_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1.]])1、使得均值0,方差1X_scaled = preproce...

ITRON的内存管理,中断处理,时钟管理_进击的横打的博客-程序员宅基地

内存管理任务在运行过程中对内存的需求是不断变化的不同的任务有不同的需要,OS 将内存当作一种资源来看并且在竞争的任务之间分配,这种资源就如同在竞争的任务间分配CPU 控制权一样。 概述在ITRON系统中所指的内存管理是通过对软件的内存区域进行动态的管理,也就是说在需要申请使用的时候就要确保,如果不需要的时候就进行归还的功能。 图: Memory Pool示意图在ITRON系

随便推点

Hadoop3.3新版本发布【整合了腾讯云】_about云的博客-程序员宅基地

问题导读1.Hadoop3.3支持JDK哪个版本?2.SCM是什么?3.YARN应用程序做了哪些改进?4.整合腾讯云实现了什么文件系统?1.支持ARM这是第一个支持ARM的版本。2.Pr...

SQL Server创建事务——锁_weixin_33836874的博客-程序员宅基地

参考地址:http://www.cnblogs.com/knowledgesea/p/3714417.html事务定义:事务是作为单个逻辑单元执行的一系列操作,它是一个不可分割的工作逻辑单元。它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。举个例子,我们经常用到的 ATM 存取款机,比如转账的时候,是先减去转出账户的金额,然后再在指定转入账户的金额加上转出的金额。如果...

AS中如何引用lib资源?_尹人入胜的博客-程序员宅基地

在eclipse中我们如果用so,则直接放在项目目录下的libs中即可,那么在Android Studio(AS)中加入要导入so,是不是也放在libs中就可以了呢?答案当然不是,AS的编译特点是基于gradle完成的,所以我们还要在项目目录中的app层级下的build.gradle中的android{}方法中加上以下配置:sourceSets { main {

树莓派tcp服务器性能,【树莓派3B+测评】TCP客户端&阻塞线程创建&取消_你的阿暖的博客-程序员宅基地

【树莓派3B+测评】TCP客户端&amp;阻塞线程创建&amp;取消[复制链接]本帖最后由 donatello1996 于 2018-12-19 09:30 编辑【树莓派3B+测评】TCP客户端&amp;阻塞线程创建&amp;取消在Linux系统中,TCP通信还有一个常用角色是客户端,像树莓派这种板子,经常充当从机角色连接电脑主机,在这种情况下,以客户端身份连接主机是比较易于理解且占用资源较少的做...

OpenCV—基本矩阵操作与示例_南国_之恋的博客-程序员宅基地

转载声明:本文转载自博客http://blog.csdn.net/iracer/article/details/51296631OpenCV的基本矩阵操作与示例OpenCV中的矩阵操作非常重要,本文总结了矩阵的创建、初始化以及基本矩阵操作,给出了示例代码,主要内容包括:创建与初始化矩阵加减法矩阵乘法矩阵转置矩阵求逆矩阵非零元素个数矩阵均值

Android.mk详解_It_fhao的博客-程序员宅基地

Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。 一、Android.mk文件的用途 一个android子项目中会存在一个或多个Android.mk文件 1、单一的Android.mk文件 直接参考NDK

推荐文章

热门文章

相关标签