1.方法的重载:
概念:方法的重载指的就是方法的名称相同,但是参数不同.
参数不同,分为两种情况;
第一种情况:如果参数类型相同,参数个数就不能相同;
第二种情况:如果参数个数相同,参数类型就不能相同;
***方法的重载跟返回值没有关系;
2.方法的递归:
方法自己调用自己
找出一个文件夹中的所有文件;
3.return 跳出结束方法 ,
只能跳出一次 且是当前方法,所以递归调用几次 就要跳出几次方法 类似于压栈出栈;
飞行棋
1.游戏头
显示在开始界面的内容;
给文字上颜色:Console.ForegroundColor = ConsoleColor.Yellow;
2.初始化地图
(加载地图所需要的资源):把数字变成字符串的过程就是初始化的过程,一般用int 形数组;
3.绘制地图
将数组地址对应的数字指向各种符号图形;
4.逻辑构造
写游戏的规则功能;
5.随机数
Random r = new Random();
int rnumber = r.Next(1,7);
6.完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01飞行棋
{
class Program
{
public static int[] _Map = new int[100];//地图
public static int[] _PlayPos = new int[2];//玩家坐标
public static string[] _PlayerName = new string[2];//玩家姓名
static void Main(string[] args)
{
_PlayPos[0] = 0;
_PlayPos[1] = 0;
Program.GameShow();
Program.PlayerName();
Console.Clear();//清屏
Program.GameShow();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("{0}的飞机用A表示", _PlayerName[0]);
Console.WriteLine("{0}的飞机用B表示", _PlayerName[1]);
Program.InitailMap();
Program.DrawMap();
Program.PlayGame();
Console.ReadKey();
}
/// <summary>
/// 游戏头
/// </summary>
public static void GameShow()
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("************************************************************");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("************************************************************");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("*************************飞行棋******************************");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("************************************************************");
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.WriteLine("************************************************************");
}
/// <summary>
/// 初始化地图
/// </summary>
public static void InitailMap()
{
int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘✔
for (int i = 0; i < luckyturn.Length; i++)
{
_Map[luckyturn[i]] = 1;//把luckyturn中的数组坐标循环遍历到地图数组中;
}
int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷■
for (int j = 0; j < landMine.Length; j++)
{
_Map[landMine[j]] = 2;
}
int[] pause = { 9, 27, 60, 93 };// 暂停▷
for (int k = 0; k < pause.Length; k++)
{
_Map[pause[k]] = 3;
}
int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道☆
for (int l = 0; l < timeTunnel.Length; l++)
{
_Map[timeTunnel[l]] = 4;
}
}
/// <summary>
/// 绘制地图重复代码的封装;
/// </summary>
public static string DemoDeawMap(int i)
{
string str = "";
if (_PlayPos[0] == _PlayPos[1] && _PlayPos[0] == i)//如果玩家一的坐标等于玩家二的坐标;
{
Console.ForegroundColor = ConsoleColor.Red;
str = "<>";
return str; //玩家站一起打印尖括号;
}
else if (_PlayPos[0] == i)//玩家A在地图上;
{
Console.ForegroundColor = ConsoleColor.Green;
str = "A";
return str;
}
else if (_PlayPos[1] == i)//玩家B在地图上;
{
Console.ForegroundColor = ConsoleColor.Blue;
str = "B";
return str;
}
else if (_Map[i] == 0)
{
Console.ForegroundColor = ConsoleColor.Gray;
str = "□";
return str; //在正常位置打印普通方块;
}
else if (_Map[i] == 1)
{
Console.ForegroundColor = ConsoleColor.DarkYellow;
str = "○";
return str;//在幸运轮盘打印○;
}
else if (_Map[i] == 2)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
str = "■";
return str; //在地雷打印■;
}
else if (_Map[i] == 3)
{
Console.ForegroundColor = ConsoleColor.Cyan;
str = "…";
return str; //在暂停打印…;
}
else if (_Map[i] == 4)
{
Console.ForegroundColor = ConsoleColor.Magenta;
str = "☆";
return str;//在时空隧道打印☆;
}
return str;
}
/// <summary>
/// 绘制地图
/// </summary>
public static void DrawMap()
{
Console.WriteLine("特殊区域: 幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆ ");
for (int i = 0; i < 30; i++)//打印第一行地图;
{
string str = Program.DemoDeawMap(i);
Console.Write(str);
}//第一横行;
for (int i = 30; i < 35; i++)
{
Console.WriteLine("");
for (int j = 0; j < 29; j++)
{
Console.Write(" ");
}
string str = Program.DemoDeawMap(i);
Console.Write(str);
}//第一竖行;
Console.WriteLine("");
for (int i = 64; i >= 35; i--)//第二横行;
{
string str = Program.DemoDeawMap(i);
Console.Write(str);
}//第二横行;
for (int i = 65; i < 70; i++)
{
Console.WriteLine("");
string str = Program.DemoDeawMap(i);
Console.Write(str);
}//第二竖行;
Console.WriteLine("");
for (int i = 70; i < 100; i++)
{
string str = Program.DemoDeawMap(i);
Console.Write(str);
}//第三横行;
Console.WriteLine("");
}
/// <summary>
/// 玩家姓名
/// </summary>
public static void PlayerName()
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("请输入玩家A的姓名:");
_PlayerName[0] = Console.ReadLine();
while (true)
{
if (_PlayerName[0] == "")
{
Console.WriteLine("玩家A姓名不能为空,请重新输入");
_PlayerName[0] = Console.ReadLine();
}
else
{
break;
}
}
while (true)
{
Console.WriteLine("请输入玩家B的姓名:");
_PlayerName[1] = Console.ReadLine();
if (_PlayerName[1] == "")
{
Console.WriteLine("玩家B姓名不能为空,请重新输入");
}
else if (_PlayerName[1] == _PlayerName[0])
{
Console.WriteLine("玩家B姓名不能与玩家A相同,请重新输入");
}
else
{
break;
}
}
}
/// <summary>
/// 玩游戏
/// </summary>
public static void PlayGame()
{
while (_PlayPos[0] < 99 && _PlayPos[1] < 99)
{
Random r = new Random();
int rnumber = r.Next(1,7);
Console.WriteLine("玩家{0}按任意键开始掷骰子", _PlayerName[0]);
Console.ReadKey(true);
Console.WriteLine("玩家{0}掷出了{1}", _PlayerName[0],rnumber);
_PlayPos[0] += rnumber;
Program.ChangePos();//判断界限
Console.ReadKey(true);
Console.WriteLine("玩家{0}按任意键开始行动", _PlayerName[0]);
Console.ReadKey(true);
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
if (_PlayPos[0] == _PlayPos[1]) //判断玩家A是否踩到玩家B;
{
Console.WriteLine("玩家A踩到玩家B了,玩家B退六格");
Console.ReadKey(true);
_PlayPos[1] -= 6; //如果踩到了,玩家B就退六格;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
}
else//判断是否踩到其他方块;正常块;幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆
{
switch (_Map[_PlayPos[0]]) //可能有0;1;2;3;4
{
case 0:
Console.WriteLine("玩家A踩到了正常块,无事发生");
break;
case 1:
Console.WriteLine("玩家A踩到了幸运轮盘,前进六格");
Console.ReadKey(true);
_PlayPos[0] += 6;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 2:
Console.WriteLine("玩家A踩到了地雷,后退六格");
Console.ReadKey(true);
_PlayPos[0] -= 6;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 3:
Console.WriteLine("玩家A踩到了暂停,暂停一回合");
Console.ReadKey(true);
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 4:
Console.WriteLine("玩家A踩到了时空隧道,可以选择是否与玩家B交换位置");
Console.ReadKey(true);
Console.WriteLine("输入1交换位置,输入2轰炸对手");
Console.ReadKey(true);
while (true)
{
string button = "";
button = Console.ReadLine();
if (button == "1")
{
Console.WriteLine("玩家A与B位置交换");
Console.ReadKey(true);
int temp = _PlayPos[0];
_PlayPos[0] = _PlayPos[1];
_PlayPos[1] = temp;
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
}
else if (button == "2")
{
Console.WriteLine("玩家A选择轰炸玩家B,玩家B退六格");
Console.ReadKey(true);
_PlayPos[1] -= 6;
break;
}
else
{
Console.WriteLine("选择错误清重新选择");
Console.ReadKey(true);
button = Console.ReadLine();
continue;
}
}
break;
}
}
Console.WriteLine("玩家{0}行动完了", _PlayerName[0]);
Console.ReadKey(true);
Console.WriteLine("玩家{0}按任意键开始掷骰子", _PlayerName[1]);
Console.ReadKey(true);
Console.WriteLine("玩家{0}掷出了{1}", _PlayerName[1],rnumber);
_PlayPos[1] += rnumber;
Program.ChangePos();//判断界限
Console.ReadKey(true);
Console.WriteLine("玩家{0}按任意键开始行动", _PlayerName[1]);
Console.ReadKey(true);
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
if (_PlayPos[1] == _PlayPos[0]) //判断玩家B是否踩到玩家A;
{
Console.WriteLine("玩家B踩到玩家A了,玩家A退六格");
Console.ReadKey(true);
_PlayPos[0] -= 6; //如果踩到了,玩家A就退六格;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
}
else//判断是否踩到其他方块;正常块;幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆
{
switch (_Map[_PlayPos[1]]) //可能有0;1;2;3;4
{
case 0:
Console.WriteLine("玩家B踩到了正常块,无事发生");
Console.ReadKey(true);
break;
case 1:
Console.WriteLine("玩家B踩到了幸运轮盘,前进六格");
Console.ReadKey(true);
_PlayPos[1] += 6;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 2:
Console.WriteLine("玩家B踩到了地雷,后退六格");
Console.ReadKey(true);
_PlayPos[1] -= 6;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 3:
Console.WriteLine("玩家B踩到了暂停,暂停一回合");
Console.ReadKey(true);
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
case 4:
Console.WriteLine("玩家B踩到了时空隧道,可以选择是否与玩家A交换位置");
Console.ReadKey(true);
Console.WriteLine("输入1交换位置,输入2轰炸对方");
Console.ReadKey(true);
while (true)
{
string button = "";
button = Console.ReadLine();
if (button == "1")
{
Console.WriteLine("玩家B与玩家A位置交换");
Console.ReadKey(true);
int temp = _PlayPos[0];
_PlayPos[0] = _PlayPos[1];
_PlayPos[1] = temp;
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
}
else if (button == "2")
{
Console.WriteLine("玩家B选择轰炸玩家A,玩家A退六格");
Console.ReadKey(true);
_PlayPos[0] -= 6;
Program.ChangePos();//判断界限
Console.Clear();//清屏
Program.InitailMap();//初始化地图
Program.DrawMap();//绘制地图
break;
}
else
{
Console.WriteLine("选择错误清重新选择");
Console.ReadKey(true);
button = Console.ReadLine();
continue;
}
}
break;
}
}
Console.WriteLine("玩家{0}行动完了", _PlayerName[1]);
Console.ReadKey(true);
}
}
/// <summary>
/// 界定玩家的范围不会到地图外面去;
/// </summary>
public static void ChangePos()
{
if(_PlayPos[0]<0)
{
_PlayPos[0] = 0;
}
else if(_PlayPos[0]>99)
{
_PlayPos[0] = 99;
}
if (_PlayPos[1] < 0)
{
_PlayPos[1] = 0;
}
else if (_PlayPos[1] > 99)
{
_PlayPos[1] = 99;
}
}
}
}