300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言贪吃蛇制作步骤 c语言贪吃蛇制作过程.doc

c语言贪吃蛇制作步骤 c语言贪吃蛇制作过程.doc

时间:2021-11-06 18:41:49

相关推荐

c语言贪吃蛇制作步骤 c语言贪吃蛇制作过程.doc

#include#pragma comment(lib,"winmm.lib")

void Page();//显示界面

void Mps();//播放音乐

void Check();//检查空格

void Stopm();//停止音乐

void shows2();//画背景

void SetSnake();//设置蛇的位置

void DrawSnake();//画蛇

void SnakeMove();//蛇的移动

void DeleteSnake();//销毁蛇

void ChangeDir();//蛇随方向动起来

bool SnakeDie();//判断蛇是否死亡

void ProduceFood();//随机产生食物

void SnakeGrow();//蛇变长

void Score();//分数

void Page()//显示界面

{

printf("\n\n\n\n");

printf("\t\t\t\t《欢迎来到贪吃蛇世界》\n");

printf("\t\t\t\t 按空格开始游戏\n");

printf("\t\t\t\t w,a,s,d,控制方向\n");

}

/*void Mps()//播放声音

{

PlaySound("E:\\霍旭祥\\st.wav" ,NULL,SND_FILENAME | SND_ASYNC);

}*/

void Check()//检测空格

{

char input;

while(1)

{

input = _getch();//按空格键停止播放音乐

if( ==input) break;

}

}

/*void Stopm()//停止音乐

{

PlaySound(NULL,0,0);//PlaySound(NULL,0,0);

}*/

//画背景

void shows2()

{

int i=0;

for(i=0;i<20;i++)

{

printf("%s",ground2[i]);

}

}

//设置蛇的随机位置

void SetSnake()

{

int x=-1;

int y=-1;

//产生随机数

srand((unsigned int)time(NULL));//种种子;

x=rand()%19+1;

y=rand()%18+1;

//初始化蛇的位置

Snake[0][0]=y;//行

Snake[0][1]=x*2;//列

Snake[0][2]=west;

Snake[1][0]=y;//行

Snake[1][1]=x*2+2;//列

Snake[1][2]=west;

Snake[2][0]=y;//行

Snake[2][1]=x*2+4;//列

Snake[2][2]=west;

DrawSnake();

}

void DrawSnake()//画蛇

{

int i=0;

for(i=0;Snake[i][0]!=0;i++)

{

strncpy(&ground2[Snake[i][0]][Snake[i][1]] ,"█",2);

}

}

void SnakeMove()//蛇的移动

{

int i=SnakeLong-1;

//销毁蛇

DeleteSnake();

for(i;i>=1;i--)

{

if(0==Snake[i][1])

{

continue;//过滤非法蛇身

}

//把前一个节点赋值给后一个节点

Snake[i][0]=Snake[i-1][0];

Snake[i][1]=Snake[i-1][1];

Snake[i][2]=Snake[i-1][2];

}

//处理蛇头

Snake[0][2]=SnakeDir;//蛇头方向

if(west==Snake[0][2]||east==Snake[0][2])//判断东西

{

Snake[0][1]+=Snake[0][2];//Snake[0][1]为列

}

else//南北

{

Snake[0][0]+=Snake[0][2];//Snake[0][0]为行

}

DrawSnake();

}

void DeleteSnake()//销毁蛇

{

int i=0;

for(i=0;Snake[i][0]!=0;i++)

{

strncpy(&ground2[Snake[i][0]][Snake[i][1]] ," ",2);

}

}

void ChangeDir()//蛇随方向动起来

{

if(GetAsyncKeyState(W))

{

if(south!=Snake[0][2])

SnakeDir=north;

}

else if(GetAsyncKeyState(S))

{

if(north!=Snake[0][2])

SnakeDir=south;

}

else if(GetAsyncKeyState(A))

{

if(east!=Snake[0][2])

SnakeDir=west;

}

else if(GetAsyncKeyState(D))

{

if(west!=Snake[0][2])

SnakeDir=east;

}

}

bool SnakeDie()//判断蛇是否死亡

{

if(west==Snake[0][2]||east==Snake[0][2])//判断东西

{

//蛇头的下一个是方块就死亡

if(0==strncmp(&ground2[Snake[0][0]][Snake[0][1]+Snake[0][2]],"█",2))

{

return false;

}

}

else//南北

{

if(0==strncmp(&ground2[Snake[0][0]+Snake[0][2]][Snake[0][1]],"█",2))

{

return false;

}

}

return true;

}

void ProduceFood()//随机产生食物

{

//产生随机目标

int i;//行和列

bool flag=true;

if(false==ProFood)//判断是否产生新的食物;

{

return ;

}

srand((unsigned int)time(NULL));

while(1)

{

g_line=rand()%16+2;

g_row=rand()%18+2;

for(i=0;Snake[i][0]!=0;i++)

{

if(g_line==Snake[i][0]&&g_row==Snake[i][1])

{

flag=false;

break;

}

}

if(true==flag)

{

break;

}

}

//坐标画食物

strncpy(&ground2[g_line][g_row*2],"★",2);

ProFood=false;

}

void SnakeGrow()//蛇变长

{

//蛇头坐标与食物坐标相同

if(g_line==Snake[0][0]&&g_row*2==Snake[0][1])

{

if(east==Snake[g_Snakelen][2])

{

Snake[g_Snakelen+1][0]=Snake[g_Snakelen][0];

Snake[g_Snakelen+1][1]=Snake[g_Snakelen][1]-2;

Snake[g_Snakelen+1][2]=Snake[g_Snakelen][2];

}

else if(west==Snake[g_Snakelen][2])

{

Snake[g_Snakelen+1][0]=Snake[g_Snakelen][0];

Snake[g_Snakelen+1][1]=Snake[g_Snakelen][1]+2;

Snake[g_Snakelen+1][2]=Snake[g_Snakelen][2];

}

else if(south==Snake[g_Snakelen][2])

{

Snake[g_Snakelen+1][0]=Snake[g_Snakelen][0]-1;

Snake[g_Snakelen+1][1]=Snake[g_Snakelen][1];

Snake[g_Snakelen+1][2]=Snake[g_Snakelen][2];

}

else if(north==Snake[g_Snakelen][2])

{

Snake[g_Snakelen+1][0]=Snake[g_Snakelen][0]+1;

Snake[g_Snakelen+1][1]=Snake[g_Snakelen][1];

Snake[g_Snakelen+1][2]=Snake[g_Snakelen][2];

}

g_Snakelen++;

ProFood=true;

g_Score++;

}

}

void Score()

{

COORD rd;

rd.X=55;

rd.Y=8;

//设置光标位置

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd);

//打印

printf("分数");

rd.X=56;

rd.Y=9;

//设置光标位置

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),rd);

//打印

printf("%d",g_Score);

}

int main(void)

{

Page();//显示页面

//Mps();//播放音乐

Check();

//Stopm();//按空格键停止播放音乐

system("cls");//清屏;

//游戏界面

SetSnake();//设置蛇的位置

shows2();

while(1)

{

system("cls");

ProduceFood();

SnakeGrow();//蛇变长

ChangeDir();//改变方向;

if(false==SnakeDie())//判断死亡

{

printf("snake die\n");

break;

}

SnakeMove();//蛇动

shows2();//显示

Score();//显示分数

Sleep(1000);

}

//printf("开始游戏\n");

system("pause");

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。