作为一枚小白加萌新,最快乐的事莫过于自己写游戏了。
这次的贪吃蛇包含了
1.Press any key to start 闪烁效果
2.添加了计分板和速度显示。
3.死亡后会有选择继续还是结束的界面。
4.结束界面可以显示得分。
5.解决了反向位移造成死亡的问题
6.速度可以自行调节并且达到上限后再加速或减速不会崩溃(加入了检测代码)
7.等等更多
操作:
wasd移动。
q暂停,之后长按wasd继续移动。
‘,’(逗号)减速 ‘。’(句号)加速。
Bug:(哪位大佬解决了请私我,感激不尽)
1.第一次开始移动会额外多出一节。
2.撞墙会少一节。
3.暂停会有一节隐藏,继续游戏会露出来。
注意点:
1.使用C++和easyx。
2.此程序的核心是蛇的链表结构。需要链表相关的知识。
3.输入法必须调成英文。
上图
代码如下
//贪吃蛇1.0
#include<iostream>
#include<iomanip>
#include<graphics.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#include<cstdlib>
using namespace std;
const int sideLength = 20;//基础方块边长
const int interval = 8;//基础方块间距
char playerInput = 'm';
char run = 'm';//移动,初始化为wasdq外的任意值
char spe;//调节速度
int speed = 60;
int score = 0;
char c_score[6] = "0";//这个让得分在经过后面的程序处理后可以实时的显示
int level = 10;
char dellevel[6] = " ";
char c_level[3] = "10";
struct coordinate {
//定义一个存储坐标的结构变量类型。coordinate:坐标。
int x;
int y;
}food;
coordinate snake_head = {
38,38 };
struct snake {
//蛇的结构体.
int x;
int y;
snake *next;
}*head, *tail, *p;//head只是一个snake型的指针,如要让其也能next则要new,不过显然不需要。
#define up 'w'
#define down 's'
#define left 'a'
#define right 'd'
#define wholeLength sideLength + interval
#define fast '.'
#define slow ','
#define pause 'q'
void drawBlock();//生成普通方块
void drawSnake();//生成蛇方块
void deleteBlock();//删除方块(以背景色生成)
void drawFood();//生成食物方块
void insertAthead();//在链表头部插入
void deletetail();//删除链表尾巴
void startpic();//开始界面
void drawMap();//生成初始地图
void drawSnake_0();//生成蛇
void drawDate();//在游戏面板右边显示数据
void initialize();//初始化
void runBody();//蛇身的移动
bool judgeAlive();//判断蛇是否死亡
void clickControl();//监听并获取键盘输入
void createFood();//生成食物
void eatFood();//吃食物
bool retry();//重开游戏
void reSet();//重新设置
void gameOver();//游戏结束生成面
void delSnake();//删除蛇的数据(用new就要delete)
void drawBlock(int x, int y)
{
setfillcolor(YELLOW);
solidrectangle(x, y, x + sideLength, y + sideLength);
}
void drawSnake(int x, int y)
{
setfillcolor(WHITE);
solidrectangle(x, y, x + sideLength, y + sideLength);
}
void deleteBlock(int x, int y)
{
setfillcolor(BLACK);
solidrectangle(x, y, x + sideLength, y + sideLength);
}
void drawFood(int x, int y)
{
setfillcolor(GREEN);
solidrectangle(x, y, x + sideLength, y + sideLength);
}
void startpic()
{
initgraph(1400, 600);
char str_0[] = "Snake 1.0";
char tips[] = "Tips:";
char str_1[