用c#帮我写一个五子棋的代码
时间: 2024-04-30 16:19:07 浏览: 6
好的,以下是一个简单的五子棋控制台程序的 C# 代码:
```c#
using System;
namespace FiveInRow
{
class Program
{
static void Main(string[] args)
{
int[,] board = new int[15, 15]; // 棋盘
int player = 1; // 当前玩家,1 为黑子,2 为白子
int x, y; // 玩家下棋的坐标
while (true)
{
// 输出棋盘
Console.Clear();
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 15; j++)
{
if (board[i, j] == 1)
{
Console.Write("● ");
}
else if (board[i, j] == 2)
{
Console.Write("○ ");
}
else
{
Console.Write("+ ");
}
}
Console.WriteLine();
}
// 玩家下棋
Console.WriteLine("轮到玩家 " + player + " 下棋,请输入坐标(例如 3,4):");
string[] input = Console.ReadLine().Split(',');
x = int.Parse(input[0]) - 1;
y = int.Parse(input[1]) - 1;
// 判断坐标是否合法
if (x < 0 || x >= 15 || y < 0 || y >= 15)
{
Console.WriteLine("坐标不合法,请重新输入。");
Console.ReadKey();
continue;
}
if (board[x, y] != 0)
{
Console.WriteLine("该位置已被占用,请重新输入。");
Console.ReadKey();
continue;
}
// 下棋
board[x, y] = player;
// 判断是否胜利
if (CheckWin(board, x, y))
{
Console.Clear();
Console.WriteLine("玩家 " + player + " 获胜!");
Console.ReadKey();
return;
}
// 切换玩家
player = player == 1 ? 2 : 1;
}
}
// 判断是否胜利
static bool CheckWin(int[,] board, int x, int y)
{
int player = board[x, y];
int count;
// 判断横向是否连成5子
count = 1;
for (int i = x - 1; i >= 0 && board[i, y] == player; i--)
{
count++;
}
for (int i = x + 1; i < 15 && board[i, y] == player; i++)
{
count++;
}
if (count >= 5)
{
return true;
}
// 判断纵向是否连成5子
count = 1;
for (int i = y - 1; i >= 0 && board[x, i] == player; i--)
{
count++;
}
for (int i = y + 1; i < 15 && board[x, i] == player; i++)
{
count++;
}
if (count >= 5)
{
return true;
}
// 判断左上到右下是否连成5子
count = 1;
for (int i = x - 1, j = y - 1; i >= 0 && j >= 0 && board[i, j] == player; i--, j--)
{
count++;
}
for (int i = x + 1, j = y + 1; i < 15 && j < 15 && board[i, j] == player; i++, j++)
{
count++;
}
if (count >= 5)
{
return true;
}
// 判断左下到右上是否连成5子
count = 1;
for (int i = x - 1, j = y + 1; i >= 0 && j < 15 && board[i, j] == player; i--, j++)
{
count++;
}
for (int i = x + 1, j = y - 1; i < 15 && j >= 0 && board[i, j] == player; i++, j--)
{
count++;
}
if (count >= 5)
{
return true;
}
return false;
}
}
}
```
这个程序只是一个简单的 demo,还有很多可以优化的地方。希望对你有帮助!