プレイヤーが入力した位置に石を置き、その後敵が空いているマスにランダムに石を置く。
これを交互に繰り返し、五目並ぶと勝敗が決まるという感じです。
現在のコード↓
class Program
{
static void Main(string[] args)
{
Gomoku gomoku = new Gomoku();
gomoku.Start();
}
}
class Gomoku
{
const int rowMax = 8, colMax = 8;//縦、横
Stone[,] board = new Stone[rowMax, colMax];
enum Stone
{
None,
White,
Black
}
public void Start()
{
const string endKeyword = "end";
string str;
int row, col;
Gomoku mc = new Gomoku();
Console.WriteLine("-------------------------");
for (int i = 0; i < board.GetLength(0); i++)
{
Console.Write("|");
for (int m = 0; m < board.GetLength(1); m++)
{
Console.Write(" |");
}
Console.WriteLine("");
Console.WriteLine("-------------------------");
}
while (true)
{
//プレイヤーのターン
Console.WriteLine("\nboard[縦][横]のどこに石を置きますか。(endを入力すると終了します)");
Console.Write("縦[1-8]=");
str = Console.ReadLine();
if (str == endKeyword)
{
break;
}
if (!int.TryParse(str, out row))
{
continue;
}
row--;
if (!(0 <= row && row < board.GetLength(0)))
{
continue;
}
Console.Write("横[1-8]=");
str = Console.ReadLine();
if (!int.TryParse(str, out col))
{
continue;
}
col--;
if (!(0 <= col && col < board.GetLength(1)))
{
continue;
}
Console.WriteLine("-------------------------");
board[row, col] = Stone.White;
for (int i = 0; i < board.GetLength(0); i++)
{
Console.Write("|");
for (int m = 0; m < board.GetLength(1); m++)
{
if (board[i, m] == Stone.White)
{
Console.Write("〇|");
}
else
{
Console.Write(" |");
}
if (board[i, m] == Stone.White && board[i + 1, m] == Stone.White && board[i + 2, m] == Stone.White && board[i + 3, m] == Stone.White && board[i + 4, m] == Stone.White)
{
Console.WriteLine("あなたの勝ちです!");
break;
}
else if (board[i, m] == Stone.White && board[i, m + 1] == Stone.White && board[i, m + 2] == Stone.White && board[i, m + 3] == Stone.White && board[i, m + 4] == Stone.White)
{
Console.WriteLine("あなたの勝利です!");
break;
}
else if (board[i, m] == Stone.White && board[i + 1, m + 1] == Stone.White && board[i + 2, m + 2] == Stone.White && board[i + 3, m + 3] == Stone.White && board[i + 4, m + 4] == Stone.White)
{
Console.WriteLine("あなたの勝利です!");
break;
}
}
Console.WriteLine("");
Console.WriteLine("-------------------------");
}
}
//敵のターン
{
ArrayList al = new ArrayList();
Random r1 = new Random();
int array;
for (array = 0; array < 64; array++)
{
al.Add(array);
}
board[array, array] = Stone.Black;
for (int i = 0; i < al.Count; i++)
{
Console.WriteLine("-------------------------");
for (int m = 0; m < al.Count; m++)
{
if (board[i, m] == Stone.Black)
{
Console.Write("●|");
}
else
{
Console.Write("|");
}
if (board[i, m] == Stone.Black && board[i + 1, m] == Stone.Black && board[i + 2, m] == Stone.Black && board[i + 3, m] == Stone.Black && board[i + 4, m] == Stone.Black)
{
Console.WriteLine("敵の勝利です!");
}
else if (board[i, m] == Stone.Black && board[i, m + 1] == Stone.Black && board[i, m + 2] == Stone.Black && board[i, m + 3] == Stone.Black && board[i, m + 4] == Stone.Black)
{
Console.WriteLine("敵の勝利です!");
}
else if (board[i, m] == Stone.Black && board[i + 1, m + 1] == Stone.Black && board[i + 2, m + 2] == Stone.Black && board[i + 3, m + 3] == Stone.Black && board[i + 4, m + 4] == Stone.Black)
{
Console.WriteLine("敵の勝利です!");
}
}
}
Console.WriteLine("");
Console.WriteLine("-------------------------");
}
Console.WriteLine("push any key");
Console.ReadLine();//入力待ち
}
}
個人的にはdo~whileを使うのかな?とも思っていますが、いまいちピンときておらず、どうすればいいかわかりません。
アドバイス宜しくお願いします。