このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【6日でできるVisual Basic2022入門】①間違い漢字探しゲームの概要

①間違い漢字探しゲームの概要
本章では、4×4=16マスに並ぶ漢字の中から「よく似た1文字」を見つける“間違い漢字探しゲーム”の全体像をつかみます。正解の位置は毎回ランダム、経過秒はリアルタイム表示、誤クリックにはペナルティ—、という簡潔なルールで、視覚認識と集中力を楽しみながら、Visual Basic 2022 によるイベント駆動・タイマー・複数コントロールの一括処理(共通ハンドラー)を学びます。
ここではUIのワイヤー、使用コントロール、VB命令の要点、そして“体験版”の最小コードを示し、次章以降の実装につなげます。

1.ゲームの企画とルール
1.1. 基本ルール
| 項目 | 内容 |
|---|---|
| 盤面 | 4×4(16マス) |
| 目的 | 似た漢字が並ぶ中から正解の1文字を素早くクリック |
| 正解配置 | 毎回ランダムで1か所 |
| 計時 | 開始からの経過秒を表示(誤クリックで+ペナルティ) |
| 終了 | 正解クリックでタイマー停止→記録表示 |
1.2. 出題漢字ペア(例)
| ペア | 読み | よくある違い |
|---|---|---|
| 糊/湖 | のり/みずうみ | 右側部首・さんずいの有無 |
| 話/語 | はなす/かたる | 言偏+構成の差 |
| 録/緑 | ろく/みどり | 金偏と糸偏、右側の形状 |
| 潮/朝 | しお/あさ | さんずい有無+右側の構造 |
| 倍/培 | ばい/つちかう | にんべん vs つちへん |
| 崎/﨑 | さき | 異体字(山偏側の差) |
1.3. 学習ゴール(VB 2022)
| 技術 | キー概念 |
|---|---|
| イベント駆動 | 複数ボタンを共通ハンドラーで処理 |
| レイアウト | SplitContainer で上:操作/下:盤面 |
| タイマー | Timer.Interval/Start/Stop、実時間の更新 |
| 乱数 | Random.Next(n) で正解位置とペアを決定 |
| 反復処理 | For と Controls.OfType(Of Button) の活用 |
1.4. 画面構成と使用コントロール(設計方針)
1.4.1. ワイヤーフレーム
まず、アプリケーションの完成イメージを描いておきます。

1.4.2. 使うコントロール(概要)
| 種別 | (Name) 例 | 主なプロパティ・役割 |
|---|---|---|
| Form | FormGame | Text="間違い探し", Size 600, 690 StartPosition= CenterScreen |
| SplitContainer | SplitContainer1 | 上下分割、SplitterDistance≈70px |
| Label | (見出し「記録」「秒」) | 説明・単位表示 |
| TextBox | TextHunt / TextTimer | 探す文字(Center)/経過秒(Right) Font: Meiryo UI 18pt |
| Button | ButtonStart | ゲーム開始 Font: Meiryo UI 18pt |
| Panel | PanelGrid | Size 580, 580 |
| Timer | Timer1 | 20~50ms 程度で Tick 更新 |
SplitContainer の配置
1.ツールボックスの「コンテナー」を展開します。

2.SplitContainerをフォームに配置して、「SplitContainer」上を右クリックします。
ポップアップメニューから「SplitContainer」を選択します。

3.右上の「▶」をクリックして、メニューを表示します。
「上下スプリッターの方向」を選択します。

パネルが上下分割に切り替わります。

4.「SplitterDistance」を70にします。

Panelの配置
1.ツールボックスの「コンテナー」を展開します。

2.PanelコンテナをPanel2に配置します。

1.5. VB 2022 の要点(このゲームで使う命令・構文)
| 要素 | 解説 | 例 |
|---|---|---|
AddHandler | ループでイベントを束ねる | AddHandler b.Click, AddressOf Buttons_Click |
Random.Next(n) | 0..n-1 を返す | 正解マスや出題ペアの抽選 |
Timer.Interval/Start/Stop | 周期処理 | 計時と表示更新 |
| 反復処理 | For / For Each | 16ボタンへ一括設定 |
1.6. 体験版の最小コード(概念実装)
Imports System.Drawing
Imports System.Linq ' OfType を使うため
Public Class FormGame
' 出題ペア(wrong:間違いで並べる、right:正解で1マスだけ)
Private ReadOnly pairs As (wrong As String, right As String)() = {
(wrong:="糊", right:="湖"),
(wrong:="話", right:="語"),
(wrong:="録", right:="緑"),
(wrong:="潮", right:="朝"),
(wrong:="倍", right:="培"),
(wrong:="崎", right:="﨑")
}
Private ReadOnly rnd As New Random()
Private correct As String
Private wrong As String
Private elapsed As Double
Private Const N As Integer = 4 ' 4×4
' ※ PanelGrid(Panel など)、TextHunt(Label など)、TextTimer(Label など)、Timer1 はデザイナで配置しておく
Private Sub FormGame_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 盤面を 4×4 自動生成(体験用)
Dim size As Integer = 140
Dim gap As Integer = 6
For r As Integer = 0 To N - 1
For c As Integer = 0 To N - 1
Dim b As New Button()
b.Font = New Font("Meiryo", 48.0F, FontStyle.Regular, GraphicsUnit.Point)
b.Size = New Size(size, size)
b.Location = New Point(c * (size + gap), r * (size + gap))
AddHandler b.Click, AddressOf Buttons_Click
PanelGrid.Controls.Add(b)
Next
Next
StartRound()
End Sub
Private Sub StartRound()
Dim p As (wrong As String, right As String) = pairs(rnd.Next(pairs.Length))
wrong = p.wrong
correct = p.right
TextHunt.Text = $"「{correct}」を探せ!"
elapsed = 0
Timer1.Interval = 50
Timer1.Start()
' まず全マスを間違い文字に
For Each b As Button In PanelGrid.Controls.OfType(Of Button)()
b.Text = wrong
Next
' ランダムな 1 マスだけ正解に
Dim idx As Integer = rnd.Next(PanelGrid.Controls.Count)
Dim btn As Button = CType(PanelGrid.Controls(idx), Button)
btn.Text = correct
End Sub
Private Sub Buttons_Click(sender As Object, e As EventArgs)
Dim b As Button = DirectCast(sender, Button)
If b.Text = correct Then
Timer1.Stop()
MessageBox.Show($"正解!タイム:{elapsed:0.00} 秒", "お見事")
StartRound() ' 連続プレイ(体験)
Else
elapsed += 2 ' ペナルティ +2 秒
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
elapsed += Timer1.Interval / 1000.0
TextTimer.Text = elapsed.ToString("0.00")
End Sub
End Class
後続章でデザイナ配置・プロパティ表を整備します。ここでは4×4盤面とロジックを小さく体験できるコードを示します(メッセージは本稿向けに変更)。
1.7. 実行イメージ(テキスト)

まとめ
- 4×4 盤・正解は毎回ランダム・リアルタイム計時という簡潔ルールで、VB 2022 のイベント駆動・乱数・反復処理・タイマーを一気に練習できます。
- 共通ハンドラーや
AddHandlerを使えば、16個のボタンでも1本のコードで管理可能。
次章「②フォームの設定」でプロジェクト作成とフォーム命名を統一し、「③画面の設計①」で SplitContainer を配置、「④画面の設計②」で各コントロールのプロパティを整え、「⑤コードの実装と実行」で完成させます。
