本帖最后由 秦敖 于 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();
}
}
}
} |