#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重定义,不同的基类型。。请各位大神们指教,谢谢啦!!