用c#编写一个五子棋小游戏
时间: 2023-09-15 12:15:12 浏览: 44
以下是一个基础版的五子棋小游戏,你可以参考:
```csharp
using System;
using System.Collections.Generic;
namespace FiveInARow
{
class Program
{
static char[,] board = new char[15, 15];
static char player = 'X';
static bool gameOver = false;
static void Main(string[] args)
{
InitializeBoard();
DrawBoard();
while (!gameOver)
{
Console.Write($"Player {player}, enter your move (row, column): ");
string[] input = Console.ReadLine().Split(',');
int row = int.Parse(input[0]);
int col = int.Parse(input[1]);
if (IsValidMove(row, col))
{
board[row, col] = player;
DrawBoard();
if (IsWinningMove(row, col))
{
Console.WriteLine($"Player {player} wins!");
gameOver = true;
}
player = (player == 'X') ? 'O' : 'X';
}
else
{
Console.WriteLine("Invalid move. Try again.");
}
}
}
static void InitializeBoard()
{
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 15; j++)
{
board[i, j] = '-';
}
}
}
static void DrawBoard()
{
Console.WriteLine(" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14");
for (int i = 0; i < 15; i++)
{
Console.Write($"{i} ");
for (int j = 0; j < 15; j++)
{
Console.Write($"{board[i, j]} ");
}
Console.WriteLine();
}
}
static bool IsValidMove(int row, int col)
{
if (row < 0 || row >= 15 || col < 0 || col >= 15)
{
return false;
}
return board[row, col] == '-';
}
static bool IsWinningMove(int row, int col)
{
// Check row
List<char> rowList = new List<char>();
for (int i = 0; i < 15; i++)
{
rowList.Add(board[row, i]);
}
if (CheckListForFive(rowList))
{
return true;
}
// Check column
List<char> colList = new List<char>();
for (int i = 0; i < 15; i++)
{
colList.Add(board[i, col]);
}
if (CheckListForFive(colList))
{
return true;
}
// Check diagonal (top-left to bottom-right)
List<char> diagonalList1 = new List<char>();
int min = Math.Min(row, col);
int startRow = row - min;
int startCol = col - min;
for (int i = 0; i < 15; i++)
{
if (startRow + i > 14 || startCol + i > 14)
{
break;
}
diagonalList1.Add(board[startRow + i, startCol + i]);
}
if (CheckListForFive(diagonalList1))
{
return true;
}
// Check diagonal (bottom-left to top-right)
List<char> diagonalList2 = new List<char>();
int max = Math.Max(row, col);
int startRow2 = row + col - max;
int startCol2 = max - row + col;
for (int i = 0; i < 15; i++)
{
if (startRow2 - i < 0 || startCol2 + i > 14)
{
break;
}
diagonalList2.Add(board[startRow2 - i, startCol2 + i]);
}
if (CheckListForFive(diagonalList2))
{
return true;
}
return false;
}
static bool CheckListForFive(List<char> list)
{
int count = 0;
foreach (char c in list)
{
if (c == player)
{
count++;
if (count == 5)
{
return true;
}
}
else
{
count = 0;
}
}
return false;
}
}
}
```
这个游戏使用控制台界面,玩家输入行列坐标来下棋。游戏的规则是先连成5个棋子的一方获胜。