case i ans c语言,C语言新手*******求教*****

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

吃蛇的代码,我有些问题想请教下。(下面有完整的代码,帮我看下)

1;当我把蛇的节数(node)一开始调为4时,为什么还可以画出4个节数的蛇来。问这个主要是应为我开始初始只有两个坐标啊 snake.crd[0].x = 0 + SNAKELEN;snake.crd[0].y = 0;snake.crd[1].x = 0;snake.crd[1].y = 0;snake.node = 2;后面没设坐标啊,它怎么可以画出来。

2;还有就是这个程序中几处

void showsnake()

{

int

i;

for (i=snake.node-1; i>=0; i--)

{

rectangle(snake.crd[i].x, snake.crd[i].y,

snake.crd[i].x+SNAKELEN, snake.crd[i].y+SNAKELEN);

}

setcolor(BLACK);

rectangle(snake.crd[snake.node].x, snake.crd[snake.node].y,

snake.crd[snake.node].x+SNAKELEN, snake.crd[snake.node].y+SNAKELEN);

setcolor(WHITE);

rectangle(snake.crd[snake.node-1].x, snake.crd[snake.node-1].y,

snake.crd[snake.node-1].x+SNAKELEN, snake.crd[snake.node-1].y+SNAKELEN);

}

那个(白色)和(黑色)运行的原理,整个思路要完整些。那些作用我是知道额,帮我下,谢谢!!!

以下是完整的代码。。。。

#include

#include

#include

#include

#define SIZEMAX 100 //定义蛇的最大长

#define SNAKELEN 3 //蛇的大小和蛇每次移动的距离

#define SPEED 20 //初始速度

/****************************************/

typedef enum //定义表示方向的枚举变量

{

left, right, up, down

}DIR;

typedef struct //定义一个结构体表示坐标

{

int

x;

int

y;

}COOR;

struct FOOD //定义结构体,来存储食物的相关信息

{

COOR

crd; //食物出现的坐标

int

flag; //食物的状态,1表示食物还没被吃,0表示食物被吃了

}food;

struct SNAKE //定义结构体,来存储蛇的相关信息

{

COOR

crd[SIZEMAX]; //保存蛇的每个结数的坐标,最多有100节

int

node; //保存蛇当前节数

DIR

dir; //当前蛇行进的方向

}snake;

int speed = SPEED; //方便以后在程序中改变速度

/***************************************/

void init(); //初始化游戏

void setfoodcrd(); //设置食物要出现的坐标

void showfood(); //在相应的坐标画出食物

void snakemove(); //移动蛇,实际就是改变蛇各节的坐标

void judgeslod(); //判断蛇是否撞墙或者撞到自己

void judgesef(); //判断蛇是否吃到食物了

void showsnake(); //在屏幕上画出蛇

void changeskdir(); //接受用户输入,改变蛇的前进方向

void gameover(); //游戏结束

/**************************************/

void main()

{

init();

while(1)

{

while(!kbhit())//kbhit(): 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0

{

if

(!food.flag)

{

setfoodcrd();

}

showfood();

judgeslod();

judgesef();

snakemove();

Sleep(speed);//Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);

}

changeskdir();

}

}

/***********************************/

void init()

{

initgraph(640, 480);

srand(time(NULL));

food.flag = 0;

snake.crd[0].x = 0 + SNAKELEN;

snake.crd[0].y = 0;

snake.crd[1].x = 0;

snake.crd[1].y = 0;

snake.node = 2;

snake.dir = right;

}

void setfoodcrd()

{

food.crd.x = rand() % (600/SNAKELEN) *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值