以下是我写的还未完成的贪吃蛇代码,现在的主要问题是//蛇动 这里,代码我都检查几遍了,可是为什么运行的时候蛇还是没有动呢,请哪位大神解释下,万分感谢,请不要给我别的源代码,谢谢!
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define SankeLong 20
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//方向
enum {to_east=2,to_west=-2,to_north=-1,to_south=1};
//蛇数组
int q_arrSanke[SankeLong][3] = {0};
//边框
char q_StrGameBack[20][48] = { "■■■■■■■■■■■■■■■■■■■■■■■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■ ■\n",
"■■■■■■■■■■■■■■■■■■■■■■■\n" };
void StartGame()
{
printf("\t\t\t 欢迎来到贪吃蛇世界\n\n");
printf("\t\t\t W A S D 控制方向\n");
printf("\t\t\t 按下空格键开始游戏\n");
}
void StartMusic()
{
PlaySound("E:\\茜拉-想你的夜.wav",NULL,SND_FILENAME | SND_ASYNC);
}
//输入空格切换界面
void ShuSpace()
{
char c;
c = getch();
if (c == ' ')
return;
else
ShuSpace();
}
//停止播放音乐
void StopMusic()
{
PlaySound(NULL, 0, 0);
}
//游戏边框
void GameBoard()
{
int i, j;
for (i = 0; i < 20; i++)
{
printf("%s", q_StrGameBack[i]);
}
}
//产生一个随机位置
void SetSankeRandPos()
{
int mX = -1;
int mY = -1;
//产生随机数
srand((unsigned int)time(NULL));
mX = rand() % 19 + 1;
mY = rand() % 18 + 1;
//首次蛇节点
q_arrSanke[0][0] = mY;
q_arrSanke[0][1] = mX * 2;
q_arrSanke[0][2]= to_west;
q_arrSanke[1][0] = mY;
q_arrSanke[1][1] = mX * 2+2;
q_arrSanke[1][2] = to_west;
q_arrSanke[2][0] = mY;
q_arrSanke[2][1] = mX * 2+4;
q_arrSanke[2][2] = to_west;
}
//画蛇
void DrawSnake()
{
int i = 0;
for (i = 0; q_arrSanke[i][0] != 0; i++)
{
memcpy(&q_StrGameBack[q_arrSanke[i][0]][q_arrSanke[i][1]], "■",2);
}
}
//蛇动
void MoveSnake()
{
int i = SankeLong-1;
while (i--)
{
if (q_arrSanke[i][0]==0)
{
continue;
}
else
{
q_arrSanke[i][0] = q_arrSanke[i - 1][0];
q_arrSanke[i][1] = q_arrSanke[i - 1][1];
q_arrSanke[i][2] = q_arrSanke[i - 1][2];
}
}
if (q_arrSanke[0][2] == to_west || q_arrSanke[0][2] == to_east)
q_arrSanke[0][1] += q_arrSanke[0][2];
else
q_arrSanke[0][0] += q_arrSanke[0][2];
DrawSnake();
}
//游戏界面
void GameView()
{
system("cls"); //清空界面
GameBoard(); //游戏边框
SetSankeRandPos(); //产生一个随机位置
DrawSnake();
while (1)
{
system("cls");
MoveSnake();
GameBoard(); //游戏边框
Sleep(500);
}
}
int main()
{
//StartGame(); //游戏封面
//StartMusic(); //播放游戏音乐
//ShuSpace(); //输入空格切换界面
//StopMusic(); //停止播放音乐
GameView(); //游戏界面
system("pause");
return 0;
}