失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 一个简单的c 游戏编程语言 编程达人 c语言写一个简单的小游戏-推箱子

一个简单的c 游戏编程语言 编程达人 c语言写一个简单的小游戏-推箱子

时间:2019-05-04 17:39:07

相关推荐

一个简单的c 游戏编程语言 编程达人 c语言写一个简单的小游戏-推箱子

在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力。

推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图。

/***********************************************

文件名称:main.c

文件描述:C语言写一个简单的小游戏

编译环境:DEV C++

初写时间:8月3日

修改时间:8月3日

***********************************************/

#include

#include

#include

int map[9][11]={

{0,1,1,1,1,1,1,1,1,1,0},

{0,1,0,0,0,1,0,0,0,1,0},

{0,1,0,3,3,3,3,3,0,1,0},

{0,1,0,3,0,3,0,3,0,1,1},

{0,1,0,0,0,2,0,0,3,0,1},

{1,1,0,1,1,1,1,0,3,0,1},

{1,0,4,4,4,4,4,1,0,0,1},

{1,0,4,4,4,4,4,0,0,1,1},

{1,1,1,1,1,1,1,1,1,1,0}

};//原始的图表,五行六列,其中 0 代表着空白的地方; 1 代表着墙;2 代表着人;

//3 代表着箱子;4 代表着箱子的中点位置。

//图的变化要靠自己来编写数组,通过数字来进行图的构造。

int drawmain();

int tuidong();

int winshu();

int main()//主函数

{

while(1)

{

system("cls");//对其进行清屏

drawmain();

tuidong();

}

printf("shuchu \n");

return 0;

}

//把图形刻画出来

int drawmain()

{

int i,j;

winshu();//调用输赢的函数

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

{

for(j=0;j<11;j++)

{

switch(map[i][j])

{

case 0:

printf(" "); //空白的地方

break;

case 1:

printf("■"); //墙

break;

case 2:

printf("♀"); //人

break;

case 3:

printf("☆"); //箱子

break;

case 4:

printf("◎"); //终点地方

break;

case 6:

printf("♂");//人加终点位置

break;

case 7:

printf("★") ;//箱子加终点位置

break;

}

}

printf("\n");

}

}

//进行小人的移动,整个移动的过程就是数组变化的过程

int tuidong()

{

int count,caw;//行和列

for(int i=0;i<9;i++)//确定人的位置

{

for (int j=0;j<11;j++)

{

if(map[i][j]==2||map[i][j]==6)

{

count=i;

caw=j;

}

}

}

int tui=getch();//与getchar()有区别的是:getchar()输入一个字符后需要回车来进行下一个字符的输入,

//比较麻烦 ,getch()则不需要回车就能连续输入多个字符。

switch(tui)

{//上

case 'W':

case 72:

// 1.人的前面是空地;

// 2.人的前面是终点位置;

// 3.人的前面是箱子

//3.1.箱子的前面是空地;

//3.2.箱子的前面是终点位置。

if(map[count-1][caw]==0||map[count-1][caw]==4)

{

map[count][caw]-=2;

map[count-1][caw]+=2;

}

else if(map[count-1][caw]==3||map[count-1][caw]==7)

{

if(map[count-2][caw]==0||map[count-2][caw]==4)

{

map[count][caw]-=2;

map[count-1][caw]-=1;

map[count-2][caw]+=3;

}

}

break;

/* 移动的情况:

位置:

人 map[count][caw]

人的前面是空地 map[count-1][caw]

人的前面是终点位置 map[count-1][caw]

箱子的前面是空地或终点位置 map[count-2][caw]*/

//下

case 'S':

case 80://键值

if(map[count+1][caw]==0||map[count+1][caw]==4)

{

map[count][caw]-=2;

map[count+1][caw]+=2;

}

else if(map[count+2][caw]==0||map[count+2][caw]==4)

{

if(map[count+1][caw]==3||map[count+1][caw]==7)

{

map[count][caw]-=2;

map[count+1][caw]-=1;

map[count+2][caw]+=3;

}

}

break;

//左

case 'A':

case 75:

if(map[count][caw-1]==0||map[count][caw-1]==4)

{

map[count][caw]-=2;

map[count][caw-1]+=2;

}

else if(map[count][caw-2]==0||map[count][caw-2]==4)

{

if(map[count][caw-1]==3||map[count][caw-1]==7)

{

map[count][caw]-=2;

map[count][caw-1]-=1;

map[count][caw-2]+=3;

}

}

break;

//右

case 'D':

case 77:

if(map[count][caw+1]==0||map[count][caw+1]==4)

{

map[count][caw]-=2;

map[count][caw+1]+=2;

}

else if(map[count][caw+2]==0||map[count][caw+2]==4)

{

if(map[count][caw+1]==3||map[count][caw+1]==7)

{

map[count][caw]-=2;

map[count][caw+1]-=1;

map[count][caw+2]+=3;

}

}

break;

}

/*进行小人的上下左右的移动

移动的情况:

1.人的前面是空地;

2.人的前面是终点位置;

3.人的前面是箱子

3.1.箱子的前面是空地;

3.2.箱子的前面是终点位置。

不移动的情况:

1.人的前面是墙;

2.人的前面是箱子;

2.1.箱子的前面是墙 ;

2.2.箱子的前面是箱子;

*/

//分析后,要进行确定人的位置以及胜利的条件。

}

//整个游戏的输赢

int winshu()

{

int k=0;

for(int i=0;i<9;i++)

{

for (int j=0;j<11;j++)

{

if(map[i][j]==3)

k++;

}

}

if(k==0)

printf("恭喜你,你赢了!\n");

}

/*总结:整个过程就是数组元素的变换过程,但是我还不会进行两关之间的转换,

在以后我会注重逻辑思维的培养以及编写代码时思路简单的撰写,这是我写的第一个小游戏

,写完之后感觉很高兴,因为自己学的知识有很大的用处。 */

运行图为:

命令行显示界面

由于学的比较浅,因此好多功能都没实现,例如:两关之间相连接进行连续游戏、不会使用图形界面等等,需要我以后再努力学习关于C语言的更深入的知识。

如果觉得《一个简单的c 游戏编程语言 编程达人 c语言写一个简单的小游戏-推箱子》对你有帮助,请点赞、收藏,并留下你的观点哦!

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