贪吃蛇c加加代码_c语言贪吃蛇代码

贪吃蛇c加加代码_c语言贪吃蛇代码展开全部基本e69da5e6ba903231313335323631343130323136353331333366306462思路:蛇每吃一个食物蛇身子就增加一格,用UP,DOWN,LEFT,RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。#include#include#include#defineBEG_X2#defineB…

大家好,又见面了,我是你们的朋友全栈君。

展开全部

基本e69da5e6ba903231313335323631343130323136353331333366306462思路:

蛇每吃一个食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。

#include

#include

#include

#define BEG_X2

#define BEG_Y1

#define WID20

#define HEI20

HANDLE hout;

typedef enum {UP, DOWN, LEFT, RIGHT} DIR;

typedef struct Snake_body

{

COORD pos;//蛇身的位置

struct Snake_body *next;//下一个蛇身

struct Snake_body *prev;//前一个蛇身

}SNAKE, *PSNAKE;

PSNAKE head = NULL;//蛇头

PSNAKE tail = NULL;//蛇尾

//画游戏边框的函数

void DrawBorder()

{

int i, j;

COORD pos = {BEG_X, BEG_Y};

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

{

SetConsoleCursorPosition(hout, pos);

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

{

if(i == 0)//第一行

{

if(j == 0)

printf(“┏”);

else if(j == WID – 1)

printf(“┓”);

else

printf(“━”);

}

else if(i == HEI – 1)//最后一行

{

if(j == 0)

printf(“┗”);

else if(j == WID – 1)

printf(“┛”);

else

printf(“━”);

}

else if(j == 0 || j == WID – 1)//第一列或最后一列

printf(“┃”);

else

printf(”  “);

}

++pos.Y;

}

}

//添加蛇身的函数

void AddBody(COORD pos)

{

PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));

pnew->pos = pos;

if(!head)

{

head = tail = pnew;

}

else

{

pnew->next = head;//新创建蛇身的next指向原先的蛇头

head->prev = pnew;//原先的蛇头的prev指向新创建的蛇身

head = pnew;//把新创建的蛇身作为新的蛇头

}

SetConsoleCursorPosition(hout, head->pos);

printf(“◎”);

}

//蛇身移动的函数

void MoveBody(DIR dir)

{

PSNAKE ptmp;

COORD pos = head->pos;

switch(dir)

{

case UP:

if(head->pos.Y > BEG_Y + 1)

–pos.Y;

else

return;

break;

case DOWN:

if(head->pos.Y < BEG_Y + HEI – 2)

++pos.Y;

else

return;

break;

case LEFT:

if(head->pos.X > BEG_X + 2)

pos.X -= 2;

else

return;

break;

case RIGHT:

if(head->pos.X < BEG_X + (WID – 2) * 2)

pos.X += 2;

else

return;

break;

}

AddBody(pos);//添加了一个新的蛇头

ptmp = tail;//保存当前的蛇尾

tail = tail->prev;

if(tail)

tail->next = NULL;

SetConsoleCursorPosition(hout, ptmp->pos);

printf(”  “);

free(ptmp);

}

int main()

{

int ctrl;

DIR dir = RIGHT;//初始蛇的方向是向右的

COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};

system(“color 0E”);

system(“mode con cols=90 lines=30”);

hout = GetStdHandle(STD_OUTPUT_HANDLE);

printf(”    ————贪吃蛇的移动————“);

DrawBorder();

//自定义几个蛇的身体

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

//控制蛇的移动

while(ctrl = getch())

{

switch(ctrl)

{

case ‘w’:

if(dir == DOWN)

continue;

dir = UP;

break;

case ‘s’:

if(dir == UP)

continue;

dir = DOWN;

break;

case ‘a’:

if(dir == RIGHT)

continue;

dir = LEFT;

break;

case ‘d’:

if(dir == LEFT)

continue;

dir = RIGHT;

break;

case ‘q’:

return 0;

}

MoveBody(dir);

}

return 0;

}

贪吃蛇c加加代码_c语言贪吃蛇代码

扩展资料:

实现逻辑

1,可以设置光标,就能实现制定位置打印制定符号。

2,涉及一个结构体,包含两个元素坐标元素和一个结构体指针。

3,结构体串联形成链表,遍历获取成员坐标,打印符号得到蛇身。

4,不断的加头,去尾,重新遍历坐标,再打印形成蛇的移动。

5,食物产生的位置判定,不能越界,也不能与蛇身体重合。

6,蛇的转向判定,一条规则,不允许倒退。

7,转向的实现,跟行进方向决定新的关节坐标(当前头的上下左右)

8,死亡检测,是否头节点坐标是否与墙壁重合,是否与身体其他关节重合。

9,加速减速,设置刷新休眠时间实现。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141318.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【漏洞挖掘】QQ钓鱼网站实战渗透[通俗易懂]

    【漏洞挖掘】QQ钓鱼网站实战渗透[通俗易懂]渗透实战,通过报错注入拿到后台账号密码。

    2022年8月24日
    8
  • 2022保密教育线上培训考试题答案_最新保密法考试题及答案

    2022保密教育线上培训考试题答案_最新保密法考试题及答案卷4单选题1.下列关于涉密计算机使用的说法正确的是()。正确答案:D.涉密计算机及时安装和升级专业“木马”查杀工具2.涉密打印机与涉密计算机之间()。正确答案:D.不能采用无线连接方式3.下列说法正确的是()。正确答案:D.淘汰、报废涉密计算机时应将涉密计算机经过专业消磁处理4.定密责任人在职责范围内承担有关国家秘密()工作。正确答案:D.以上都正确5.涉密人员是指在()、涉及国家秘密的单位涉密岗位工作的人员。正确答案:D.以上都正确6.下列关于预防和查杀“木马

    2022年10月1日
    6
  • Java学习路线(完整详细版)超详细

    一门永不过时的编程语言——Java软件开发。Java编程语言占比:据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!Java工程师就业:1.通过各大招聘网站统计,全国海量公司都在招聘J…

    2022年4月11日
    83
  • 矩阵的内积、外积

    矩阵的内积、外积矩阵外积矩阵外积也就是矩阵的乘积 ABABAB 和 BABABA 结果不一定相乘 且前面可乘不代表后面可乘 要求 AAA 的列等于 BBB 的行的两个矩阵才可以做外积 外积乘法规则是 AAA 的行乘以 BBB 的列 结果仍为矩阵 例如 A a11a12a21a22 A begin bmatrix a 11 amp a 12 a 21 amp a 22

    2025年8月20日
    0
  • 分析ICMP报文「建议收藏」

    分析ICMP报文「建议收藏」目录捕获准备:ICMP的相关知识:报文分析:捕获准备:启动wireshark录制数据包,打开命令行窗口输入pingwww.sina.com.cn。Wireshark已记录下报文,在过滤器输入ip.addr==120.192.83.125过滤报文。ICMP的相关知识:ICMP是(InternetControlMessage…

    2022年4月29日
    101
  • C语言学生成绩管理系统

    C语言实现了学生成绩管理系统,可以对学生成绩进行录入、查询、修改、删除和排序。#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;stdlib.h&amp;amp;gt;#include&amp;amp;lt;string.h&amp;amp;gt;typedefstructStuScore{ intstuID; charstuName[10]; intyuwen;

    2022年4月9日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号