目录
ref
跟out参数的方法使用相同,但使用ref参数感觉上是把实参直接代入形参中,形参直接变成了实参(如果方法中的是形参,且方法没有被调用,那么形参的改变是不会影响Main函数中的实参),方法中改的数据可以直接反映到Main函数的实参中,实参的值会随之改变。
ref参数要求在方法外必须为其赋值,方法内可以不赋值。
params可变参数
将实参列表中跟可变参数类型一致类型的元素都当做数组的元素去处理,params可变参数数组必须放在形参列表的最后面。
使用方式:
在形参的数组前面加params,在实参中写入与数组类型相同的数据,可以是数组,也可以是跟数组类型相同的任意数量数据。
飞行棋游戏
windows窗口游戏,这里面的初始化地图,实质是int类型的数组转换为string类型。
第一步:画游戏头
public static void GameShow()
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("****************************");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("****************************");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("****0505.Net基础班飞行棋****");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("****************************");
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine("****************************");
}
第二步:初始化地图,初始化地图实际上就是将整体的地图类型string先定义成int,用不同的值来表示数组索要展示的图案(string)。
/// <summary>
/// 初始化地图
/// </summary>
public static void InitailMap()
{
int[] luckyturn = { 6, 23, 40, 55, 69, 83 };
for (int i = 0; i < luckyturn.Length; i++)
{
Maps[luckyturn[i]] = 1;
}
int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };
for (int i = 0; i < landMine.Length; i++)
{
Maps[landMine[i]] = 2;
}
int[] pause = { 9, 27, 60, 93 };
for (int i = 0; i < pause.Length; i++)
{
Maps[pause[i]] = 3;
}
int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };
for (int i = 0; i < timeTunnel.Length; i++)
{
Maps[timeTunnel[i]] = 4;
}
}
第三步:设置地图的图形
public static void DrawMap()
{
//□◎☆▲卐
Console.WriteLine("图例:幸运轮盘:◎ 地雷:☆ 暂停:▲ 时空隧道:卐");
#region 第一横行
for (int i = 0; i < 30; i++)
{
Console.Write(DrawStringMap(i));