c语言贪吃蛇制作过程.docx

上传人:b****8 文档编号:10958094 上传时间:2023-02-24 格式:DOCX 页数:13 大小:293.02KB
下载 相关 举报
c语言贪吃蛇制作过程.docx_第1页
第1页 / 共13页
c语言贪吃蛇制作过程.docx_第2页
第2页 / 共13页
c语言贪吃蛇制作过程.docx_第3页
第3页 / 共13页
c语言贪吃蛇制作过程.docx_第4页
第4页 / 共13页
c语言贪吃蛇制作过程.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c语言贪吃蛇制作过程.docx

《c语言贪吃蛇制作过程.docx》由会员分享,可在线阅读,更多相关《c语言贪吃蛇制作过程.docx(13页珍藏版)》请在冰豆网上搜索。

c语言贪吃蛇制作过程.docx

c语言贪吃蛇制作过程

C语言贪吃蛇制作过程

流程图如下:

具体代码如下

#include"head.h"

#include

#include

#include

#include

#include

#include

#pragmacomment(lib,"winmm.lib")

 

voidPage();//显示界面

voidMps();//播放音乐

voidCheck();//检查空格

voidStopm();//停止音乐

voidshows2();//画背景

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

voidDrawSnake();//画蛇

voidSnakeMove();//蛇的移动

voidDeleteSnake();//销毁蛇

voidChangeDir();//蛇随方向动起来

boolSnakeDie();//判断蛇是否死亡

voidProduceFood();//随机产生食物

voidSnakeGrow();//蛇变长

voidScore();//分数

voidPage()//显示界面

{

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

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

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

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

}

/*voidMps()//播放声音

{

PlaySound("E:

\\霍旭祥\\st.wav",NULL,SND_FILENAME|SND_ASYNC);

}*/

voidCheck()//检测空格

{

charinput;

while

(1)

{

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

if(''==input)break;

}

}

/*voidStopm()//停止音乐

{

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

}*/

//画背景

voidshows2()

{

inti=0;

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

{

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

}

}

//设置蛇的随机位置

voidSetSnake()

{

intx=-1;

inty=-1;

//产生随机数

srand((unsignedint)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();

}

 

voidDrawSnake()//画蛇

{

inti=0;

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

=0;i++)

{

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

}

}

voidSnakeMove()//蛇的移动

{

inti=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();

}

voidDeleteSnake()//销毁蛇

{

inti=0;

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

=0;i++)

{

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

}

}

voidChangeDir()//蛇随方向动起来

{

if(GetAsyncKeyState('W'))

{

if(south!

=Snake[0][2])

SnakeDir=north;

}

elseif(GetAsyncKeyState('S'))

{

if(north!

=Snake[0][2])

SnakeDir=south;

}

elseif(GetAsyncKeyState('A'))

{

if(east!

=Snake[0][2])

SnakeDir=west;

}

elseif(GetAsyncKeyState('D'))

{

if(west!

=Snake[0][2])

SnakeDir=east;

}

}

boolSnakeDie()//判断蛇是否死亡

{

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

{

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

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

{

returnfalse;

}

}

else//南北

{

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

{

returnfalse;

}

}

returntrue;

}

voidProduceFood()//随机产生食物

{

//产生随机目标

inti;//行和列

boolflag=true;

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

{

return;

}

srand((unsignedint)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;

}

voidSnakeGrow()//蛇变长

{

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

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];

}

elseif(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];

}

elseif(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];

}

elseif(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++;

}

}

voidScore()

{

COORDrd;

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);

}

intmain(void)

{

Page();//显示页面

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

Check();

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

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

//游戏界面

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

shows2();

while

(1)

{

system("cls");

ProduceFood();

SnakeGrow();//蛇变长

ChangeDir();//改变方向;

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

{

printf("snakedie\n");

break;

}

SnakeMove();//蛇动

shows2();//显示

Score();//显示分数

Sleep(1000);

}

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

system("pause");

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1