提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
贪吃蛇
提示:以下是本篇文章正文内容,下面案例可供参考
一、gotoxy是什么?
gotoxy(x,y)是光标索引,可以把光标拖到指定位置;把整个屏幕看成一个坐标系横是轴纵是y轴
例如`
gotoxy(10,20);
cout<<'#';
可以在10,20的位置输出一个#
有一些编译器可以直接用,有一些需要自己写
这里直接复制就好了
void gotoxy(short x, short y) {//移动光标
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
了解gotoxy之后主要思路
/*
第一步绘制地图
第二步构建随机函数
第三步初始化蛇身
第四步使蛇移动(通过一个死循环,不断输出蛇的位置)
最后判断结束条件*/
二、代码
1.构建函数
1.引入库及宏定义
#include <windows.h>
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
#define C "@"//蛇头
#define X "■"//边框
#define CHANG 80//长
#define KUAN 26//宽
#define MOVE 10//向右移动
#define A "*"//食物
#define B "#"//蛇身
#define SHEN 3//蛇身长度
#define MAXLEN 30//蛇身最长长度
int Q = 0;
2.绘制地图
void creatmap() {//创建地图
int i;
for (i = 0 + MOVE; i < CHANG + MOVE; i += 2) { //打印上下
gotoxy(i, 0);
cout << X;
gotoxy(i, KUAN - 1);//此时宽是25**********************特别注意地图宽已经减一了
cout << X;
}
for (i = 0; i < KUAN ; i++) {
gotoxy(0 + MOVE, i);//左边
cout << X;
gotoxy(CHANG + MOVE, i); //右边
cout << X;
}
//gotoxy(96, 0);
}
3.创建食物
struct Food {//食物结构体
int x;
int y;
} food;
void creatfood() {//随机食物
srand(time(0));
food.x = rand() % (CHANG - 2 ) + MOVE + 2; //食物横坐标
food.y = rand() % (KUAN - 2 ) + 1; //食物纵坐标
int a = 0;
int i;
for ( i = 0; i < snake.length ; i++) { //如果蛇身位置和食物位置不重叠,完成创建
if (snake.x[i] == food.x && snake.y[i] == food.y ) {//如果食物和蛇身相等
a = 1;//令a=1
}
}
if (a == 0) {//不相等直接创建食物
gotoxy(food.x, food.y );
cout << A;
} else//相等调用创建食物的函数
creatfood();
gotoxy(95, 0);
}
4.创建蛇
struct Snake { //蛇
int x[MAXLEN];
int y[MAXLEN];
int length;//蛇长度
} snake;
void creatsnake() { //创建蛇
int i;
snake.x[0] = (CHANG ) / 2 + MOVE;//在屏幕中央
snake.y[0] = KUAN / 2;
gotoxy(snake.x[0], snake.y[0] );//创建蛇头
cout << C;
for (i = 1; i < SHEN ; i++) {//创建蛇身
snake.x [i] = snake.x[i - 1] + 1; //蛇身x+1
snake.y [i] = snake.y[i - 1]; //蛇身y不变
gotoxy(snake.x[i], snake.y [i]);
cout << B;
}
snake.length = SHEN; //蛇身的长度
gotoxy(99, 30);
}
4.`使蛇可以移动
void movesnake(char &dong) { //蛇移动
gotoxy(snake.x [snake.length - 1], snake.y [snake.length - 1]); //因为从x【0】开始的//删除蛇的最后一个位置
cout << " "; //删除蛇尾
Q = 0; //Q是全局变量
for (int i = snake.length - 1; i > 0; i--) { //第一个不需要被覆盖,例如第10个身子需要移动到第九个身子,所以10移动到9
snake.x [i] = snake.x [i - 1]; //让第十个位置的东西等于第九个位置的东西,此时相当于第十个位置到了第九个位置
snake.y [i] = snake.y [i - 1];
gotoxy(snake.x [i], snake.y [i]);
cout << B;
}
char ch;
ch = dong;//如果敲错键盘,记录上一次移动方向........default继续按照上一个方向移动,防止停下来
if (_kbhit()) {//检测是否敲击键盘
fflush(stdin);
dong = getch();
}
if (dong != 'a' && dong != 'A' && dong != 's' && dong != 'S' && dong != 'd' && dong != 'D' && dong != 'W'
&& dong != 'w')//如果没正确输入,则返回上一方向
dong = ch;
switch (dong) {
case 'a'://左x--
case 'A' :
//case '4':
snake.x[0]--;//左
break;
case 'D':
case 'd':
//case '6' :
snake.x [0]++;//右
break;
case 'W':
case 'w':
//case '8' :
snake.y [0]--;//上
break;
case 's':
case 'S':
//case '5' :
snake.y [0]++;//下
break;
default:
Q = 1; //Q等于1,证明键盘敲错了
//dong = ch;
break;
}
gotoxy(snake.x [0], snake.y [0]);//蛇头新位置
cout << C;
gotoxy(95, 0);
if (food.x == snake.x [0] && food.y == snake.y [0]) { //判断蛇头和食物是否重叠
creatfood();//创建新食物
snake.length ++;//蛇身+1
}
}
5.判断结束条件
int jieshu() {//判断结束
int i;
if (Q == 1) //如果键盘敲错了,不结束游戏
return 0;
for (i = 1; i < snake.length ; i++) { //如果蛇身等于蛇头,游戏结束
if (snake.x [0] == snake.x [i] && snake.y [0] == snake.y [i]) {
gotoxy((CHANG ) / 2 + MOVE, KUAN / 2);
cout << "游戏结束";
gotoxy(40, 25);
//cout << endl << endl;
return 1;
}
}
if (snake.x [0] <= MOVE + 1 || snake.x [0] >= MOVE + CHANG - 1) { //蛇头碰到左右墙壁结束
gotoxy((CHANG ) / 2 + MOVE, KUAN / 2);
cout << "游戏结束";
gotoxy(40, 25);
return 1;
}
if (snake.y [0] <= 1 || snake.y [0] >= KUAN - 1) { //蛇头碰到上下墙壁结束
gotoxy((CHANG ) / 2 + MOVE, KUAN / 2);
cout << "游戏结束";
gotoxy(40, 25);
return 1;
}
if (snake.length > MAXLEN) { //蛇长度大于最大长度
gotoxy((CHANG ) / 2 + MOVE, KUAN / 2);
cout << "游戏结束";
gotoxy(40, 25);
return 1;
}
return 0;
}
2.主函数
代码如下(示例):
int main() {
char dong = 'a';
srand(time(0));
creatmap();
creatfood();
creatsnake();
while (1) {
Sleep(200);//速度
movesnake(dong);
if (jieshu())
break;
}
return 0;
}
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。