蓝鸥Unity开发基础—— 实践课程控制台玩家Demo

原创 2016年08月18日 11:41:07

蓝鸥Unity开发基础—— 实践课程控制台玩家Demo


using System;

namespace MyFirstGame
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            //游戏即将启动时做一些操作
            const int mapW=46;//地图宽度
            const int mapH = 16;//地图高度

            //定义常量
            const int emptyTiledMap=0;//空砖块
            const int TBTiledMap=1;//顶部和底部砖块
            const int LRTiledMap=2;//左右两边的砖块
            const int Player=3;//玩家
        

            //游戏初始化变量
            bool isOver = false;//游戏是否结束
            int[,] mapData=new int[mapH,mapW] ;//地图数据
            string[,] mapView= new string[mapH,mapW];//地图视图

            int posW = 1;//玩家在W的位置
            int posH = 1;//玩家在H的位置

            //初始化地图数据
            for (int i = 0; i < mapH; i++) {
                for (int j= 0; j < mapW;j++) {
                    //j将地图初始化为空砖块
                    mapData[i,j]=emptyTiledMap;
                    //如果砖块处于最上方侧或最下方,就初始化为TBTiledMap
                    if(i==0 || i==mapH-1){
        
                        mapData[i,j]=TBTiledMap;
                        
                    }else if(j==0 || j==mapW-1){
                        //如果砖块处于最右侧或最左侧,就初始化为LRTiledMap
                        mapData[i,j] = LRTiledMap;

                    }else if(i==posW &&j==posH){
                        //当前位置是玩家
                        mapData [i, j] = Player;
                        
                    }
                }
            }
            //游戏主循环
            while(!isOver){
                //游戏启动后,主循环张做一些操作
                //计算机计算数据->将数据转成视图->把视图显示出来->获取玩家的事件更新数据
                //刷新地图
                for (int i = 0; i < mapH; i++) {
                    for (int j = 0; j < mapW; j++) {
                        //从地图数据中获取数据,决定砖块如何显示
                        //取出砖块数据
                        int tiledData =mapData[i,j];
                        //砖块视图
                        string tiledView="";
                        //确定砖块的显示
                        switch(tiledData){
                        case emptyTiledMap:
                            tiledView=" ";
                            break;
                        case TBTiledMap:
                            tiledView="-";
                            break;
                        case LRTiledMap:
                            tiledView="|";
                            break;
                        case Player:
                            tiledView="P";
                            break;
                        }
                        //将砖块视图存放到地图视图中
                        mapView[i,j]=tiledView;
                        //将每行的每个字符拼接到字符串中
                        //str +=mapView[i,j];
                    }
                }
                //显示地图
                for (int i = 0; i < mapH; i++) {
                    //创建一个用于接收一行信息的字符串
                    string str="";
                    for (int j = 0; j < mapW; j++) {
                        //将每行中的所有字符串进行拼接
                        str+=mapView[i,j];

                    }
                    //打印一行的内容
                    Console.WriteLine (str);
                }

                //保存玩家当前位置
                int oldPosW=posW;
                int oldPosH = posH;


                //等待用户输入
                //获取用户输入的按键字符串

                string key =    Console.ReadKey().KeyChar.ToString();
                if(key=="W"||key=="w"){

                    //让玩家向上移动
                    if(posH>1){
                        posH--;
                    }

                }else if(key=="S"||key=="s")
                {
                    //让玩家向下移动
                    if(posH<mapH-2){
                        posH++;
                    }
                }else  if(key=="A"||key=="a"){
                    //让玩家向下左移动
                    if(posW>1){
                        posW--;
                    }

                }else if(key=="D"||key=="d"){
                    //让玩家向下右移动
                    if(posW<mapW-2){
                        posW++;
                    }
                }else if(key=="Q"||key=="q"){
                    //如果按下Q退出游戏
                    isOver = true;
                    continue;
                }

                    
                //更新地图数据
                mapData[oldPosH,oldPosW]=emptyTiledMap;
                mapData [posH, posW] = Player;


            }
    
            /*有些即将结束时做一些操作 */
            Console.WriteLine ("客观,下次再来哦");

        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

蓝鸥Unity3D ——游戏/VR/AR开发课程大纲

蓝鸥Unity3D ——游戏/VR/AR开发课程大纲

蓝鸥Unity开发基础——静态类

蓝鸥Unity开发基础——静态类

蓝鸥Unity开发基础——枚举类型

蓝鸥Unity开发基础——枚举类型一、声明枚举变量枚举类型的变量只有赋值之后才能使用只能讲有效的值赋给枚举变量不同枚举中的枚举值可以重复我们可以自定义枚举值...

蓝鸥Unity开发基础——关系运算和逻辑运算学习笔记

蓝鸥Unity开发基础——关系运算和逻辑运算学习笔记关系运算符> >= <

蓝鸥Unity开发基础——单例

蓝鸥Unity开发基础——单例

蓝鸥Unity开发基础——if语句学习笔记

蓝鸥Unity开发基础——if语句学习笔记程序的三种结构 顺序结构:顺序执行语句 分支结构:通过进行判断,在多个语句块中选择某一个执行 循环结构:条件满足时,反复执行同一语句块...

蓝鸥Unity开发基础——构造方法

蓝鸥Unity开发基础——构造方法

蓝鸥Unity开发基础——类和对象

蓝鸥Unity开发基础——类和对象一,类和对象类:类的作用就是为了分类类用来抽象出物体的特征和行为 类是用来描述具有相同特征的行为的抽象...

蓝鸥Unity开发基础—— 一维数组学习笔记

蓝鸥Unity开发基础—— 一维数组学习笔记:一、数组之前我们学过很多数据类型,今天我们来学习数字,数字也是一种数据类型,那么,具体的数组是如何定义的?数组:相同数据类型的成员组成的一组数据Int类型...

蓝鸥Unity开发基础——Switch语句学习笔记

Switch语法属于多分支语句,通过判断表达式的值,来决定执行哪个分支,Break用于结束某个case,然后执行switch之外的语句,Switch-开关:case-情况开关决定发生的情况...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:蓝鸥Unity开发基础—— 实践课程控制台玩家Demo
举报原因:
原因补充:

(最多只允许输入30个字)