蓝鸥Unity开发基础—— 实践课程源代码二

蓝鸥Unity开发基础—— 实践课程源代码二

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 ("客观,下次再来哦");

}
    }
}

时间: 2024-08-02 02:43:24

蓝鸥Unity开发基础—— 实践课程源代码二的相关文章

蓝鸥Unity开发基础—— 实践课程源代码一

蓝鸥Unity开发基础-- 实践课程源代码一 源代码 using System; namespace MyFirstGame{    class MainClass    {        public static void Main (string[] args)        {            //游戏即将启动时做一些操作            const int mapW=46;//地图宽度            const int mapH = 16;//地图高度 //定义常量

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

蓝鸥Unity开发基础-- 一维数组学习笔记 一.数组 之前我们学过很多数据类型,今天我们来学习数字,数字也是一种数据类型,那么,具体的数组是如何定义的? 数组:相同数据类型的成员组成的一组数据 Int类型数组:4  7  12  3  5--数组元素 Float数据类型数字:11.5 4.62 7.1 2.21 9.3--数组元素 数组中每一个元素都会分配一个数组下标,数组下标是从0开始的,有序排列,如:0 1 2 3 4 二.声明并初始化数组: 数组也是数据类型,所以也可以声明变量.使用ne

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

蓝鸥Unity开发基础--If 语句学习笔记 本节内容:程序的三种结构,if语句,问号表达式 程序的三种结构 顺序结构:顺序执行语句 分支结构:通过进行判断,在多个语句块中选择某一个执行 循环结构:条件满足时,反复执行同一语句块 If语句 用if语句可以构成分支结构 它根据给定的条件进行判定,用来决定要执行某个程序段 一.if(条件表达式){语句1} using System; namespace Lesson11{    class MainClass    {        public s

蓝鸥Unity开发基础二——课时3 访问修饰符

[蓝鸥Unity开发基础二]课时3 访问修饰符 一.访问修饰符 public --公共的,在哪里都能用 private  --私有的,只能够在当前机构体重使用,其他任何地方都不能 访问修饰符举例说明 using System; namespace Lesson_03{           struct Point2{        //public--公共的,在哪里都能用        public float x;        //private  --私有的,只能够在当前机构体重使用,其他

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

蓝鸥Unity开发基础-- 二维数组学习笔记 一.二维数组 有两个下标的数组叫做二维数组 类似[,]数组名=new类型[常量表达式1,常量表达式2] int[,] numbers= new int[2,3]; [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] 举例说明 using System; namespace Lesson16{    class MainClass    {        public static void Main (string[] args)

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

蓝鸥Unity开发基础--关系运算和逻辑运算学习笔记 本节内容 关系运算符 逻辑运算符 一.关系运算符 > >= < <= == != 主要用于比较运算,比较的结果只有true或false两种情况,结果用boo类型变量存储 注意:判断是否相等,用==(双等号) 不能用零或非零代表bool值  二.逻辑运算符 逻辑运算符组成的表达式结果也只有ture或false &&(与):运算符两边表达式地值同时为真的时候,整个逻辑表达式的值才为真 ||(或):运算符两边表达式的值

蓝鸥Unity开发基础——类型转换学习笔记

蓝鸥Unity开发基础--类型转换学习笔记 类型转换包括:自动转换+强制转换 一.自动转换 自动转换:由系统自动完成,不会导致数据精度丢失,只能从低精度类型转换高精度类型. 二.强制转换 强制转换:从高精度转向低精度类型需要强制转换,会丢失精度,需要显式地进行转换. 源代码: using System; namespace Lesson07{    class MainClass    {        public static void Main (string[] args)       

蓝鸥Unity开发基础——使用字符串学习笔记

蓝鸥Unity开发基础使用字符串 本节内容:使用字符串:字符串拼接.转义字符 一.字符串拼接:字符串可以使用+或+=进行字符串拼接!! 二.转移字符--举例\n(表示回车.换行) 转移字符 转义_转义意义 \n_表示换行或回车 \t_表示制表符 \"_表示双引号 \'_表示单引号 \\_表示反斜杠 在字符串前面加@符号,会使字符串的转义字符失效! 字符串中转义字符失效之后,我们需要使用两个双引号来打印双引号 源代码 using System; namespace Lesson08{    cla

蓝鸥Unity开发基础二——课时6 方法

蓝鸥Unity开发基础二--课时6 方法 推荐视频讲师博客:http://11165165.blog.51cto.com/ 对象.方法名(实际参数); Person p=new Person(); P.Say(); 1.带有参数的方法举例 using System; namespace Lesson_06{    class MainClass    {        public class Car{        //l跑        //访问说明符  返回值类型 方法名(参数列表){语句