推箱子小游戏
目前已实现功能
选择关卡
便捷地图编辑接口(使用结构体加结构体指针实现)
待实现功能
撤回一步
重新开始
效果展示
源码
头文件
#ifndef __TUIXIANGZI_H__
#define __TUIXIANGZI_H__
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#define ROW 12 //地图行数
#define COL 12 //地图列数
#define NUM 5 //地图总数
enum MENU
{
EXIT,
PLAY
};
struct MAP
{
const int row;
const int col;
char map[ROW][COL];
};
void menu(); //菜单
void game(); //游戏实现函数
void print_map(char (*map)[COL], const int *row, const int *col); //打印地图
void find_man(char (*map)[COL], const int *row, const int *col, int *x, int *y); //找到玩家的坐标
void player_act(char (*map)[COL], int *x, int *y); //玩家控制小人行动
int is_win(char (*map)[COL], const int *row, const int *col); //判断是否胜利
#endif //__TUIXIANGZI_H__
主函数文件
#define _CRT_SECURE_NO_WARNINGS 1
#include "tuixiangzi.h"
int main()
{
int input = 0;
do
{
menu();
printf("请选择想要进行的操作:>");
scanf("%d", &input);
switch (input)
{
case PLAY: system("cls"), game(), system("cls");
break;
case EXIT: printf("正在退出游戏\n");
break;
default: printf("你选择的选项有误,我看不懂\n");
break;
}
} while (input);
return 0;
}
功能实现文件
#define _CRT_SECURE_NO_WARNINGS 1
#include "tuixiangzi.h"
struct MAP all_map[NUM] =
{ { 8, 8, { { 0, 0, 1, 1, 1, 0, 0, 0 }, //地图一
{ 0, 0, 1, 3, 1, 0, 0, 0 },
{ 0, 0, 1, 0, 1, 1, 1, 1 },
{ 1, 1, 1, 2, 0, 2, 3, 1 },
{ 1, 3, 0, 2, 4, 1, 1, 1 },
{ 1, 1, 1, 1, 2, 1, 0, 0 },
{ 0, 0, 0, 1, 3, 1, 0, 0 },
{ 0, 0, 0, 1, 1, 1, 0, 0 } } },
{ 9, 9, { {1,1,1,1,1,0,0,0,0}, //地图二
{1,4,0,0,1,0,0,0,0},
{1,0,2,2,1,0,1,1,1},
{1,0,2,0,1,0,1,3,1},
{1,1,1,0,1,1,1,3,1},
{0,1,1,0,0,0,0,3,1},
{0,1,0,0,0,1,0,0,1},
{0,1,0,0,0,1,1,1,1},
{0,1,1,1,1,1,0,0,0} } },
{ 7, 10, { { 0, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, //地图三
{ 0, 1, 0, 0, 0, 0, 0, 1, 1, 1 },
{ 1, 1, 2, 1, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 4, 0, 2, 0, 0, 2, 0, 1 },
{ 1, 0, 3, 3, 1, 0, 2, 0, 1, 1 },
{ 1, 1, 3, 3, 1, 0, 0, 0, 1, 0 },
{0,1,1,1,1,1,1,1,1,0} } },
{ 8, 6, { { 0, 1, 1, 1, 1, 0 }, //地图四
{ 1, 1, 0, 0, 1, 0 },
{ 1, 4,