c#四人飞行棋重合退回原点的代码
时间: 2023-12-14 18:33:44 浏览: 37
根据提供的引用内容,以下是C#四人飞行棋重合退回原点的代码:
```csharp
// 定义玩家类
public class Player
{
public int position; // 玩家当前位置
public bool isOver; // 玩家是否已经到达终点
public int[] map = new int[56]; // 玩家的地图,存储每个位置的状态
// 构造,初始化地图
public Player()
{
for (int i = 0; i < 56; i++)
{
map[i] = 0;
}
map[0] = 1; // 起点
}
// 玩家移动
public void Move(int steps)
{
// 如果已经到达终点,直接返回
if (isOver)
{
return;
}
// 移动步数为0或负数,直接返回
if (steps <= 0)
{
return;
}
// 移动步数大于6,按6步计算
if (steps > 6)
{
steps = 6;
}
// 移动到下一个位置
int nextPos = position + steps;
if (nextPos > 55)
{
// 超出终点,回退
position = 110 - nextPos;
map[position] = 2; // 标记为撞到
return;
}
// 判断是否撞到其他玩家
for (int i = 0; i < 4; i++)
{
if (Game.players[i].position == nextPos)
{
// 撞到其他玩家,对方回到起点
Game.players[i].position = 0;
Game.players[i].map[0] = 1;
map[position] = 3; // 标记为撞到对方
return;
}
}
// 移动到下一个位置
position = nextPos;
map[position]++; // 标记为经过
if (position == 55)
{
// 到达终点
isOver = true;
}
}
}
// 定义游戏类
public class Game
{
public static Player[] players = new Player[4]; // 四个玩家
// 构造函数,初始化四个玩家
public Game()
{
for (int i = 0; i < 4; i++)
{
players[i] = new Player();
}
}
// 游戏开始
public void Start()
{
// 玩家轮流掷骰子
int currentPlayer = 0;
while (true)
{
Console.WriteLine("轮到玩家" + (currentPlayer + 1) + "掷骰子,请按回车键掷骰子。");
Console.ReadLine();
Random random = new Random(); int steps = random.Next(1, 7);
Console.WriteLine("玩家" + (currentPlayer + 1) + "掷出了" + steps + "点。");
players[currentPlayer].Move(steps);
if (players[currentPlayer].isOver)
{
Console.WriteLine("玩家" + (currentPlayer + 1) + "到达终点,游戏结束。");
break;
}
currentPlayer = (currentPlayer + 1) % 4;
}
}
}
// 测试代码
Game game = new Game();
game.Start();
```