質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

5217閲覧

五目並べをC#で作りたい

kurira

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

0クリップ

投稿2021/07/14 23:36

やりたいこと
・8×8の五目並べを作る
・プレイヤーは入力した場所に白い石〇を置く
・敵は空いているマスにランダムに黒い石●を置く

コード↓

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(" |"); } } Console.WriteLine(""); Console.WriteLine("-------------------------"); } ArrayList al = new ArrayList(); Random r1 = new Random(); for (int array = 0; array < 64; array++) { al.Add(array); } //敵のターン for (int i = 0; i < al.Count; i++) { Console.WriteLine("-------------------------"); for (int m = 0; m < al.Count; m++) { Console.Write("●|"); } Console.Write("|"); } } Console.WriteLine(""); Console.WriteLine("-------------------------"); Console.WriteLine("push any key"); Console.ReadLine();//入力待ち } }

できていること
・プレイヤーの石を入力した盤面のマスに配置すること

わからないこと
・敵の石を空いているマスにランダムに置きたいが、現在のコードでは●がものすごい数(多分64個を沢山置いてしまっている?)表示されてしまうこと

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/07/15 00:04

質問者さんはこの五目並べプログラムをご自身で考えてコードを書きたいのでしょうか。それとも完成した答えが知りたいのでしょうか。
kurira

2021/07/15 00:18

できれば完成した物を見たいです。そこから自分が間違っていた部分や勘違いしていた部分を考えたいです。
dodox86

2021/07/15 00:26

そうであれば「C# 五目並べ」などでググッて検索した方が早いですね。ただ、他人のコードを読んで理解するのもそれ相応の力が必要です。
m.ts10806

2021/07/15 00:37

「質問と回答」という形式では得られませんね。 まずは自身の書いたコードと意図を説明できるようになるところからがスタートになります。
gentaro

2021/07/15 02:15

> 質問者さんはこの五目並べプログラムをご自身で考えてコードを書きたいのでしょうか これに回答してない時点でどっかの自力じゃない事がわかる。 学校の課題とかじゃないのかという疑念も拭えない。 https://teratail.com/help/avoid-asking 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 > 現在のコードでは●がものすごい数(多分64個を沢山置いてしまっている?)表示されてしまう その●を表示しているコードは少なくともあなたが正しいと考えて組んだものであれば、意図せず動いている箇所がどこだと思って何を調べ、どうわからなかったのかを説明しよう。
guest

回答2

0

ベストアンサー

できれば完成した物を見たいです。そこから自分が間違っていた部分や勘違いしていた部分を考えたいです。

そうであれば「C# 五目並べ」などでググッて検索した方が早いですね。ただ、他人のコードを読んで理解するのもそれ相応の力が必要です。

C#&コンソールアプリという縛りだと、思ったより少ないですね。
ざっとggってこのくらい見つけました(少ないので3目も入れました)

rlOmega/RenjuVSProject: None
C#で3目並べ(○×ゲーム)の思考ルーチンを書いてみた - Qiita
gushwell/TicTacToo: Tic Tac Too Application

内容についてはC#&コンソールアプリだという以外確認していません(動くかもあっているかも見ていません)

投稿2021/07/15 09:48

TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/07/15 10:00

> 「C# 五目並べ」などでググッて のコメント当初、私自身も案外少ないなと思っていたのですが、あとは質問者さん次第と思いそのままにしておきました。3目については質問者さんの提示のコードにrow,columnを指定できる布石があったので、「有り」だと思います。:-)
kurira

2021/07/15 23:11

あいがとうございます!本当にその通りで、Unityを使った物は多かったのですが、コンソール縛りだとなかなかなくて…。いただいたサイトも見たことあるやつもありましたが、初めて見た物もありますので、参考にさせていただきます!
guest

0

for (int m = 0; m < al.Count; m++)

{ Console.Write("●|"); }

これでは、al.count 個の●を並べてるだけですやん

投稿2021/07/14 23:42

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/07/14 23:52

VisualStudioを使ってるなら、任意の行で実行を止めて変数のナカミを見ることができます。 また、そこから1行づつ実行することもできます そうやって動作を確認していってみては。 そうすれば、どうしてこうなるのかわからない、ということはなくなるかと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問