- 棋盘玩家A在起点
- 指定玩家A的位置
- 读入玩家A的位置
- 从键盘输入玩家A走几步
- 棋盘显示玩家B
- 提取显示棋盘方法
- 玩家B向前走几步
- 判断输赢
- 添加地雷
- 踩地雷
- 显示火箭
- 坐上火箭
- 提取Go方法
- 踩到地雷坐上飞机
- 3个地雷3个火箭
- 连续踩地雷或火箭
- 自画棋盘设置地雷和火箭
- 检查自画地图是否死循环
- 向前步数为随机
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01飞行棋面向过程
{
class Program
{
static int[] array = new int[20];
static bool isSetFly = true;
static void Main(string[] args)
{
int posA = 0;//玩家A的位置
int posB = 0;//玩家B的位置
int step = 0;//玩家走的步数
int userInputPos = 0;//玩家输入的位置
Console.WriteLine("请输入放置地雷的位置(输入负数结束):");
userInputPos = int.Parse(Console.ReadLine());
while (userInputPos > 0 && userInputPos < array.Length)
{
array[userInputPos] = 1;
userInputPos = int.Parse(Console.ReadLine());
}
Console.WriteLine("请输入放置火箭的位置(输入负数结束):");
userInputPos = int.Parse(Console.ReadLine());
while (userInputPos > 0 && userInputPos < array.Length)
{
if (array[userInputPos] != 1)
{
//判断火箭放上去之后会不会死循环
Go(userInputPos, 3);
if (isSetFly)
{
array[userInputPos] = 2;
}
else
{
Console.WriteLine("造成死循环,不能在该位置设置火箭");
}
}
else
{
Console.WriteLine("该位置不能被重复设置。");
}
userInputPos = int.Parse(Console.ReadLine());
}
Show(array.Length, posA, posB);
while (posA < array.Length - 1 && posB < array.Length - 1)
{//玩家A和玩家B都没到终点,继续走
Console.WriteLine("请玩家A按回车键投掷骰子:");
Console.ReadLine();
Random r = new Random();
step = r.Next(1, 7);
Console.WriteLine("玩家A走了{0}步", step);
posA = Go(posA, step);
Show(array.Length, posA, posB);
if (posA >= array.Length - 1)
{
break;
}
Console.WriteLine("请玩家B按回车键投掷骰子:");
Console.ReadLine();
step = r.Next(1, 7);
Console.WriteLine("玩家B走了{0}步", step);
posB = Go(posB, step);
Show(array.Length, posA, posB);
}
if (posA >= array.Length - 1)
{//玩家A到达终点
Console.WriteLine("玩家A赢了!!!!");
}
else if (posB >= array.Length - 1)
{//玩家B到达终点
Console.WriteLine("玩家B赢了!!!!");
}
Console.Read();
}
//口 => 口 ● => ● 口 ●
private static int Go(int pos, int step)
{
int oldPos = pos;
pos = pos + step;//玩家A新的位置 = 玩家A现在的位置 + 要走的步数
if (pos >= array.Length)
{//玩家到达终点或超出终点
return pos;
}
while (array[pos] == 1 || array[pos] == 2)
{
if (array[pos] == 1)
{//踩到地雷
pos = pos - 2;
Console.WriteLine("踩到地雷,后退2步");
}
else if (array[pos] == 2)
{//坐上火箭
pos = pos + 3;
Console.WriteLine("做上火箭,加3步");
}
// Console.WriteLine("oldPos:" + oldPos + " pos:" + pos);
if (pos == oldPos)
{
isSetFly = false;
}
}
return pos;
}
/// <summary> 显示棋盘 </summary>
private static void Show(int length, int posA, int posB)
{
for (int i = 0; i < length; i++)
{
if (i == posA && i == posB)
{
Console.Write("AB");
}
else if (i == posA)//如果等于玩家输入的位置
{
Console.Write("A");
}
else if (i == posB)
{
Console.Write("B");
}
else if (array[i] == 1)
{
Console.Write("●");
}
else if (array[i] == 2)
{
Console.Write("=>");
}
else
{
Console.Write("口");
}
}
Console.WriteLine();
}
}
}
网友评论