双人贪吃蛇游戏
运行环境 visual stdio 2017
/*
贪吃蛇游戏 //双人版本 玩家2使用 W 上 S下 A左 D右边
玩家1使用 箭头上 箭头下 箭头左 箭头右
*/
/*
作者:李金虎
*/
/*
时间:2018-04-06
*/
/*
QQ:1910084514
*/
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
int a = 1;
int a2 = 1;
int snack_life=1;//1代表游戏继续 0代表游戏结束
int snack_life2 = 1;//1代表游戏继续 0代表游戏结束 玩家2
int count = 0;//得分
int count2 = 0;//得分 玩家2
int speed=0;//贪吃蛇的速度
int who_flag=0;//判断是谁吃了标志位 0为玩家1吃了 1为玩家2吃了
void gotoxy(int x, int y)//光标移动函数,光标想在哪里就在哪里
{
COORD coord = { x , y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
struct food //食物结构体
{
int x;
int y;
int life;
}Food;
struct snack //蛇结构体
{
int x;
int y;
struct snack *next;
} *snack_body, *snack_body2;
void color(short x) //自定义函根据参数改变颜色
{
if (x >= 0 && x <= 15)//参数在0-15的范围颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色
else//默认的颜色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void product_food() //产生食物坐标函数
{
remake:
struct snack *p;//定义一个临时指针变量 指向snack_body
struct snack *p2;//定义一个临时指针变量 指向snack_body
p = snack_body;
p2 = snack_body2;
srand(time(NULL));
Food.x = (rand() % 16 + 4)*2;
Food.y = rand() % 17 + 2;
Food.life = 1;
while (p != NULL) //防止食物生成在蛇所处的位置,如果生成在蛇身体的位置,则重新生成食物
{
if (Food.x == p->x&&p->y == Food.y)
goto remake;//跳转回去,重新产生一个食物
p = p->next;
}
//while (p2 != NULL) //防止食物生成在蛇所处的位置,如果生成在蛇身体的位置,则重新生成食物
//{
// if (Food.x == p2->x&&p2->y == Food.y)
// goto remake;//跳转回去,重新产生一个食物
// p2 = p2->next;
//}
gotoxy(Food.x, Food.y);
printf("G");
}
void introduce()
{
system("cls");
gotoxy(10, 2);
printf("欢迎来到贪吃蛇的世界 ,这次带来的是一个双人贪吃蛇游戏\n");
gotoxy(10, 4);
printf("我是李金虎,此代码的作者\n");
gotoxy(10, 6);
printf("完成时间: 2018-04-09 , 历时7小时\n");
gotoxy(10, 8);
printf("初次编写贪吃蛇,代码风格以及逻辑有很多的不足\n");
gotoxy(10, 10);
printf("如果有些代码不懂的小伙伴可以加我QQ1910084514私信我,乐意为您效劳\n");
gotoxy(10, 12);
printf("希望您游戏愉快\n");
while (speed<=0||speed>=21)
{
gotoxy(10, 14);
printf("请输入游戏的级别 最快的为20级,最慢为1级,请输入一个整数:");
scanf_s("%d", &speed);
}
system("cls");
gotoxy(10, 16);
printf("按任意键盘,确认开始游戏");
system("pause");
system("cls");
}
void map() //打印地图函数
{
for (int i = 0; i < 20; i++)
{
gotoxy(i*2, 0);
printf("〇");
gotoxy(i * 2, 19);
printf("〇");
gotoxy(0, i);
printf("〇");
gotoxy(40, i);
printf("〇");
}
gotoxy(50, 7);
printf("玩家1得分:%d", count);
gotoxy(50, 8);
printf("玩家2得分:%d", count);
gotoxy(50, 9);
printf("游戏难度:%d 级",speed);
gotoxy(50, 10);
printf("-----贪吃蛇小游戏-----");
gotoxy(50, 11);
printf("--作者--李金虎");
}
void init_snack()//蛇初始化函数
{