A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦敖 中级黑马   /  2012-10-6 11:57  /  1557 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 秦敖 于 2012-10-6 12:03 编辑

using System;
namespace 飞行棋地图输出
{
    class Program
    {//听了苏老师的飞行棋,自己用二维数组实现了一把。加入了随机效果,有兴趣的一起交流
        const int R=13;//地图为13行
        const int C=30;//地图为30列
        const int PauseNum=4;//地图中暂停的个数
        const int BoomNum=10;//地图中炸弹的个数
        const int LuckNum=6;//地图中幸运轮盘的个数
        const int TimeSkyNum=6;//地图中时刻隧道的个数
        public static void Main(string[] args)
        {
            
            int[,] Map=new int[R,C];
            InitMap(Map);
            DrawMap(Map);
            Console.ReadKey(true);
        }
        /// <summary>
        /// 初始化化地图数据的方法
        /// </summary>
        /// <param name="Map"></param>
        static void InitMap(int[,] Map)
        {//分成三横两竖
            for(int i=0;i<C;i++)//先三横
            {
                Map[0,i]=1;
                Map[6,i]=1;
                Map[R-1,i]=1;
            }
            for(int i=1;i<=5;i++)//右边一竖
            {
                Map[i,C-1]=1;
            }
            for(int i=7;i<R-1;i++)//左边的一竖
            {
                Map[i,0]=1;
            }
            Map[0,0]=6;//初始时两人重合;
            InitGk(Map,PauseNum,2);//随机暂停数据
            InitGk(Map,BoomNum,3);//随机炸弹数据
            InitGk(Map,LuckNum,4);//随机幸运轮盘数据
            InitGk(Map,TimeSkyNum,5);//随机时空隧道数据
        }
        /// <summary>
        /// 用于初始化关卡的函数
        /// </summary>
        /// <param name="Num">关卡的数量</param>
        /// <param name="Value">关卡在地图数据中的值</param>
        static void InitGk(int[,] Map,int Num,int Value)
        {
            Random    r=new Random();
            for(int i=1;i<=Num;)
            {
                int m=r.Next(0,30);
                int n=r.Next(0,13);
                if(Map[n,m]==1)
                {
                    Map[n,m]=Value;i++;
                }
            }
        }
        /// <summary>
        /// 根据地图数据绘制地图的函数。
        /// </summary>
        /// <param name="Map"></param>
        static void DrawMap(int[,] Map)
        {
            for(int i=0;i<R;i++)
            {
                for(int j=0;j<C;j++)
                {
                    switch(Map[i,j])
                    {//0代表空格,1代表普通,2代表暂停,3代表炸弹,4代表幸运轮盘,5代表时空隧道。
                        case 0:
                            Console.Write("  ");break;
                        case 1:
                            Console.ForegroundColor=ConsoleColor.Gray;
                            Console.Write("□");break;
                        case 2:
                            Console.ForegroundColor=ConsoleColor.Yellow;
                            Console.Write("▲");break;
                        case 3:
                            Console.ForegroundColor=ConsoleColor.Cyan;
                            Console.Write("★");break;
                        case 4:
                            Console.ForegroundColor=ConsoleColor.Red;
                            Console.Write("◎");break;
                        case 5:
                            Console.ForegroundColor=ConsoleColor.Green;
                            Console.Write("∮");break;
                        case 6:
                            Console.ForegroundColor=ConsoleColor.White;
                            Console.Write("■");break;
                        case 7:
                            Console.ForegroundColor=ConsoleColor.White;
                            Console.Write("A");break;
                        case 8:
                            Console.ForegroundColor=ConsoleColor.White;
                            Console.Write("B");break;
                    }
                }
                Console.WriteLine();
            }
        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
该飞行棋程序定义了6个整型常量,而且常量名都为大写,值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马