模块
墙壁;蛇;食物
墙壁模块
#pragma once
#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
class Wall
{
public:
enum
{
ROW=40,
COL=40
};
//初始化墙壁
void wallInit();
//显示墙壁
void showWall();
//设置墙壁内同
void setWall(int x,int y,char c);
//查看墙壁内容
char getWall(int x,int y);
char gameArry[ROW][COL];
};
蛇模块
#pragma once
#include"wall.h"
#include"food.h"
class Snake
{
public:
enum
{
UP='W',
DOWN='S',
LEFT='A',
RIGHT='D'
};
struct Node{
int x;
int y;
Node* next;
};
Snake(Wall &wall,Food &food);
//初始化蛇
void snakeInit();
//销毁蛇
void destroy();
//增加节点
void addNode(int x,int y);
//删除尾节点节点
void deleteNode();
//移动
bool move(char key);
Node* pHead;
Wall &wall;
Food &food;
bool isRound;
};
食物模块
#pragma once
#include"wall.h"
class Food
{
public:
Food(Wall & wall);
//设置食物
void setFood();
int FoodX;
int FoodY;
Wall &wall;
};
主函数
#include"wall.h"
#include"snake.h"
#include"food.h"
#include<time.h>
#include<conio.h>
#include<windows.h>
HANDLE hOut2 = GetStdHandle(STD_OUTPUT_HANDLE);//定义显示器句柄变量,并且这个只能在每个头文件中单独定义句柄和函数,否则无效
void gotoxy2(HANDLE hOut2, int x, int y)//其中x,y是与正常理解相反的,注意区分
{
COORD pos;
pos.X = x; //横坐标
pos.Y = y; //纵坐标
SetConsoleCursorPosition(hOut2, pos);
}//光标定位函数
int main()
{
char preKey=NULL;
bool isDead =false;
srand((unsigned int)time(NULL));
Wall wall;
wall.wallInit();
wall.showWall();
Food food(wall);
food.setFood();
Snake snake(wall,food);
snake.snakeInit();
gotoxy2(hOut2,0,Wall::ROW);
while(!isDead)
{
char key = _getch();
if( preKey ==NULL && key==snake.LEFT)
continue;
do
{
if(key==snake.UP ||key ==snake.DOWN || key == snake.LEFT || key == snake.RIGHT)
{
//输入上下左右正确了,解决180度按键问题
if(key == snake.LEFT && preKey == snake.RIGHT ||
key == snake.RIGHT && preKey == snake.LEFT ||
key ==snake.UP && preKey == snake.DOWN ||
key == snake.DOWN && preKey == snake.UP)
{
key = preKey;
}
else
preKey = key;//保存上一次的输入
if(snake.move(key)==true)
{
//system("cls");
//wall.showWall();
gotoxy2(hOut2,0,Wall::ROW);
Sleep(100);
}
else
{
isDead = true;
break;
}
}
else
{
key=preKey;
}
}while(!kbhit()); //没有键盘输入一直返回1
}
while(1){};
return 0;
}
.cpp具体实现见源码
链接:https://pan.baidu.com/s/1nnpP1tyz54QNBJH3ojExCw
提取码:tdzw
复制这段内容后打开百度网盘手机App,操作更方便哦***