推箱子游戏(算法设计)

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

推箱子程序设计:

设计思想:

(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");//改变颜色后面的数字,选择不一样的颜色
}

相关文章
|
7月前
|
算法 Java
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】
|
7月前
|
算法
【学会动态规划】地下城游戏(10)
【学会动态规划】地下城游戏(10)
24 0
|
7月前
|
定位技术 开发工具 Python
python实现超级玛丽游戏
Pygame是一个Python模块,旨在使编写视频游戏等多媒体应用程序变得更加轻松。它提供了一个用于处理音频、图像和鼠标/键盘输入等方面的工具集。Pygame也提供了一些预先编写好的模块,如Sprites(用于管理游戏中的对象)和Pygame.display(用于创建和管理窗口)。 Pygame基于SDL库(Simple DirectMedia Layer),它是一个跨平台的开源的低级多媒体库,用于对音频、键盘、鼠标、图形硬件以及低级的操作系统特性进行访问。 当使用Pygame时,你能够创建游戏窗口、读取键盘输入、播放音频、处理碰撞以及执行游戏逻辑。这些功能使Pygame称为一个适用于初学
610 19
python实现超级玛丽游戏
|
9月前
动态规划之地下城游戏
动态规划之地下城游戏
|
11月前
|
Python
Python实现猜拳游戏
Python实现猜拳游戏
151 0
|
12月前
|
程序员
关于经典游戏俄罗斯方块,你不知道的那些事儿
大家好,我是小蚂蚁。今天带大家来了解一下那个已被载入游戏史册的伟大的游戏——俄罗斯方块。 为什么它被叫做是“俄罗斯方块”呢?因为它诞生于俄罗斯,并且游戏界面都是方块.....开个玩笑,这样的解释也太牵强了。不过,这个游戏诞生于俄罗斯确实是真的。
101 0
|
12月前
|
数据挖掘 开发者
关于泡泡龙游戏的一点儿总结,以及分享一个好方法
游戏是一种虚拟的产品,它很难被量化,也很难像工厂流水线生产实体产品一样的去生产。因为其中涉及到的情况太多太杂,如何衡量一个游戏的体量?怎样的游戏算是大游戏,怎样的游戏算是小游戏呢?如何判断一个游戏是做完了还是没有做完呢?如何衡量一个游戏开发者的水平呢?……等等等等。这里面的每一个因素都是一个变量,这么多的无法确定的变量合在一起,想要得到一个确定的结果,很显然是不太可能的。
107 0
|
12月前
|
Python
Python实现超级玛丽游戏系列教程03玛丽跳跃
Python实现超级玛丽游戏系列教程03玛丽跳跃
125 0
Python实现超级玛丽游戏系列教程03玛丽跳跃
【数学逻辑思维】好玩的数独游戏——001
标准数独是由一个给出了提示数字的9×9网络格组成的,我们只需要将其空格填上数字,使得每一行,每一列以及每一个3×3宫都没有重复的数字出现。并且每一道数独题都只有唯一的答案,它的规则简单但并不需要任何其他技巧。通过应用逻辑思维推理,得出空白格中的数字,从而提高数学逻辑思维。
75 0
【数学逻辑思维】好玩的数独游戏——001