笔记写到这里,对c#的基础应该有所了解了,现在应该可以看懂一些c#代码,并且能写出简单的c#程序了,在这里要感谢一下传智播客.net培训的公开课,目前我所有的笔记都是边看视频教程编写的,传智播客.net培训的公开课视频确实不错,讲的很有重点,好了,废话少说,下面把我做的控制台应用程序的飞行棋的一些关键类代码贴出来,完整源码在文章最后,供大家参考,欢迎高手拍砖!
先看一下界面:

图例解释:
幸运轮盘:1,与对方交换位置2,轰炸对方,使对方退后6步
地雷:踩到地雷,后退4步
暂停:暂停掷骰子一次
时空隧道:前进10步
先解释一下地图如何画,采用了比较笨的方法,采用一个int类型的数组,长度为100,地图上的每个点都用数字表示,0表示普通,1表示幸运轮盘,2表示地雷,3表示暂停,4表示时空隧道
用4个int数组用来存储幸运轮盘,地雷,暂停,时空隧道的坐标

获得第pos坐标上应该绘制的图案public static string GetMapString(int pos)
{
string result = "";
if (playerPos[0] == pos && playerPos[1] == pos)
{
Console.ForegroundColor = ConsoleColor.Red;
result = "<>";
}
else if (playerPos[0] == pos)
{
Console.ForegroundColor = ConsoleColor.Red;
result = "A";
}
else if (playerPos[1] == pos)
{
Console.ForegroundColor = ConsoleColor.Red;
result = "B";
}
else
{
switch (maps[pos])
{
case 0:
Console.ForegroundColor = ConsoleColor.White;
result = "□";
break;
case 1:
Console.ForegroundColor = ConsoleColor.Green;
result = "※";
break;
case 2:
Console.ForegroundColor = ConsoleColor.DarkYellow;
result = "⊙";
break;
case 3:
Console.ForegroundColor = ConsoleColor.Blue;
result = "★";
break;
case 4:
Console.ForegroundColor = ConsoleColor.Magenta;
result = "→";
break;
}
}
return result;
}

绘制地图public static void DrawMap()
{
Console.WriteLine("玩家 {0}:用A表示,{1}用B表示", names[0],names[1]);
Console.WriteLine("说明 □:普通 ※:幸运轮盘 ⊙:地雷 ★:暂停 →:时空隧道");
Console.WriteLine("{0}当前位置:{1} {2}当前位置{3}",names[0],playerPos[0]+1,names[1],playerPos[1]+1 );
//画第一行
for (int i = 0; i <= 29; i++)
{
Console.Write(GetMapString(i));
}
//画右边第一列
Console.WriteLine();
for (int i = 30; i <= 34; i++)
{
for (int j = 0; j < 29; j++)
{
Console.Write(" ");
}
Console.WriteLine(GetMapString(i));
}
//画第二行
for (int i = 64; i >= 35; i--)
{
Console.Write(GetMapString(i));
}
Console.WriteLine();
//画左边第二列
for (int i = 65; i <= 69; i++)
{
Console.WriteLine(GetMapString(i));
}
//画第三行
for (int i = 70; i <= 99; i++)
{
Console.Write(GetMapString(i));
}
Console.WriteLine();
Console.ResetColor();
}
解释一下如何绘制地图的,用了个比较笨的方法,GetMapString()用于获得某坐标上应该显示的图案,然后用Console.Write()输出图案
看一下地图的坐标,坐标从0开始,到99结束,总共3行2列,每一行都是30个图案,每一列5个图案,坐标点如下所示:


玩家掷骰子,并且开始行动,并判断当前关卡public static void Action(ref string firstname,ref int firstpos,ref string secname,ref int secpos)
{
int step = 0;//用于存放掷出的骰子数
Console.Clear();
DrawMap();
Console.WriteLine("{0}按任意键开始掷骰子...", firstname);
Console.ReadKey(true);
Random r = new Random();//掷骰子
step = r.Next(1, 7);
Console.WriteLine("{0}掷出了{1}", firstname, step);
Console.WriteLine("按任意键开始行动...");
Console.ReadKey(true);
firstpos = firstpos + step;
CheckPos();//检查是否越界
if (firstpos == secpos)//撞到对方
{
Console.WriteLine("{0}撞到了{1},把{1}撞到了起点!", firstname, secname);
secpos = 0;
Console.WriteLine("按任意键继续...");
Console.ReadKey(true);
}
else//没撞到,判断玩家所在的位置是否有其它关卡
{
switch (maps[firstpos])
{
case 0:// 普通,没有效果
break;
case 1://走到幸运轮盘
Console.Clear();
DrawMap();
Console.Write("{0}走到了幸运轮盘,请选择运气:", firstname);
Console.WriteLine(" 1:与对方交换位置 2:轰炸对方");
int a = ReadInt(1, 2);
if (a == 1)
{
int temp = firstpos;
firstpos = secpos;
secpos = temp;
Console.WriteLine("{0}与{1}交换了位置.", firstname, secname);
Console.WriteLine("按任意键继续...");
Console.ReadKey(true);
}
else
{
secpos = secpos - 6;
Console.WriteLine("按任意键继续...");
Console.ReadKey(true);
}
break;
case 2://踩到地雷
Console.WriteLine("{0}猜到了地雷,后退4步", firstname);
firstpos = firstpos - 4;
Console.WriteLine("按任意键继续...");
Console.ReadKey(true);
break;
case 3://暂停一次
break;
case 4://时空隧道
Console.WriteLine("太爽了,{0}进入了时空隧道,前进10步...", firstname);
firstpos = firstpos + 10;
Console.WriteLine("按任意键继续...");
Console.ReadKey(true);
break;
}
CheckPos();
}
Console.Clear();
DrawMap();
}
基本上关键的一些代码已经完成了,剩下的就非常容易了
第一次写这么长的控制台应用程序,从学c#开始,因为比较懒,所以学的一知半解,毕业到了一个小公司,做了一个项目,B/S模式,基本上就是拖控件,随便写代码,那代码写的,估计让大牛们看到以为我是个非计算机专业的非专业人士写出来的,那个项目貌似公司也不重视,所以也没出什么问题,做了一个项目后,以为自己多牛逼了,就想到大公司看看,然后就被打击了,一直到那时候,我才开始正视自己,所以把自己当成一个从未学习过c#的菜鸟从头开始好好学,这个算是“改邪归正”后写的第一个代码,希望大家能够多多提意见!
完整源码下载 需要vs2010