贪吃蛇小游戏

时间:2022-08-11 15:25:23
头文件

#define DEF_SNAKE_LONG 20
char g_strGameBack[20][48]={"\n",
                        "                                        \n",
"                                       \n",
"                                     \n",
"                                         \n",
    "                                        \n",
"                                        \n",
"                                          \n",
    "                                          \n",
"                                          \n",
    "                                          \n",
"                                          \n",
"                                          \n",
"                                          \n",
"                                        \n",
"                                         \n",
"                                          \n",
"                                         \n",
"                                          \n",
"                                             \n"};
//方向
enum{to_up,to_down,to_left,to_right};
//创建蛇数组
int g_arrSnake[DEF_SNAKE_LONG][3]={0};


#include <stdio.h>
#include <stdlib.h>//system函数的头文件
#include <Windows.h>//sleep的头文件
#include <conio.h>//_getch的头文件
#include <time.h>//time的头文件
#include "head.h"
#include <mmSystem.h>//以下三个是为了播放音乐而引入的两个头文件和一个库函数
#pragma comment(lib,"winmm.lib")
//#pragma comment(lib,"msimg32.lib")


void  FirstPage()
{
printf("\n\n\n");
printf("\t\t\t欢迎来到贪吃蛇的世界\n\n\n");
printf("\t\t\t按空格键开始游戏,按任意键清除游戏音效\n\n\n");
printf("u、d 、l 、r分别代表方向上下左右\n");

}
int  MyPlaySound()
{
PlaySound(L"林俊杰+-+可惜没如果.wav",NULL,SND_FILENAME|SND_ASYNC);//异步播放,绝对路径,完整路径,相对路径
}
void TestPace()
{
char chInput;
while(1)
{
chInput=_getch();
if(' '==chInput)
{
break;
}
else
{
PlaySound(NULL,0,0);
}
}
}
void Show()
{
int i=0;
for(i=0;i<20;i++)


printf(g_strGameBack[i]);

}

}
void SetSnakePos()
{
int x=-1;
int y=-1;
//产生随机数
srand((unsigned int)time(NULL));//种种子,得到系统当前时间
x=rand()%19+1;//x有23个,0-22,产生蛇的位置1-21,小蛇出来的时候有三个节点,所以蛇头的位置是1-19,及1-18加一
y=rand()%18+1;
//初始化蛇的三个节点
g_arrSnake[0][0]=y;//第一行,对应y坐标
g_arrSnake[0][1]=2*x;//第一个是(0和1)列
g_arrSnake[0][2]=to_left;
g_arrSnake[1][0]=y;//第一行,对应y坐标
g_arrSnake[1][1]=2*x+2;//第一个是(0和1)列
g_arrSnake[1][2]=to_left;
g_arrSnake[2][0]=y;//第一行,对应y坐标
g_arrSnake[2][1]=2*x+4;//第一个是(0和1)列
g_arrSnake[2][2]=to_left;
//画到背景上
DrawSnake();


}













int main(void)

//首页制作
FirstPage();
//播放音乐
   MyPlaySound();
   //停止播放音乐
   TestPace();
   //清除游戏界面
   system("cls");
    //随机产生蛇的位置
SetSnakePos();
Show();
   printf("开始游戏\n");
   //画边框
   while(1)
   {
   system("cls");
    Show();
Sleep(1000);
   }
 



system("pause");
return 0;

}
void SetSnakePos()
{
int x=-1;
int y=-1;
//产生随机数
srand((unsigned int)time(NULL));//种种子,得到系统当前时间
x=rand()%19+1;//x有23个,0-22,产生蛇的位置1-21,小蛇出来的时候有三个节点,所以蛇头的位置是1-19,及1-18加一
y=rand()%18+1;
//初始化蛇的三个节点
g_arrSnake[0][0]=y;//第一行,对应y坐标
g_arrSnake[0][1]=2*x;//第一个是(0和1)列
g_arrSnake[0][2]=to_left;
g_arrSnake[1][0]=y;//第一行,对应y坐标
g_arrSnake[1][1]=2*x+2;//第一个是(0和1)列
g_arrSnake[1][2]=to_left;
g_arrSnake[2][0]=y;//第一行,对应y坐标
g_arrSnake[2][1]=2*x+4;//第一个是(0和1)列
g_arrSnake[2][2]=to_left;
//画到背景上
DrawSnake();
}
void DrawSnake()
{
int i=0;
for(i=0;g_arrSnake!=0;i++)
{
strncpy(&g_strGameBack[g_arrSnake[i][0]][g_arrSnake[i][1]]," ",2);//strcpy适合字符串拷贝
}
}

为什么总会出现DrawSnake重定义,不同的基类型。。请各位大神们指教,谢谢啦!!



1 个解决方案

#1


该回复于2017-09-16 14:34:13被管理员删除

#1


该回复于2017-09-16 14:34:13被管理员删除