数字迷宫

案例需求

本案例要求制作一个《数字迷宫》的游戏,该游戏的玩法描述为:

1、 系统主要地图为固定模式

2、 地图内部包含墙体、走廊、阿拉伯数字(1~7)、玩家头像(1个)四种不同内容

3、 用户通过上、下、左、右按键来控制玩家头像在地图范围内的走动

4、 在玩家走动过程中,碰撞墙壁时,该步的走动无效,玩家头像原地不变

5、 玩家允许在设计走廊内部进行走动

6、 玩家头像遇到阿拉布数字时,数字消失,并且对玩家走动无影响

7、 玩家头像遭遇所有数字之后(地图上无阿拉伯数字),该局游戏结束,并自动开始下一局游戏

8、 在某一局游戏中,游戏走廊、墙体与其他游戏相同,但数字位置会随机产生

9、 阿拉伯数字产生在走廊内而非墙体上

10、  在玩家游戏过程中按下Esc键,游戏无条件退出。

11、  在玩家未使用Esc键时,程序正常运行

void main()

程序接口函数,负责程序整体运行

void SetCode(int num);

该函数通过传入的num值来判断并输出为:■,空格*2,或者数字本身

void SetWindow();

生成地图主体函数:遍历公共数组,在位置部位(1,1)时,调用SetCode函数,并在(1,1)位置输出玩家头像

void SetNum();

程序初始化时,用于使用随机函数在数组“走廊”位置生成1~7的阿拉伯数字

void Begin();

初始化主体函数,设置玩家头像初始位置,调用SetNum函数

void LeftKey();

void UpKey();

void DownKey()

void RightKey();

玩家按下,上下左右按键时,分别调用的函数,该函数可判断玩家是否为被墙体阻挡、正常行走、“吃”掉数字三种状态,并改变玩家头像的位置。

void GoToXY(int x, int y);

该函数用于在x,y位置输出用户头像

void GoToXYSpace(int x, int y);

该函数用于在x,y处输出空格*2,用于用户走动时,消除之前位置处头像。

源代码:

#include<stdio.h>
#include<conio.h>
#include<time.h>
#include"windows.h"
int x,y;
int num;
int code[17][24]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                   0,-1,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,
                   0,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,-1,0,0,0,0,0,-1,-1,-1,0,0,
                   0,-1,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,-1,0,0,0,0,
                   0,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,0,-1,0,-1,-1,-1,-1,-1,-1,-1,0,0,
                   0,-1,0,0,-1,0,-1,0,0,0,0,-1,0,-1,-1,-1,0,0,0,0,0,0,0,0,
                   0,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0,0,-1,0,0,0,0,0,0,0,0,
                   0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0,
                   0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,0,0,-1,0,0,0,0,
                   0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,0,0,-1,0,0,0,0,
                   0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,-1,-1,-1,0,-1,-1,0,
                   0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0,
                   0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,
                   0,0,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,
                   0,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,
                   0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,
                   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
                  };
void SetCode(int num)
{
    if(num==0)
        printf("■");
    else
    {
        if(num==-1)
            printf("  ");
        else
            printf("%d ",num);
    }
}
void SetNum()
{
    int i,j,k=0;
    srand((unsigned) time(NULL));
    while (k<7)
    {
        i = rand() % 17;
        j = rand() % 24;
        if(code[i][j]==-1)
        {
            k++;
            code[i][j] = k ;
        }
    }
}
void SetWindow()
{
    int i,j;
    for(i=0; i<17; i++)
    {
        for(j=0; j<24; j++)
        {
            if(i==1&&j==1)
            {
                printf("\1 ");
            }
            else
                SetCode(code[i][j]);
        }
        printf("\n");
    }
}
void GoToXY(int x, int y)
{
    COORD pos = {x,y};
    HANDLE hout =GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hout, pos);
    printf("\1 ");
}
void GoToXYSpace(int x ,int y)
{
    COORD pos = {x,y};
    HANDLE hout =GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hout, pos);
    printf("  ");
}
void LeftKey()
{
    if(code[x][y-1]!=0)
    {
        GoToXYSpace(y*2 ,x);
        y--;
        GoToXY(y*2,x);
        if(code[x][y]>0)
        {
            code[x][y]=-1;
            num--;
        }

}

}
void UpKey()
{
    if(code[x-1][y]!=0)
    {
        GoToXYSpace(y*2 ,x);
        x--;
        GoToXY(y*2,x);
        if(code[x][y]>0)
        {
        num--;
        code[x][y]=-1;
        }
    }
}
void DownKey()
{
    if(code[x+1][y]!=0)
    {
        GoToXYSpace(y*2 ,x);
        x++;
        GoToXY(y*2,x);
        if(code[x][y]>0)
        {
            code[x][y]=-1;
            num--;
        }
    }
}
void RightKey()
{
    if(code[x][y+1]!=0)
    {

GoToXYSpace(y*2 ,x);
        y++;
        GoToXY(y*2,x);
        if(code[x][y]>0)
        {
            code[x][y]=-1;
            num--;
        }
    }
}
void hidden()//隐藏光标
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(hOut,&cci);
    cci.bVisible=0;//赋1为显示,赋0为隐藏
    SetConsoleCursorInfo(hOut,&cci);
}
void Begin()
{
    x=1,y=1;
    system("CLS");
    SetNum();
    SetWindow();
    GoToXY(y*2,x);
    num=7;
    while(1)
    {
        char direction;
        direction = getch();
        if(direction==27)
            exit(0);
        direction = getch();
        switch(direction)//判断方向键
        {
        case 72:
            UpKey();
            break;
        case 80:
            DownKey();
            break;
        case 75:
            LeftKey();
            break;
        case 77:
            RightKey();
            break;
        }
  if(num==0)
        Begin();
    }
}
int main()
{
    hidden();
    Begin();
    return 0;
}

数字迷宫小游戏源代码相关推荐

  1. python迷宫小游戏大全_Python迷宫小游戏源代码、源程序

    Python迷宫小游戏源程序包括两个文件maze.py和mazeGenerator.py,mazeGenerator.py实现迷宫地图的生成,程序运行截图: mazeGenerator.py impo ...

  2. 实训项目 数字迷宫小游戏

    数字迷宫 第一部分 案例描述 案例目的 本案例为实现动态的刷新Dos界面,使用用户控制头像"消灭"窗口中出现的数字(无固定顺序)的游戏,来使学员加深对一维数组.二维数组.循环语句. ...

  3. Python游戏开发,pygame模块,Python实现过迷宫小游戏

    前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了.让我们愉快地开始吧~ 效果展示 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境 ...

  4. c语言自动按键脚本,C语言键盘控制走迷宫小游戏

    本文实例为大家分享了C语言键盘控制走迷宫小游戏的具体代码,供大家参考,具体内容如下 在看了<啊哈C语言>之后想写一个游戏demo 游戏的截图 首先是启动界面 然后是初始化 接下来是键盘操控 ...

  5. Python版基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式

    基于pygame的玛丽快跑小游戏源代码,玛丽冒险小游戏代码,支持双人模式 按空格进入单人模式,按't'进入双人模式,双人模式下玛丽1采用空格键上跳,玛丽2采用方向上键上跳. 完整代码下载地址:Pyth ...

  6. C语言开发数字华容道实现,jQuery实现数字华容道小游戏(实例代码)

    数字华容道 *{ padding: 0px; margin: 0px; } #btns>button{ width: 100px; height: 30px; border: none; bac ...

  7. 基于Java的迷宫小游戏

    一.实验内容: 1)迷宫游戏是非常经典的游戏,在该题中要求随机生成一个迷宫,并求解迷宫: 2) 要求查找并理解迷宫生成的算法,并尝试用两种不同的算法来生成随机的迷宫. 要求迷宫游戏支持玩家走迷宫,和系 ...

  8. python迷宫小游戏代码_pygame简易迷宫游戏_mask应用示例程序

    用pygame制作的迷宫小游戏.像这类碰撞检测用mask最好.下面是部分代码预览: """ 简易迷宫游戏.本程序演示一个非常简单的迷宫游戏原理. 采用mask进行碰撞检测 ...

  9. c语言设置一个选择数字的程序,C语言编一个数字益智小游戏

    程序功能及运行情况 设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力.游戏共设有四个不同的小游戏,分别是一位数四则运算.两位数四则运算.找最值游戏.排序游戏.程序能实现产 ...

最新文章

  1. vue 数据绑定实现的核心 Object.defineProperty()
  2. every day english
  3. ecplise ee下载安装教程+SpringMVC的helloword
  4. Javascript - Jquery - 事件
  5. 使用sphinx快速为你python注释生成API文档
  6. JAVAWEB(笔记)
  7. 看到一个blog的标语,有意思!
  8. 记一次Java面试中遇到的三个问题及感悟!
  9. CentOS 7 编译安装 PHP 7
  10. SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298...
  11. go kegg_GO分析和KEGG分析都是啥?
  12. html5 app 原理,浅析开发html5 app的三大优势
  13. idea上传写好的springboot项目到码市coding
  14. 普通PC键盘和苹果键盘比较图
  15. Java“菜单“树递归-合并子树
  16. ETL VS ELT
  17. Fastqc使用说明
  18. 支原体最新研究进展(2022年3月)
  19. 盒子滚动到底部有偏差 js_干货丨JS 经典实例收集整理
  20. 五子棋java毕业设计论文_基于Java的五子棋游戏的设计毕业论文,课程设计,研究生文献...

热门文章

  1. office --excel技巧
  2. 网吧XP系统服务优化全面解析
  3. 手写数字识别之资源配置
  4. 天玑1000plus对比骁龙855plus 哪个好
  5. 年度编程_2009年度十大礼品
  6. 3dmax如何拆分模型_3dmax怎么切割模型(3D模型怎么剪切)
  7. kotlin线程与协程的区别
  8. Java从键盘输入字符
  9. 恐鬼症服务器显示不出来怎么办,Phasmophobia恐鬼症10月29日更新修复内容介绍
  10. iOS开发键盘表情处理