実現したいこと
無限(ある程度大きすぎると困るのでX,Yともに256マスと仮定)にマスがある〇×ゲームの書かれた座標の履歴を
無限の盤面がある3かける3のマルバツゲームを作りたいです。(縦[x]3マス・横[y]3マス・無限にしたい部分[z])
byte型の(Listと配列の違いがわかりません)Listか配列にしてプレイヤーの書いた場所を記録したいです。
byte型の(Listと配列の違いがわかりません)Listか三次元配列にしてプレイヤーの示した場所(1ターンに1度)をプレイヤーがゲームをクリアーできる時まで記録したいです。
”2025/05/29 14:40追記事項”マルバツゲームが終わるまで、盤上の情報を持っておきたいです。その為にZ座標を持たせて三次元で考えております。
1枚目(z=0)何も書かれていない紙を保存して、2枚目(z=1)にどこ(x・y)に何(後でマルバツに対応する数字を入れる)を入れたか記録したいです。
発生している問題・分からないこと
配列は最初から決まっている要素しか持っていませんが、
リストはAdd(T)が使えますが3×3×無限とするため、
配列とリストどちらが今回の内容に沿っていて。どのように設定したらよいのでしょうか。
配列は最初から決まっている要素([3[縦マス],3[横マス],無限にしたい問題の箇所)しか持っていませんが、
リストはAdd(T)が使えますが3×3×無限とするため、
配列とリストどちらが今回の内容に沿っていて。どのようにプログラミングしたらよいのでしょうか。
該当のソースコード
C#
1 using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows.Forms; 7 8namespace Hit_And_Blow 9{ 10 public class VariablStorage 11 { 12~~ 13 /* 14 //解答用を記録する配列 15 public byte[,,] answer; 16 */ 17 18 //解答を記録する配列 19 List<byte> answer = new List<byte> { }; 20~~ 21 22 23 24 //解答用を記録する配列 25 **"public byte[,,] answer;"** 26 27 //解答を記録する配列 28 **"List<byte> answer = new List<byte> { };"** 29 30 31 /* 32 * Array.Resize(ref numbers, numbers.Length + 1); 33 * numbers[numbers.Length - 1] = 7; 34 */ 35 36 //初期化関数 37 public void InitializationMethod() 38 { 39 ~~answer = new byte[3, 3, 4];~~ 40 ~~List<byte> numbers = new List<byte> { };~~ 41 _//ここでListか3次元配列のデータを初期化したい。_ 42 } 43 } 44}
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11 12namespace Hit_And_Blow 13{ 14 public partial class MainForm : Form 15 { 16 //変数置き場 17 public VariablStorage BoardPlace = new VariablStorage(); 18 19 public MainForm() 20 { 21 InitializeComponent(); 22 23 //VariablStorage初期化メソッド 24 BoardPlace.InitializationMethod(); 25 26 } 27 28 29 //初期化関数 30 public void InitializationMethod() 31 { 32 BoardPlace.InitializationMethod(); 33 } 34 } 35} 36
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
https://yossy.penne.jp/wordpress/2024/02/07/c-arrayresizeguid/
ここを見ましたが、一次元配列ならArray.Resize()なのですが、
使いたい配列が三次元配列です。
ここはリストではなく配列が正解なのでしょうか。
よろしくお願いします。
補足
VisualStudio Community 2022
更新プログアムのバージョン17.14.3
デバイス名 user
プロセッサ 12th Gen Intel(R) Core(TM) i7-12700 2.10 GHz
実装 RAM 32.0 GB (31.7 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
ペンとタッチ 2 タッチ ポイントでのタッチのサポート

回答3件
あなたの回答
tips
プレビュー