質問編集履歴

5

文章やソースを大幅に変更しました。

2022/11/17 02:13

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提
2
2
 
3
- C#でテトリスみたいなシステムを作っています。
3
+ C#でテトリスを作っています。
4
4
  テトリミノを表示する機能を実装中に以下の実現したいことが発生しました。
5
5
  このようなソースがあるのですが、理解できなかったです。
6
6
  ```
@@ -42,6 +42,7 @@
42
42
  using System.ComponentModel;
43
43
  using System.Data;
44
44
  using System.Drawing;
45
+ using System.IO;
45
46
  using System.Linq;
46
47
  using System.Text;
47
48
  using System.Threading.Tasks;
@@ -54,10 +55,9 @@
54
55
  //定数
55
56
  private const byte length = 26;//フィールド用。縦の長さ
56
57
  private const byte width = 12;//フィールド用。横の長さ
57
- //private const byte LimitValue = 21;//フィールド用。ゲーム終了のライン
58
+
58
- //private const byte Wall = 0;//ゲーム内での壁
59
+ //画面に表示するためのPictureBox
59
- //private const byte Place = 1;//ゲーム内でのコマの置ける場所
60
+ internal PictureBox[,] gameBoard_P;
60
- //private const byte Prohibited = 2;//ゲーム内で置けないエリア
61
61
 
62
62
  internal Form1()
63
63
  {
@@ -65,11 +65,7 @@
65
65
  }
66
66
 
67
67
  //DataClassをnewして呼び出して使えるようにする
68
- //private static DataClass dataClass = new DataClass();
68
+ private static DataClass dataClass = new DataClass();
69
- /*↑この中に画像データを書いたソースがあります。
70
- *このようなソースで書いております。
71
- * internal readonly Image Tetrimino = Image.FromFile(Directory.GetCurrentDirectory() + "\\Tetrimino.png");
72
- */
73
69
 
74
70
  //フォームのロード時に呼ばれるメソッド
75
71
  private void Form1_Load(object sender, EventArgs e)
@@ -82,69 +78,38 @@
82
78
  {
83
79
  dataClass.GameBoardFormat();
84
80
 
81
+ //PictureBoxのインスタンス
82
+ this.gameBoard_P = new PictureBox[length, width];
83
+
85
84
  //PictureBoxを初期盤面に設定する
86
85
  for (int i = 0; i < length; i++)
87
86
  {
88
87
  for (int j = 0; j < width; j++)
89
88
  {
90
- if (i == 0)
89
+ gameBoard_P[i, j] = new PictureBox();
90
+
91
+ //壁のPictureBoxにBitMapを入れる
92
+ if ((i == 0 || i == length - 1) && (j == 0 || j == width - 1))
91
93
  {
92
- switch (j)
93
- {
94
- case 0:
95
- pictureBox1.Image = dataClass.Tetrimino;
96
- break;
97
-
98
- case 1:
99
- pictureBox2.Image = dataClass.gameoverLine_image;
94
+ gameBoard_P[i, j].Size = new Size(25, 25);
100
- break;
101
-
102
- case 2:
103
- pictureBox3.Image = dataClass.gameoverLine_image;
104
- break;
105
-
106
- case 3:
107
- pictureBox4.Image = dataClass.gameoverLine_image;
108
- break;
109
-
110
- case 4:
111
- pictureBox5.Image = dataClass.gameoverLine_image;
112
- break;
113
-
114
- case 5:
115
- pictureBox6.Image = dataClass.gameoverLine_image;
116
- break;
117
-
118
- case 6:
119
- pictureBox7.Image = dataClass.gameoverLine_image;
120
- break;
121
-
122
- case 7:
123
- pictureBox8.Image = dataClass.gameoverLine_image;
124
- break;
125
-
126
- case 8:
127
- pictureBox9.Image = dataClass.gameoverLine_image;
128
- break;
129
-
130
- case 9:
131
- pictureBox10.Image = dataClass.gameoverLine_image;
95
+ gameBoard_P[i, j].SizeMode = PictureBoxSizeMode.StretchImage;
132
- break;
133
-
134
- case 10:
135
- pictureBox11.Image = dataClass.gameoverLine_image;
96
+ gameBoard_P[i, j].Location = new Point(i * 25, j * 25);
136
- break;
137
-
138
- case 11:
139
- pictureBox12.Image = dataClass.Tetrimino;
97
+ gameBoard_P[i, j].Image = dataClass.Tetrimino;
140
- break;
141
-
142
- default:
143
- break;
144
- }
145
98
  }
146
99
  }
147
100
  }
101
+ //フォームにコントロールを追加
102
+ this.Controls.AddRange(this.gameBoard_P);
103
+ this.ResumeLayout(false);
104
+
105
+
106
+
107
+ }
108
+
109
+ //タイマーカウント事に呼び出されるメソッド
110
+ private void TimerCount_Tick(object sender, EventArgs e)
111
+ {
112
+
148
113
  }
149
114
  }
150
115
  }
@@ -162,48 +127,4 @@
162
127
  Version 17.4.1
163
128
  VisualStudio.17.Release/17.4.1+33110.190
164
129
  Microsoft .NET Framework
165
- Version 4.8.04084
130
+ Version 4.7
166
-
167
- インストールされているバージョン:Community
168
-
169
- Visual C++ 2022 00482-90000-00000-AA301
170
- Microsoft Visual C++ 2022
171
-
172
- ASP.NET and Web Tools 17.4.326.54890
173
- ASP.NET and Web Tools
174
-
175
- Azure App Service Tools v3.0.0 17.4.326.54890
176
- Azure App Service Tools v3.0.0
177
-
178
- C# ツール 4.4.0-6.22559.4+d7e8a398ef479a908e76bded82150c39251d0c9c
179
- IDE で使用する C# コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
180
-
181
- Common Azure Tools 1.10
182
- Azure Mobile Services および Microsoft Azure Tools で使用する共通サービスを提供します。
183
-
184
- Microsoft JVM Debugger 1.0
185
- Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
186
-
187
- NuGet パッケージ マネージャー 6.4.0
188
- Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、https://docs.nuget.org/ にアクセスしてください
189
-
190
- SQL Server Data Tools 17.0.62207.28050
191
- Microsoft SQL Server Data Tools
192
-
193
- TypeScript Tools 17.0.10921.2001
194
- TypeScript Tools for Microsoft Visual Studio
195
-
196
- Visual Basic ツール 4.4.0-6.22559.4+d7e8a398ef479a908e76bded82150c39251d0c9c
197
- IDE で使用する Visual Basic コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
198
-
199
- Visual C++ for Cross Platform Mobile Development (Android) 17.0.33006.217
200
- Visual C++ for Cross Platform Mobile Development (Android)
201
-
202
- Visual F# Tools 17.4.0-beta.22512.4+525d5109e389341bb90b144c24e2ad1ceec91e7b
203
- Microsoft Visual F# Tools
204
-
205
- Visual Studio IntelliCode 2.2
206
- Visual Studio 向けの AI 支援付き開発。
207
-
208
- Visual Studio Tools for Unity 17.4.3.0
209
- Visual Studio Tools for Unity

4

タイトルを変更しました。

2022/11/16 20:20

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- PictureBoxをデザインフォームで宣言せずに、ソース内部で多重配列を使って宣言しデザインフォームで表示されるようにしたい。
1
+ PictureBoxをデザインフォームで宣言せずに、ソース内部で2次元配列を使って宣言し、宣言したPictureBoxをフォームで表示されるようにしたい。
test CHANGED
File without changes

3

ビジュアルスタジオのバージョン情報を載せました。

2022/11/16 09:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -158,3 +158,52 @@
158
158
  ### 補足情報(FW/ツールのバージョンなど)
159
159
 
160
160
  Windows10 の ビジュアルスタジオ2022 の C# の Windows Forms アプリで自動生成してから、自分でソースコードを書いています。
161
+ Microsoft Visual Studio Community 2022
162
+ Version 17.4.1
163
+ VisualStudio.17.Release/17.4.1+33110.190
164
+ Microsoft .NET Framework
165
+ Version 4.8.04084
166
+
167
+ インストールされているバージョン:Community
168
+
169
+ Visual C++ 2022 00482-90000-00000-AA301
170
+ Microsoft Visual C++ 2022
171
+
172
+ ASP.NET and Web Tools 17.4.326.54890
173
+ ASP.NET and Web Tools
174
+
175
+ Azure App Service Tools v3.0.0 17.4.326.54890
176
+ Azure App Service Tools v3.0.0
177
+
178
+ C# ツール 4.4.0-6.22559.4+d7e8a398ef479a908e76bded82150c39251d0c9c
179
+ IDE で使用する C# コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
180
+
181
+ Common Azure Tools 1.10
182
+ Azure Mobile Services および Microsoft Azure Tools で使用する共通サービスを提供します。
183
+
184
+ Microsoft JVM Debugger 1.0
185
+ Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
186
+
187
+ NuGet パッケージ マネージャー 6.4.0
188
+ Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、https://docs.nuget.org/ にアクセスしてください
189
+
190
+ SQL Server Data Tools 17.0.62207.28050
191
+ Microsoft SQL Server Data Tools
192
+
193
+ TypeScript Tools 17.0.10921.2001
194
+ TypeScript Tools for Microsoft Visual Studio
195
+
196
+ Visual Basic ツール 4.4.0-6.22559.4+d7e8a398ef479a908e76bded82150c39251d0c9c
197
+ IDE で使用する Visual Basic コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。
198
+
199
+ Visual C++ for Cross Platform Mobile Development (Android) 17.0.33006.217
200
+ Visual C++ for Cross Platform Mobile Development (Android)
201
+
202
+ Visual F# Tools 17.4.0-beta.22512.4+525d5109e389341bb90b144c24e2ad1ceec91e7b
203
+ Microsoft Visual F# Tools
204
+
205
+ Visual Studio IntelliCode 2.2
206
+ Visual Studio 向けの AI 支援付き開発。
207
+
208
+ Visual Studio Tools for Unity 17.4.3.0
209
+ Visual Studio Tools for Unity

2

質問にあったことを受けて修正しました。

2022/11/16 08:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -157,5 +157,4 @@
157
157
 
158
158
  ### 補足情報(FW/ツールのバージョンなど)
159
159
 
160
- Windows10 ビジュアルスタジオ2022 .Net 4.7
160
+ Windows10 ビジュアルスタジオ2022 C# の Windows Forms アプリで自動生成してから、自分でソースコードを書いています。
161
-

1

タイトルに語弊がありました。失礼しました。

2022/11/16 07:56

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- PictureBoxをデザインフォームで宣言せずに、多重配列宣言しデザインフォームで表示されるようにしたい。
1
+ PictureBoxをデザインフォームで宣言せずに、ソース内部で多重配列を使って宣言しデザインフォームで表示されるようにしたい。
test CHANGED
File without changes