c语言贪吃蛇ai

用C语言编写贪吃蛇游戏的程序

回答:Mr.emily

大师

6月3日 16:45 #define N 200

#includegraphics.h

#includestdlib.h

#includedos.h

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define Esc 0x011b

int i,key;

int score=0;

int gamespeed=50000;

struct Food

{int x;

int y;

int yes;

}food;

struct Snake

{int x[N];

int y[N];

int node;

int direction;

int life;

}snake;

void Init();

void Close();

void DrawK();

void GamePlay();

void GameOver();

void PrScore();

void main()

{ Init();

DrawK();

GamePlay();

Close();

}

void Init()

{int gd=DETECT,gm;

initgraph(gd,gm,”F:\\tuoboc2″);/*此处为turboc的路径,读者可以根据自己的电脑而改*/

cleardevice();

}

void DrawK()

{setbkcolor(LIGHTGREEN);

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

for(i=50;i=600;i+=10)

{rectangle(i,40,i+10,49);

rectangle(i,451,i+10,460);

}

for(i=40;i=450;i+=10)

{rectangle(50,i,59,i+10);

rectangle(601,i,610,i+10);

}

}

void GamePlay()

{randomize();

food.yes=1;

snake.life=0;

snake.direction=1;

snake.x[0]=100;snake.y[0]=100;

snake.x[1]=110;snake.y[1]=100 ;

snake.node=2;

PrScore();

while(1)

{while(!kbhit())

{ if(food.yes==1)

{food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;

}

if(food.yes==0)

{setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i0;i–)

{snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1];

}

switch(snake.direction)

{case 1:

snake.x[0]+=10;break;

case 2:

snake.x[0]-=10;break;

case 3:

snake.y[0]-=10;break;

case 4:

snake.y[0]+=10;break;

}

for(i=3;isnake.node;i++)

{

if(snake.x[i]==snake.x[0]snake.y[i]==snake.y[0])

{ GameOver();

snake.life=1;

break;

}

}

if(snake.x[0]55||snake.x[0]595||snake.y[0]55||snake.y[0]455)

{GameOver();

snake.life=1;

}

if(snake.life==1)

break;

if(snake.x[0]==food.xsnake.y[0]==food.y)

{setcolor(0);

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;

snake.y[snake.node]=-20;

snake.node++;

food.yes=1;

score+=10;

PrScore();

}

setcolor(4);

for(i=0;isnake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

delay(gamespeed);

setcolor(0);

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}

if(snake.life==1)

break;

key=bioskey(0);

if(key==Esc)

break;

else if(key==UPsnake.direction!=4)

snake.direction=3;

else if(key==RIGHTsnake.direction!=2)

snake.direction=1;

else if(key==LEFTsnake.direction!=1)

snake.direction=2;

else if(key==DOWNsnake.direction!=3)

snake.direction=4;

}

}

void GameOver()

{

cleardevice();

PrScore();

setcolor(RED);

settextstyle(3,0,4);

outtextxy(100,100,”Mengmeng,i love you!”);

getch();

}

void PrScore()

{char str[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(0,0,2);

sprintf(str,”score:%d”,score);

outtextxy(55,20,str);

}

void Close()

{ getch();

closegraph();

}

Mr.emily

c语言贪吃蛇ai

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月22日 16:10:53
下一篇 2024年3月22日 16:22:26

相关推荐

  • c语言3.6-727%2,C语言while的用法

    C语言中%-2d是撒意思 d 表示输出3位整型数, 不够3位右对齐。%2d 表示输出2位整型数, 不够2位右对齐。格式化规定字符, 以%开始, 后跟一个或几个规定字符,用来确定输出内容格式。在%和字母之间插进数字表示最大场宽。 d:意义是C语言中printf函数的输出格式说明符。含义如下:使输出的int型的数值以2位的固定位宽输出。如果不足2位,则在前面补空…

    2024年5月21日
    4200
  • c语言byte转bit,c++byte转char

    怎样用C语言读取txt文件中的二进制数据并转为一维数组 成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0。参数 参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。 以文本方式打开文件。2 循环用fscanf格式化输入数据到数组。3 判断fscanf的返…

    2024年5月21日
    4700
  • 密码不显示c语言,c语言密码登录程序密码不可见

    请问,用C语言如何实现密码输入? 1、用for 语句和getch();putchar (‘*’);来实现的,而getch 不分区另ENTER和BACKSPACE等特殊键,不好控制它的结束。因此只有避过问题强行规定密码必须是8位的,但在输入密码时仍然不允许用户输入ENTER和BACKSPACE等特殊键。 2、c语言中可采用getch()函数来实现输入密码字符时…

    2024年5月21日
    3900
  • c语言中局部变量,c语言中局部变量和全局变量

    c语言局部变量有哪三种类型? 1、C语言存储类型有四种,分别是auto, extern, register, static。局部变量,在没有任何修饰的情况下,存储类型为auto。即定义局部变量int a;和auto int a;是相同的。auto为缺省类型。静态局部变量。 2、局部静态变量 局部变量按照存储形式可分为三种auto, static, regis…

    2024年5月21日
    4800
  • c语言switch后的括号内,c语言中switch括号中不能出现什么

    C语言中switch()语句的括号内可以是什么类型的呢? switch()语句的括号内的表达式必须是整型,它要与case 里的值呼应。Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。 只可以是 整型 算术表达式,其它都不符合 语法要求。switch()小括号内 的 结果 用到 case N:的 N 来…

    2024年5月21日
    3500
  • c语言获取文件状态,c语言获取文件状态是什么

    C语言如何读取文件中指定的某一段 1、char *fgets(char *buf, int bufsize, FILE *stream);参数 *buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。 2、我也遇到过类似的问题,位图数据读取到内存,然后在保存的文件…

    2024年5月20日
    4700
  • 浮点转定点c语言,c语言中将浮点型变量定义为整型

    …避免浮点运算,可怎么把浮点运算转换成定点运算呢?谢谢! 1、针对定点型的特点设计了定点数与浮点数的转换程序,完成定点型的浮点运算。但由于定点数运算会引起量化累积误差,均衡器的收敛速度比浮点数运算均衡器的收敛速度要慢,收敛后的稳定性也较差。 2、因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=6。 3、强制类型转换…

    2024年5月20日
    4300
  • c语言程序模块划分,c语言程序模块清单怎么写

    一个完整的C程序由什么组成? 1、一个c语言程序是由一个或多个函数组成。C程序的组成特点:每个C程序由一个或多个函数组成。每个C程序有且仅有一个主函数,除主函数外,可以没有其他函数,也可以有一个或多个其他函数。函数是C程序的基本单位。 2、C语言源程序是由:数据类型、常量与变量、数组、指针、字符串、文件输入/输出构成。 3、一个c程序是由函数组成。C语言是目…

    2024年5月20日
    3000
  • c语言实数的加减乘除运算,c语言编程中怎么编程实数

    C语言如何进行加减乘除? 实现方法如下:读入的时候用%x读入,然后在程序里面直接用+,-,*,/运算就行了,输出的时候再用%x。 首先打开Code Blocks软件,新建一个C语言文件,如下图所示。接下来在C语言文件中编写加减乘除运算代码,如下图所示。然后点击构建菜单下面的编译当前文件选项,如下图所示。 分析C语言中的加减乘除和数学中的加减乘除一样,不同在于…

    2024年5月20日
    4700
  • c语言终极宝典,c语言宝典会员账号

    学习C语言需要哪些软件 1、c语言是一种面向过程、抽象化的通用程序设计语言,可以编写c语言的软件有Vim、C++编译器、Dev-C++、Code:Blocks、Visual Studio等。Vim是一个功能强大、高度可定制的文本编辑器,被推崇为类Vi编辑器中最好的一个。 2、目前,市面上学习c语言用的软件有TurboC、win-tc、GCC、DevC++、V…

    2024年5月20日
    3600

发表回复

登录后才能评论



关注微信