用C# 编写五子棋规则
时间: 2024-09-30 16:14:07 浏览: 22
在C#中编写五子棋游戏规则,我们需要定义棋盘、棋子和玩家类,以及一些核心函数来处理下棋、判断胜负等。以下是一个简化的示例:
```csharp
using System;
using System.Collections.Generic;
public class Board {
private List<List<int>> grid = new List<List<int>>(9); // 初始化一个9x9的棋盘
public void PlaceStone(int x, int y, Player player) {
if (grid[x][y] == 0) { // 如果格子未被占领
grid[x][y] = player.Color; // 放置棋子,黑棋用1,白棋用2
}
}
public bool IsWinningPattern(int startX, int startY, int direction) {
for (int i = 4; i >= 0; i--) {
var row = startX + i * direction;
var col = startY + i * direction;
if (!IsValidPosition(row, col)) continue;
if (grid[row][col] != grid[row + direction][col + direction]) return false; // 相邻格子颜色不同,不是连续
if (i == 4 || grid[row][col] == 0) break; // 到达边界或空格则结束检查
}
return true;
}
// 其他辅助方法如IsValidPosition等...
}
public abstract class Player {
public enum Color { Black, White } // 定义棋子颜色
protected Color color;
// ...其他属性和方法
}
class HumanPlayer : Player {
// 实现人类玩家的下棋逻辑
}
class ComputerPlayer : Player {
// 实现人工智能的下棋策略
}
public class FiveInARowGame {
public static void Main() {
Board board = new Board();
HumanPlayer human = new HumanPlayer(Color.Black);
ComputerPlayer computer = new ComputerPlayer(Color.White);
while (true) {
board.PlaceStone(human.X, human.Y, human);
if (board.IsWinningPattern(human.X, human.Y, 1)) { // 检查横向胜利
Console.WriteLine("黑方赢了!");
break;
}
board.PlaceStone(computer.X, computer.Y, computer);
if (board.IsWinningPattern(computer.X, computer.Y, -1)) { // 检查纵向胜利
Console.WriteLine("白方赢了!");
break;
}
}
}
}
```
阅读全文