推箱子游戏(算法设计)

简介: 推箱子游戏(算法设计)

推箱子程序设计:

设计思想:

(1)确定软件的功能:

让玩家通过按w,s,a,d键推箱子,当箱子们都推到了目的地后出现过关信息,并显示下一关。推错了玩家还按1从新新选关。直到过完全部关卡。每过完一关都会出现重新选关或者回到主页面退出游戏。

(2)定义软件的核心数据结构:

我们定义一个二维数组MAP来记录屏幕上各点的状态。char MAP [20][20]其中:0表示空格,1表示墙,2表示箱子,3表示目的地,4 表示玩家,5 表示箱子在的目的地上7 表示人在目的地上

(3)对整个软件进行功能模块的划分:

(3.1)初始化:在屏幕上输出欢迎信息,在main函数进行选择。并根据各关的要求在屏幕上输出墙、箱子、目的地和人。并用MAP[][]数组记录各点的状态。

(3.2)进入游戏循环:这个游戏主循环是等待按键。当接受到上下左右键时执行相关操作:接受00键退出游戏;接受1键时返回本关头;接受2键返回主菜单;接受无效按键时做忽略处理。

(3.3)判断是否过关:用一个链表win由每关的初始化函数传给main函数。Wain函数每执行一次操作后

函数介绍:

1:main()主函数

首先进入界面,然后选择,按‘1’,开始游戏;按‘0’,退出游戏;按‘2’,人员介绍;按 ‘3’玩法介绍;按‘其他’,重新选择。

2:Game()游戏函数

(1)输入值后判断是否为0,是0返回主菜单,不是重新选关;

(2)完成后,输入‘1’重新选关;输入‘2’返回主菜单;输入其他 自动进行下一关;

3:void player_act()函数

这是记录玩家的,输入‘1’,重新选关;输入‘w’,向上走;输入‘s’向下走;输入‘a’,向左走;输入‘d’,向右走;

4:void print_map()函数: 这是主要打印地图的函数。

程序测试:

1开始游戏界面

2 介绍页面:

3游戏界面:

4结束界面:

设计体会:

为了提高我们的实践能力,让我们学以致用,能运用所学知识进行创造,老师指导我们进行游戏设计。在这次制作推箱子游戏过程中我们组都有很大收获,我们游戏分好几个功能,通过不同的按键去实现不同的功能达到不同的页面。通过画流程图可以让我们设计的思想更明确。其中最难的就是编辑程序代码,虽然我们主要是在网上下载源代码,但是我们在反复修改代码的时候,会发现总体设计和一些函数的实现出现问题,通过不断的改进,不仅可以让程序达到预期效果,而且还能让我们在修改的过程中去学习。我们利用上学期和这学期所学的C语言知识来编写程序,让我们对一些较困难的知识了解更清楚(例如我们运用了函数、结构体、指针和链表等)。、

程序代码: 有点长哈–_--

#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 6   //地图总数
#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<windows.h>
struct MAP
{
    const int row;
    const int col;
    char map[ROW][COL];
};
void color();

void menu();  //菜单

void qinzhu();// 圣诞树
 
void game();  //游戏实现函数

void jsao(); 

void wanfa(); 

void jiesu();

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);    //判断是否胜利

int main()
{
    int input=0 ;
    color();
  menu();        
  printf("\n\n\n");
    printf("\t\t\t请选择想要进行的操作:>>>");
    do
    {
        scanf("%d", &input);
        switch (input)
        {
        case 2:  system("cls"),jsao();
            break;
        case 0:  system("cls"),jiesu();         
            break;
        case 1:  system("cls"), game();
          break;  
        case 3:  system("cls"),wanfa();
          break;
        default:  system("cls"), printf("\n\n\n\n\t\t**你选择的选项有误,贾维斯看不懂**\n\n");
          printf("\t\t**按任意键继续回到主菜单,请按要求重新选择**\n");
           getch(); system("cls");main();
           break;     
        }
    }
  while (input);
    return 0;
}
void jiesu()
{
  system("cls");
  printf("\n\n\n\t\t-------...........------------\n");
     printf("\n\n\n\t\t-------欢迎下次再来!!!--------\n\n");
  printf("\t\t\t\t\t\t\t再见\n\n\n\n\n\n\n");
  printf("\n\n\n\n\t\t\t\t\t\t\t按-*-'00'-*-键退出   "); 
  system("exit");
}
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 } } },
//地图二 
{ 8, 8, {               
{ 0, 1, 1, 1, 1, 1, 0, 0 },  
{ 0, 1, 0, 4, 0, 1, 1, 1 },
{ 1, 1, 0, 1, 2, 0, 0, 1 },
{ 1, 0, 0, 3, 0, 3, 0, 1 },
{ 1, 0, 0, 2, 0, 0, 1, 1 },
{ 1, 1, 1, 0, 0, 0, 1, 0 },
{ 0, 0, 1, 0, 0, 0, 1, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 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, 2, 0, 1, 0 },
{ 1, 1, 2, 0, 1, 1 },
{ 1, 1, 0, 2, 0, 1 },
{ 1, 3, 2, 0, 0, 1 },
{ 1, 3, 3, 5, 3, 1 },
{ 1, 1, 1, 1, 1, 1 } } }
};    
void menu()  //菜单
{
  printf("\n\n\n\n\n\n");
    printf("\t\t\t***********************\n");
    printf("\t\t\t***    1.开始游戏   ***\n");
    printf("\t\t\t***                 ***\n");
    printf("\t\t\t***    0.退出游戏   ***\n");
    printf("\t\t\t***                 ***\n");
    printf("\t\t\t***    2.人员介绍   ***\n");
    printf("\t\t\t***                 ***\n");
    printf("\t\t\t***    3.玩法介绍   ***\n");
    printf("\t\t\t***                 ***\n");
    printf("\t\t\t***    其他键无效   ***\n");
    printf("\t\t\t***********************\n");   
}
     
void wanfa()
{
  char ch;
  system("cls");
  printf("\n\n\n");
  printf("\t\t\t\t操作方法\n");
  printf("\n\n");
  printf("\t\t\t*-*-*  按'W',向上走!  *-*-*\n\n");
  printf("\t\t\t*-*-*  按'S',向下走!  *-*-*\n\n");
  printf("\t\t\t*-*-*  按'A',向左走!  *-*-*\n\n");
  printf("\t\t\t*-*-*  按'D',向右走!  *-*-*\n\n");
  printf("\n");
    printf("\n\t\t■表示墙,□表示箱子,◎表示目的地\n");
    printf("\n\t\t♀表示玩家,★表示箱子在目的地上,@表示人在目的地上\n");
    printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t按任意键返回上一步"); 
  getch();
  system("cls");
  main();
}  
void find_man(char (*map)[COL], const int *row, const int *col, int *x, int *y)  //找到玩家的坐标
{
    int i = 0;
    for (i = 0; i < *row; i++)
    {
        int j = 0;
        for (j = 0; j < *col; j++)
        {
            if ((map[i][j] == 4) || (map[i][j] == 7))
            {
                *x = i;
                *y = j;
                return;
            }
        }
    }
}
void print_map(char (*map)[COL], const int *row, const int *col)  //打印地图
{
    int i = 0;
    system("cls");
    printf("-------------------------------------------------------------\n");
    printf("-------------------------------------------------------------\n\n");
    for (i = 0; i < *row; i++)
    {
    printf("\t\t\t\t\t");
        int j = 0;  
        for (j = 0; j < *col; 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 5: printf("★");
                    break;
                case 7: printf("@");
                    break;
                }
        }
        printf("\n");
    }
    printf("\nW A S D 控制小人的上下左右\n");
    printf("结束\n");
    printf("-------------------------------------------------------------\n");
    printf("-------------------------------------------------------------\n\n\n");
  printf("\t\t\t按1重新选关\n\n");
}
int is_win(char (*map)[COL], const int *row, const int *col)    //判断是否胜利
{
    int dest = 0;
    int i = 0;
    for (i = 0; i < *row; i++)
    {
        int j = 0;
        for (j = 0; j < *col; j++)
        {
            if (map[i][j] == 2 || map[i][j] == 7)
                return 0;
        }
    }
    return 1;
}
void player_act(char (*map)[COL], int *x, int *y)  //玩家控制小人行动,有点多哈
{
    char input = 0;
    switch (input = _getch())
    {
    case '1':   system("cls"),game(); break;
    case 'W':
    case 'w':  
    case 38://向上走
        {
            if (map[(*x) - 1][*y] == 0 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 4;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 4;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 3 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 7;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 3 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 7;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 4;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 2 && map[*x][*y] == 4 && map[(*x) - 2][*y] == 0)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 4;
                map[(*x) - 2][*y] = 2;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 2 && map[*x][*y] == 7 && map[(*x) - 2][*y] == 0)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 4;
                map[(*x) - 2][*y] = 2;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 2 && map[*x][*y] == 7 && map[(*x) - 2][*y] == 3)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 4;
                map[(*x) - 2][*y] = 5;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 2 && map[*x][*y] == 4 && map[(*x) - 2][*y] == 3)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 4;
                map[(*x) - 2][*y] = 5;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 5 && map[*x][*y] == 7 && map[(*x) - 2][*y] == 3)
            {
                map[*x][*y] = 3;
                map[(*x) - 1][*y] = 7;
                map[(*x) - 2][*y] = 5;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 5 && map[*x][*y] == 4 && map[(*x) - 2][*y] == 0)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 7;
                map[(*x) - 2][*y] = 2;
                --*x;
            }
            else if (map[(*x) - 1][*y] == 5 && map[*x][*y] == 4 && map[(*x) - 2][*y] == 3)
            {
                map[*x][*y] = 0;
                map[(*x) - 1][*y] = 7;
                map[(*x) - 2][*y] = 5;
                --*x;
            }
        }
        break;
    case 'S':
    case 's':   
    case 40://向下走
        {
            if (map[(*x) + 1][*y] == 0 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 4;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 4;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 3 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 7;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 3 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 7;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 4;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 2 && map[*x][*y] == 4 && map[(*x) + 2][*y] == 0)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 4;
                map[(*x) + 2][*y] = 2;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 2 && map[*x][*y] == 7 && map[(*x) + 2][*y] == 0)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 4;
                map[(*x) + 2][*y] = 2;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 2 && map[*x][*y] == 7 && map[(*x) + 2][*y] == 3)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 4;
                map[(*x) + 2][*y] = 5;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 2 && map[*x][*y] == 4 && map[(*x) + 2][*y] == 3)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 4;
                map[(*x) + 2][*y] = 5;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 5 && map[*x][*y] == 7 && map[(*x) + 2][*y] == 3)
            {
                map[*x][*y] = 3;
                map[(*x) + 1][*y] = 7;
                map[(*x) + 2][*y] = 5;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 5 && map[*x][*y] == 4 && map[(*x) + 2][*y] == 0)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 7;
                map[(*x) + 2][*y] = 2;
                ++*x;
            }
            else if (map[(*x) + 1][*y] == 5 && map[*x][*y] == 4 && map[(*x) + 2][*y] == 3)
            {
                map[*x][*y] = 0;
                map[(*x) + 1][*y] = 7;
                map[(*x) + 2][*y] = 5;
                ++*x;
            }
        }
        break;
    case 'A':
    case 'a':  
    case 37://向左走
        {
            if (map[*x][(*y) - 1] == 0 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 4;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 4;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 3 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 7;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 3 && map[*x][*y] == 4)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 7;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 0 && map[*x][*y] == 7)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 4;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 2 && map[*x][*y] == 4 && map[*x][(*y) - 2] == 0)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 4;
                map[*x][(*y) - 2] = 2;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 2 && map[*x][*y] == 7 && map[*x][(*y) - 2] == 0)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 4;
                map[*x][(*y) - 2] = 2;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 2 && map[*x][*y] == 7 && map[*x][(*y) - 2] == 3)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 4;
                map[*x][(*y) - 2] = 5;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 2 && map[*x][*y] == 4 && map[*x][(*y) - 2] == 3)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 4;
                map[*x][(*y) - 2] = 5;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 5 && map[*x][*y] == 7 && map[*x][(*y) - 2] == 3)
            {
                map[*x][*y] = 3;
                map[*x][(*y) - 1] = 7;
                map[*x][(*y) - 2] = 5;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 5 && map[*x][*y] == 4 && map[*x][(*y) - 2] == 0)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 7;
                map[*x][(*y) - 2] = 2;
                --*y;
            }
            else if (map[*x][(*y) - 1] == 5 && map[*x][*y] == 4 && map[*x][(*y) - 2] == 3)
            {
                map[*x][*y] = 0;
                map[*x][(*y) - 1] = 7;
                map[*x][(*y) - 2] = 5;
                --*y;
            }
        }
        break;
    case 'D':
    case 'd':  
    case 39://向右走
    {
        if (map[*x][(*y) + 1] == 0 && map[*x][*y] == 4)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 4;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 0 && map[*x][*y] == 7)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 4;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 3 && map[*x][*y] == 7)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 7;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 3 && map[*x][*y] == 4)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 7;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 0 && map[*x][*y] == 7)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 4;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 2 && map[*x][*y] == 4 && map[*x][(*y) + 2] == 0)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 4;
            map[*x][(*y) + 2] = 2;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 2 && map[*x][*y] == 7 && map[*x][(*y) + 2] == 0)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 4;
            map[*x][(*y) + 2] = 2;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 2 && map[*x][*y] == 7 && map[*x][(*y) + 2] == 3)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 4;
            map[*x][(*y) + 2] = 5;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 2 && map[*x][*y] == 4 && map[*x][(*y) + 2] == 3)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 4;
            map[*x][(*y) + 2] = 5;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 5 && map[*x][*y] == 7 && map[*x][(*y) + 2] == 3)
        {
            map[*x][*y] = 3;
            map[*x][(*y) + 1] = 7;
            map[*x][(*y) + 2] = 5;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 5 && map[*x][*y] == 4 && map[*x][(*y) + 2] == 0)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 7;
            map[*x][(*y) + 2] = 2;
            ++*y;
        }
        else if (map[*x][(*y) + 1] == 5 && map[*x][*y] == 4 && map[*x][(*y) + 2] == 3)
        {
            map[*x][*y] = 0;
            map[*x][(*y) + 1] = 7;
            map[*x][(*y) + 2] = 5;
            ++*y;
        }
    }
        break;
    }
}
void game()  //游戏实现函数
{
    int i = 0;
    int x = 0;
    int y = 0;
    system("cls");
    struct MAP *pmap = NULL; 
    printf("\n\n\t目前总共有%d关,你要从哪一关开始玩?:>>>\n", NUM-1);
    printf("\n\n\n\t\t\t\t\t\t\t按0返回主菜单<<<\n");
    scanf("%d", &i); 
    if(i==0)
    {
      system("cls");
      main();
  }
  else
  {
     pmap = all_map + i - 1;
    find_man(pmap->map, &(pmap->row), &(pmap->col), &x, &y);
    while (1)
    {
        system("cls");
        char ch;
        print_map(pmap->map, &(pmap->row), &(pmap->col));
        player_act(pmap->map, &x, &y);
        if (is_win(pmap->map, &(pmap->row), &(pmap->col)) && i < NUM)
        {
            system("cls");
            print_map(pmap->map, &(pmap->row), &(pmap->col));
            system("cls");
            qinzhu();
            printf("\n");
            printf("\t\t\t\t你真棒,小伙子");
            printf("--你已经完成了第%d关\n\n\n\n",i);
      printf("\t\t\t\t输入1,重新选关卡\n");
            printf("\t\t\t\t输入2,返回主菜单\n");
            printf("\t\t\t完成后,按任意键到下一关\n");
      printf("\n");
            ch=getch();
            if(ch=='2')
            {
              system("cls");
              main();
              break;
      }
      else if(ch=='1')
            {
              system("cls");
              game(); 
              break;
      }
            pmap++;
            x = 0;
            y = 0;
            i++;
            find_man(pmap->map, &(pmap->row), &(pmap->col), &x, &y);
        }
        else if (i == NUM)
        {
            printf("\n通关了啊!你真厉害!\n");
            return;
        }
    } 
  }
}
void jsao()  //游戏实现函数
{
    system("cls");
    printf("\n\n\n");
    printf("\t\t18级计算机科学与技术二班-------第六组\n\n\n");
    printf("\t指导老师:");
    printf("\t\t***\n");
    printf("\n");
    printf("\t参与人员:\n");
    printf("\t\t\t\t***---代码编写\n\n");
    printf("\t\t\t\t\t\tQQ:135****33\n");
    printf("\n");
    printf("\t\t\t\t***---流程图制作\n\n");
    printf("\t\t\t\t\t\tQQ:135****630\n");
    printf("\n");
    printf("\t\t\t\t***---文件总结\n\n");
    printf("\t\t\t\t\t\tQQ:175****49\n");
    printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t按任意键返回上一步"); 
  getch();
  system("cls");
  main();      
}
void qinzhu()//通过关卡之后对自己的奖励
{
  int n,m,i,j;
  for(i=1;i<=5;i++)
  {
    printf("\t\t\t*");
    printf("\t");
    printf("*");
    if(i%2!=0)
      printf("*");
    else
      printf(" ");
    if(i%2!=0)
      printf("*");
    else
      printf(" ");
    printf("*");  
    if(i==2)
    {
      printf("\t\t\t\t");
      for(j=0;j<15;j++)
        printf("*"); 
    }
    if(i==4)
    {
      printf("\t\t\t\t");
      for(j=0;j<15;j++)
        printf("*"); 
    }
    printf("\n");
  } 
  
    
}
void color()//运行界面颜色的选择
{
  int a,b;
  system("color 04");//改变颜色后面的数字,选择不一样的颜色
}

相关文章
|
1月前
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)
|
3月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
50 1
|
3月前
|
算法
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
互动游戏解决遇到问题之基于射线投射寻路算法的问题如何解决
|
3月前
|
算法 Python
【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】
|
5月前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
5月前
|
算法 JavaScript 前端开发
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)
81 1
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
5月前
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
|
5月前
|
SQL 算法 数据可视化
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
python 贪心算法 动态规划实现 跳跃游戏ll【力扣题45】
|
6月前
|
存储 算法 PHP
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?
41 1
开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里?