C语言单链成绩表读取文件,C语言单链表贪吃蛇小游戏.pdf

C语语言言单单链链表表贪贪吃吃蛇蛇小小游游戏戏

C语言实现单链表控制台贪吃蛇小游戏,供大家参考。

编译环境:vs2019

需需求求::

统 游戏开始后的时间,控制贪吃蛇;吃到食物蛇身加长,得分加一;碰墙或蛇头碰到身体减一条生命;生命消耗完则结束游戏

思思路路::

使用wasd键控制蛇的移动方向,蛇头碰到食物得分加一,并在地图上随机产生一个食物,累加得分,碰墙或碰自己减一条生命

,并初始化整条蛇,生命值为0时结束游戏。

做做法法::

使用单链表控制贪吃蛇移动的核心思想就是:链表存储贪吃蛇所有坐标,每次循环贪吃蛇不断向一个方向插入一个新的结点作为

新的蛇头,按下按键控制新蛇头产生的位置,然后从新蛇头处遍历链表输出蛇身到上一个蛇尾,清除上一个蛇尾的痕迹,并释放

相关结点。

每次向链表插入新节点后,判断新节点的坐标是否和食物的坐标重合,如果重合本轮循环不释放清除蛇尾结点,反之释放清除上

一个蛇尾的结点。

另外,在写蛇生命相关代码的时候,还需要注意一下哪些值应该初始化,哪些值不应该初始化。

只要明白了贪吃蛇运动的核心思想,整个程序其实就不难写出来。

难难点点::

wsad控制贪吃蛇上下左右移动,并清除蛇尾。

说说明明::

使用单链表实现贪吃蛇的核心思想是我一开始没有想到的,部分相关代码我学习并借鉴了一些网络上搜索到的代码,如果有违反

了相关版权协议,请告知我修改相关代码。

注注意意::

由于编译器原因程序中_kbhit()和_getch()函数可能在其他编译器上编译会出现错误,解决办法是去掉函数前面的“_”。

运运行行效效果果::

代码实现:

#include

#include

#include

#include

#include

void HideCursor(); //光标隐藏

void gotoxy(int x, int y); //光标定位

ty edef struct snake

{

int x;

int y;

struct snake* next;

}snake;

#define WIDTH 100 //控制台窗口宽度

#define HEIGHT 30 //控制台窗口高度

#define SNAKEN 4 //贪吃蛇初始长度

#define LIFE 3 //初始生命次数

#define SPEED 200 //游戏速度、循环休眠时间

#define U 1 //使用宏代替需要数字代替的蛇的行动方向

#define D 2 //宏名含义是各方向英文单词首字母

#define L 3 //蛇的状态,U:上 ;D:下;L:左 R:右

#define R 4

void dtxxcsh() //输出地图

{

for (int i = 1; i < WIDTH-1; i++) //输出上下面墙

{

gotoxy(i, 26);

rintf("-");

gotoxy(i, 0);

rintf("-");

}

for (int i = 0; i < HEIGHT-3; i++) //输出左右两面墙

{

gotoxy(0, i);

rintf("|");

gotoxy(99, i);

rintf("|");

}

gotoxy(24, 28);

rintf("得分: 0 生命: %d 时间: 0 ",LIFE);

//xy 30,28可用得分数值 14个空格

}

int foodx, foody; //食物位置坐标

void sjcsswhs() //随机产生一个食物

{

srand(time(NULL));

foodx = rand() % (WIDTH - 4) + 2; //使用宏运算随机数最大值需要加括号

while (foodx % 2) //如果食物的x坐标不是偶数,再获取一个x坐标

{

foodx = rand() % (WIDTH - 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值