失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用C语言编写的推箱子小游戏

用C语言编写的推箱子小游戏

时间:2022-04-19 16:57:28

相关推荐

用C语言编写的推箱子小游戏

大一时候的期末大作业,一直没找到,在桌子缝里找到了优盘,现在才把内容放上来,希望能帮到你们。具体内容分为实验报告和程序具体代码。

程序设计基础

——期末大作业报告

实验设计

1.编写推箱子小游戏

2.使用C语言

3.使用Dev C++编程程序

4.实现小人移动判定

5.实现通关判定

实验分析

1.首先了解推箱子游戏的规则

2.使用代码完成基本的功能

3.判断移动是否正确

4.实现关卡之间的连接

5.判断游戏是否结束

6.尽量保证推箱子游戏的操作完整性

实现难点及解决方案

一、小人移动的判定

1. 该方向第一个方格为边界;

2. 该方向第一个方格是箱子,第二个方格是边界;

3.该方向第一个方格是箱子,第二个方格是放好位置的箱子;

4. 该方向第一个方格是箱子,第二个方格是箱子。

以上为小人无法移动的条件。

解决方案:

1. 人物移动时判断人物当前位置是空地还是目的地

2. 人物的移动的方向的前方是空地时可直接交换,

3. 人物的移动的方向的前方是箱子时需要再分几种情形

a. 箱子的前方是墙或箱子则无动作

b. 箱子的前方是空地则三者互换

c. 箱子的前方是目的地时则移动

二、地图的制作

1. 使用二维数组

2. 对游戏中的不同类型物体编号

3. 输出时根据数字不同输出不同形状:

1——墙

2——箱子

3——人物

4——目的地

部分代码如下:

(完整代码联系博主)

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> int i=0; int map_1[8][8]={{0,0,0,0,0,0,0,0},{0,1,1,1,1,1,1,0},{0,1,4,0,0,0,1,0},{0,1,0,2,0,0,1,0},{0,1,0,0,3,0,1,0},{0,1,0,0,0,0,1,0},{0,1,1,1,1,1,1,0},{0,0,0,0,0,0,0,0}}; int map_2[8][8]={{0,0,0,0,0,0,0,0},{0,0,0,0,1,1,1,0},{0,0,0,0,1,4,1,0},{0,0,0,0,1,0,1,0},{0,1,1,1,1,2,1,0},{0,1,3,0,0,0,1,0},{0,1,1,1,1,1,1,0},{0,0,0,0,0,0,0,0}}; int map_3[8][8]={{0,0,1,1,1,0,0,0},{0,0,1,4,1,0,0,0},{0,0,1,2,1,1,1,1},{1,1,1,0,0,2,4,1},{1,4,0,2,3,1,1,1},{1,1,1,1,2,1,0,0},{0,0,0,1,4,1,0,0},{0,0,0,1,1,1,0,0}}; int map_4[8][8]={{1,1,1,1,1,1,1,1},{1,0,0,4,0,0,0,1},{1,0,0,2,0,0,0,1},{1,0,0,0,0,2,4,1},{1,4,2,0,3,0,0,1},{1,0,0,0,2,0,0,1},{1,0,0,0,4,0,0,1},{1,1,1,1,1,1,1,1}};int map_5[8][8]={{1,1,1,1,1,1,1,1},{1,0,0,0,0,0,0,1},{1,1,0,0,0,0,0,1},{1,0,4,1,1,2,0,1},{1,0,0,1,3,0,0,1},{1,0,0,1,0,0,0,1},{1,0,0,1,0,0,0,1},{1,1,1,1,1,1,1,1}};int map_6[8][8]={{1,1,1,1,1,1,1,1},{1,0,0,0,0,0,0,1},{1,0,0,4,0,4,0,1},{1,0,0,2,0,2,0,1},{1,0,0,0,3,0,0,1},{1,0,0,2,0,2,0,1},{1,0,0,4,0,4,0,1},{1,1,1,1,1,1,1,1}}; int map_7[8][8]={{1,1,1,1,1,1,1,1},{1,4,4,4,1,1,1,1},{1,0,2,0,1,1,1,1},{1,0,3,0,1,1,1,1},{1,0,2,2,0,1,1,1},{1,0,0,0,1,1,1,1},{1,0,0,1,1,1,1,1},{1,1,1,1,1,1,1,1}};int map_8[8][8]={{1,1,1,1,1,1,1,1},{1,0,0,0,1,1,1,1},{1,4,0,2,1,1,1,1},{1,4,0,3,0,0,1,1},{1,1,2,0,1,0,1,1},{1,1,0,0,0,0,1,1},{1,1,1,1,1,1,1,1},};int map_9[8][8]={{1,1,1,1,1,1,1,0},{1,0,0,4,2,0,1,0},{1,0,1,0,0,0,1,0},{1,0,1,0,1,0,1,0},{1,0,0,3,1,0,1,0},{1,4,2,0,0,0,1,0},{1,0,1,1,1,1,1,0},{1,1,1,0,0,0,0,0},};int map_10[8][8]={{0,1,1,1,1,1,0,0},{0,1,0,0,1,1,1,0},{0,1,0,0,0,0,1,0},{1,1,1,3,1,0,1,1},{1,4,0,2,0,0,0,1},{1,4,2,0,0,1,0,1},{1,4,0,0,0,2,0,1},{1,1,1,1,1,1,1,1},};int x, y;int map[8][8] = {0};int shuchu(){for(x=0; x<8; x++){for(y=0; y<8; y++){if(map[x][y] == 1)printf("X "); if(map[x][y] == 3)printf("P "); if(map[x][y] == 2)printf("Q "); if(map[x][y] == 4)printf("B "); if(map[x][y] == 0)printf(" "); if(map[x][y] == 5) printf("V "); if(map[x][y] == 6) printf("M "); }printf("\n");}return 0;}int zhujiemian(){printf(" \n"" \n"" \n"" \n"" \n"" \n"" \n"" \n" " \n"" \n""welcome!\n"" \n"" \n"" R : replay \n"" WSAD : move \n""\n"" \n");}int find(){for(x=0; x<8; x++)for(y=0; y<8; y++){if(map[x][y] == 3||map[x][y] == 6)return 0;}return 0;}int count1(){int n=0;for(x=0; x<8; x++)for(y=0; y<8; y++){if(map[x][y] == 4)n++;}return n;}int count2(){int m=0;for(x=0; x<8; x++)for(y=0; y<8; y++){if(map[x][y] == 5)m++;}return m;}int up(){if(map[x][y] == 3) {if(map[x-1][y] == 0) {map[x-1][y] = 3;map[x][y] = 0;}if(map[x-1][y] == 2 && map[x-2][y] == 4) {map[x][y] = 0;map[x-1][y] = 3;map[x-2][y] = 5;}if(map[x-2][y] == 0 && map[x-1][y] == 2) {map[x][y] = 0;map[x-1][y] = 3;map[x-2][y] = 2;}else if(map[x-1][y] == 4){map[x][y] =0;map[x-1][y] = 6; }}else if(map[x][y] == 6){if(map[x-1][y] == 0) {map[x-1][y] = 3;map[x][y] = 4;}if(map[x-1][y] == 2 && map[x-2][y] == 4) {map[x][y] = 4;map[x-1][y] = 3;map[x-2][y] = 5;}if(map[x-2][y] == 0 && map[x-1][y] == 2) {map[x][y] = 4;map[x-1][y] = 3;map[x-2][y] = 2;}else if(map[x-1][y] == 4){map[x][y] =4;map[x-1][y] = 6; }}return 0;}int down(){if(map[x][y] == 3) {if(map[x+1][y] == 0){map[x+1][y] = 3;map[x][y] = 0;}if(map[x+1][y] == 2 && map[x+2][y] == 4) {map[x][y] = 0;map[x+1][y] = 3;map[x+2][y] = 5;}if(map[x+2][y] == 0 && map[x+1][y] == 2) {map[x][y] = 0;map[x+1][y] = 3;map[x+2][y] = 2;}else if(map[x+1][y] == 4){map[x][y] =0;map[x+1][y] = 6; }}else if(map[x][y] == 6){if(map[x+1][y] == 0) {map[x+1][y] = 3;map[x][y] = 4;}if(map[x+1][y] == 2 && map[x+2][y] == 4) {map[x][y] = 4;map[x+1][y] = 3;map[x+2][y] = 5;}if(map[x+2][y] == 0 && map[x+1][y] == 2) {map[x][y] = 4;map[x+1][y] = 3;map[x+2][y] = 2;}else if(map[x+1][y] == 4){map[x][y] =4;map[x+1][y] = 6; }}return 0;}

如果觉得《用C语言编写的推箱子小游戏》对你有帮助,请点赞、收藏,并留下你的观点哦!

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