3章:チュートリアル 2: 迷路の作成

    作成2013.02.22

  1. チュートリアル2の完成ファイル
     チュートリアル 2: 迷路の作成の作成の解説とおりに作業を実施すると、プロジェクトファイル群が完成します。
     完成ファイルは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
     
    [チュートリアル 2の完成ファイル]をダウンロードする。
     解凍するとに「Maze」フォルダーがあります。 注(1)「Maze」フォルダーの「Maze.sln」ファイルをダブルクリックすると「Microsoft Visual Basic 2010 Express」が起動します。
    注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
    注(3)「ソリューションエクスプローラ」ウインドウ内の「Form1.vb」をダブルクリックすると「デザイン」が表示されます。
    注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。


  2. Mazeの実行
    (1)「Microsoft Visual Basic 2010 Express」のデバッグ機能を使用します。
    (2)「デバッグ」_「デバッグ開始」を選択します。
    (3)迷路が表示され、左上にカーソルが表示されます。
    (4)カーソルが青の壁に触れないようにFinishラベルに到達するとゲーム終了です。
    (5)カーソルが青の壁に触れるとカーソルが左上に戻ります。
    (6)Closeボックスをおすとプログラムは終了します。


  3. 新規プロジェクトの作成
    (1)新規プロジェクト
     新規プロジェクトを作成すると「デザイナー」にはForm1が自動生成されます。Mazerでは(Name)=Form1、Size=650、650 、Text=Mazeとしています。

    (2) Formコード
    Public Class Form1
    End Class
    が自動生成されます。

    5.各種パーツの設定
    (1) パーツレイアウト
     Form1に[Labe]をツールボックスから設定します。[Labe]を使用して迷路の壁とFinishラベルを作成します。


  4. Public Class Form1の全コード
    Public Class Form1
        Dim startSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\chord.wav")
        Dim finishSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\tada.wav")
    
        Public Sub New()
            InitializeComponent()
            MoveToStart()
        End Sub
    
        Private Sub finishLabel_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles finishLabel.MouseEnter
            finishSoundPlayer.Play()
            MessageBox.Show("Congratulations!")
            Close()
        End Sub
    
        Private Sub MoveToStart()
            startSoundPlayer.Play()
            Dim startingPoint = Panel1.Location
            startingPoint.Offset(10, 10)
            Cursor.Position = PointToScreen(startingPoint)
        End Sub
    
        Private Sub wall_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.MouseEnter, Panel1.MouseEnter, Label9.MouseEnter, Label8.MouseEnter, Label7.MouseEnter, Label6.MouseEnter, Label5.MouseEnter, Label4.MouseEnter, Label3.MouseEnter, Label29.MouseEnter, Label28.MouseEnter, Label27.MouseEnter, Label26.MouseEnter, Label25.MouseEnter, Label24.MouseEnter, Label23.MouseEnter, Label22.MouseEnter, Label21.MouseEnter, Label20.MouseEnter, Label2.MouseEnter, Label19.MouseEnter, Label18.MouseEnter, Label17.MouseEnter, Label16.MouseEnter, Label15.MouseEnter, Label14.MouseEnter, Label13.MouseEnter, Label12.MouseEnter, Label11.MouseEnter, Label10.MouseEnter, Label30.MouseEnter, Label31.MouseEnter
            MoveToStart()
        End Sub
    End Class
    


  5. SoundPlayerの解説
        Dim startSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\chord.wav")
        Dim finishSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\tada.wav")
    
     最初にSoundPlayerの変数(オブジェクト)を定義します。Dimは変数の定義を意味します。startSoundPlayerは変数名です。=NEWは後に示すクラスの形式で構築し、その代表値(図番のようなもの)を代入します。
     System.Media.SoundPlayer (String) はSoundPlayer クラスの新しいインスタンスを初期化し、指定した .wav ファイルを結び付けます。すなわち、startSoundPlayerには、"C:\Windows\Media\chord.wav"の音声データがロードされます。
     同様にfinishSoundPlayerには"C:\Windows\Media\tada.wav"の音声データがロードされます。


  6. Public Sub New()の解説
        Public Sub New()
            InitializeComponent()
            MoveToStart()
        End Sub
    
    (1)Public Sub New()は、コンストラクターと呼ばれる特殊なメソッドです。 フォームの作成時に 1 回実行されます。
    (2)InitializeComponent()はPublic Sub New()を記述すると自動的に作成されます。このメソッドによって、フォームにすべてのコントロールとコンポーネントが追加され、それらのプロパティが設定されます。
    (3)MoveToStart()はMoveToStart() メソッドの呼び出しを実行します。


  7. Private Sub MoveToStart()の解説
       Private Sub MoveToStart()
            startSoundPlayer.Play()
            Dim startingPoint = Panel1.Location
            startingPoint.Offset(10, 10)
            Cursor.Position = PointToScreen(startingPoint)
        End Sub
    
    (1)startSoundPlayer.Play()は新しいスレッドを使用して .wav ファイル("C:\Windows\Media\chord.wav")を再生します。.wav ファイルが読み込まれていない場合は、まずそのファイルを読み込みます。
    (2)Dim startingPoint = Panel1.LocationはstartingPoint座標を Panel1.Location座標として定義します。
    (3)startingPoint.Offset(10, 10)はstartingPoint座標を(10, 10)オフセットします。
    (4)Cursor.Position = PointToScreen(startingPoint)は、カーソルポジションをstartingPoint画面座標に設定します。

  8. Private Sub wall_MouseEnterの解説
        Private Sub wall_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.MouseEnter, Panel1.MouseEnter, Label9.MouseEnter, Label8.MouseEnter, Label7.MouseEnter, Label6.MouseEnter, Label5.MouseEnter, Label4.MouseEnter, Label3.MouseEnter, Label29.MouseEnter, Label28.MouseEnter, Label27.MouseEnter, Label26.MouseEnter, Label25.MouseEnter, Label24.MouseEnter, Label23.MouseEnter, Label22.MouseEnter, Label21.MouseEnter, Label20.MouseEnter, Label2.MouseEnter, Label19.MouseEnter, Label18.MouseEnter, Label17.MouseEnter, Label16.MouseEnter, Label15.MouseEnter, Label14.MouseEnter, Label13.MouseEnter, Label12.MouseEnter, Label11.MouseEnter, Label10.MouseEnter, Label30.MouseEnter, Label31.MouseEnter
            MoveToStart()
        End Sub
    
    (1)Private Sub wall_MouseEnterはデザイナーから自動生成したイベント処理ルーチンです。標準生成すると
    Private Sub Label1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.MouseEnter
    End Sub
    となります。
    (2)ラベルにMouseEnterイベントが発生した時、システムから呼び出されます。
    (3)迷路はたくさんのラベルを使用しているため、Handlesの後にたくさんのラベルのMouseEnterイベントを記載しています。
    (4)MoveToStart()はMoveToStart() メソッドの呼び出しを実行します。
    (5)マウスのイベントとしては以下があります。
    Control.MouseEnter マウス ポインタによってコントロールが入力されると発生します。
    Control.MouseHover マウス ポインタをコントロールの上に重ねると発生します。
    Control.MouseMove マウス ポインタがコントロール上を移動すると発生します。
    Control.MouseClick コントロールがマウスでクリックされたときに発生します。
    Control.MouseDoubleClick コントロールがマウスでダブルクリックされたときに発生します。
    Control.MouseDown マウス ポインタがコントロール上にあり、マウス ボタンがクリックされると発生します。
    Control.MouseLeave マウス ポインタがコントロールを離れると発生します。
    Control.MouseUp マウス ポインタがコントロール上にあり、マウス ボタンが離されると発生します。
    Control.MouseWheel コントロールにフォーカスがあるときにマウス ホイールが動くと発生します。
    Control.MouseCaptureChanged コントロールでマウスのキャプチャがなくなると発生します。
    ・Control.MouseEnterとControl.MouseHoverとControl.MouseMoveは動作的には、あまり区別がつきません。


  9. Private Sub finishLabel_MouseEnterの解説
        Private Sub finishLabel_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles finishLabel.MouseEnter
            finishSoundPlayer.Play()
            MessageBox.Show("Congratulations!")
            Close()
        End Sub
    
    (1)Private Sub finishLabel_MouseEnterはデザイナーから自動生成したイベント処理ルーチンです。
    (2) finishLabel.MouseEnterイベントが発生した時、システムから呼び出されます。
    (3) finishSoundPlayer.Play()は新しいスレッドを使用して .wav ファイル("C:\Windows\Media\tada.wav")を再生します。.wav ファイルが読み込まれていない場合は、まずそのファイルを読み込みます。
    (4) MessageBox.Show("Congratulations!")はメッセージボックスに"Congratulations!"を表示します。
    (5) Close()はプログラムを終了します。







4章:チュートリアル 3: 計算クイズの作成に行く。

トップページに戻る。