当前位置:首页 » 《随便一记》 » 正文

《C#零基础入门之百识百例》(三十)数组应用 -- 推箱子游戏 -- 地图初始化_陈言必行

28 人参与  2022年05月28日 15:58  分类 : 《随便一记》  评论

点击全文阅读


C#零基础入门 数组应用 -- 推箱子游戏

  • 前言
  • 一,游戏介绍
    • 1.1 游戏规则
    • 1.2 关卡设计
  • 二,地图初始化
    • 2.1 概念定义
    • 2.2 代码实现

前言

本文属于C#零基础入门之百识百例系列文章。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论私信等方式找到我,我会一对一解答你的问题。


系列文章目录: 导图
《C#零基础入门之百识百例》 目录文章传送门


一,游戏介绍

最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动,来将箱子推到指定地点

1.1 游戏规则

《推箱子游戏》是一款益智游戏,游戏目标是搬运工自己来找 出到某个位置的最短路径,然后自己走过去。

  1. 小人通过上下左右按键移动;
  2. 小人不能穿过箱子和墙;遇到箱子就推,遇到墙则不动;
  3. 小人每次只能推动一个箱子(两个箱子叠在同一方向,就推不动);
  4. 箱子只能向前推,不能拉;
  5. 当所有的箱子都被成功推到目的地时,即游戏成功。

1.2 关卡设计

经典推箱子第一关效果图:
第一关效果图
集合之前学过的数组,可以将其上述效果图使用数组表示出来;我们用0表示空格,1来表示“墙”。

  • 首先, 我们可以按照上图所示的墙体来创建一个8*9的二维数组,然后用1来表示每块墙在数组中的位置;

  • 其次,再使用0来将数组完善,即可表示出第一关卡的地图了。

代码实现:

int[,] levelMap = new int[8, 9]
{
        {0,0,0,1,1,1,0,0,0},          //空  <=  { , , ,1,1,1, , , },
        {0,0,0,1,0,1,0,0,0},          //位  <=  { , , ,1, ,1, , , },
        {0,0,0,1,0,1,1,1,1},          //置  <=  { , , ,1, ,1,1,1,1},
        {0,1,1,1,0,0,0,0,1},          //用  <=  { ,1,1,1, , , , ,1},
        {0,1,0,0,0,0,1,1,1},          //零  <=  { ,1, , , , ,1,1,1},
        {0,1,1,1,1,0,1,0,0},          //来  <=  { ,1,1,1,1, ,1, , },
        {0,0,0,0,1,0,1,0,0},          //补  <=  { , , , ,1, ,1, , },
        {0,0,0,0,1,1,1,0,0}           //位  <=  { , , , ,1,1,1, , }
};

二,地图初始化

2.1 概念定义

通过2.2的示例,是不是有一点思路了? 试着将2.2的图示打印到控制台吧:

首先我们要确定一下数组值的含义和其对应的表示:

数值含义符号
0空格“ ” 空字符串
1墙体■ 实心正方形
2箱子□ 空心正方形
3小人人 汉字
4目标☆ 空心五角星
5完成★实心五角星

PS:符号可以选择自己喜欢的,只需要保证它们所占的字符是一样的即可,这样就可以保证打印到控制台时,是整齐的了。

2.2 代码实现

既然定义好了那么就代码实现一下,并将其打印到控制台看一下效果吧:

class Program
{
    static void Main(string[] args)
    {       
        // 关卡地图
        // 数组值 ->  0:空格; 墙:1■; 箱子:2□; 人:3人; 目标:4☆; 完
        int[,] levelMap = new int[8, 9]
        {
                {0,0,0,1,1,1,0,0,0},
                {0,0,0,1,4,1,0,0,0},
                {0,0,0,1,0,1,1,1,1},
                {0,1,1,1,2,0,2,4,1},
                {0,1,4,0,2,3,1,1,1},
                {0,1,1,1,1,2,1,0,0},
                {0,0,0,0,1,4,1,0,0},
                {0,0,0,0,1,1,1,0,0}
        };

        // 遍历数组 -- 初始化地图
        for (int i = 0; i < levelMap.GetLength(0); i++)
        {
            for (int j = 0; j < levelMap.GetLength(1); j++)
            {
                if (levelMap[i, j] == 0)
                {
                    Console.Write("  ");
                }
                else if (levelMap[i, j] == 1)
                {
                    Console.Write("■");
                }
                else if (levelMap[i, j] == 2)
                {
                    Console.Write("□");
                }
                else if (levelMap[i, j] == 3)
                {
                    Console.Write("人");
                }
                else if (levelMap[i, j] == 4)
                {
                    Console.Write("☆");
                }
                else if (levelMap[i, j] == 5)
                {
                    Console.Write("★");
                }
            }
            Console.WriteLine();
        }
        
        Console.ReadLine();
    }
}

运行结果如下:
在这里插入图片描述

PS:本文只对数组的应用和游戏逻辑的对接进行引导。完整游戏会在后面函数章节,将对推箱子游戏进行完善,敬请期待~


点击全文阅读


本文链接:http://zhangshiyu.com/post/40950.html

数组  箱子  游戏  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1