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

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

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

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

Q&A

解決済

2回答

729閲覧

C#。作った盤面上に駒を配置したい

kurira

総合スコア28

C#

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

0グッド

0クリップ

投稿2021/06/20 01:08

編集2021/06/20 01:40

やりたいこと

入力した値の場所に駒を配置する。これを表示上でもわかるように、盤面に反映させたい。

書いたコード

const int rowMax = 8, colMax = 8;//縦、横 Stone[,] board = new Stone[rowMax, colMax]; public void Start() { const string endKeyword = "end"; string str; int row, col; 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(""); if (row <= 8) { if (col <= 8) { Console.Write("〇",board[row,col]); } } } Console.WriteLine("push any key"); Console.ReadLine(); }

入力した値を元に、〇を盤面内に表示したいです。
現在は1~8の範囲内で入力すればただ〇が表示されるだけなので、これを盤面内に表示出来るようにするにはどうしたら良いのでしょうか?

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

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

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

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

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

Zuishin

2021/06/20 01:10

空白で位置合わせすればいいのでは?
guest

回答2

0

自己解決

列挙を作成し、セットすることで出来ました

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("-------------------------"); } } } }

投稿2021/07/14 23:21

kurira

総合スコア28

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

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

0

枠を描写し直せばいいだけです。
あとboardの定義が書いてなかったり}が足りてなかったりと絶妙にコードが読みにくいです。

C#

1Console.WriteLine("-------------------------"); 2for (int i = 0; i < board.GetLength(0); i++) 3{ 4 Console.Write("|"); 5 for (int m = 0; m < board.GetLength(1); m++) 6 { 7 if (row == i && col == m) 8 Console.Write("〇"); 9 else 10 Console.Write(" "); 11 Console.Write("|"); 12 } 13 Console.WriteLine(""); 14 Console.WriteLine("-------------------------"); 15}

投稿2021/06/20 01:23

neconekocat

総合スコア443

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

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

kurira

2021/06/20 01:35

コピペしたときに抜け落ちていたみたいです汗 申し訳ありませんっ! rowとcolが未割り当てでエラーになってしまいます…。
neconekocat

2021/06/20 01:41

あ、いや元のコードの適切な場所に入れてください。 Console.Write("〇",board[row,col]);してる2重ループの部分と差し替えるイメージです。
kurira

2021/06/20 01:57

Console.WriteLine("-------------------------");やConsole.Write("|");も繰り返されてしまうので、大きな塊が何個も出来てしまいます…
neconekocat

2021/06/20 02:06 編集

Console上で作っているからそれは当然です。 コマンドプロンプト上の特定位置を上書きしたい、という意図であれば質問を変えてください。 描写前にConsole.Clear()で毎回消去するくらいじゃないでしょうかね。
kurira

2021/06/20 02:10

やっぱりできないんですね…。ありがとうございました
Zuishin

2021/06/20 02:32 編集

できるけど言葉が通じなければ教えてもわからないだろうから、まず入門書を読もう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問