プロシード VB 2005 14 きょうつうへんすうせんげん 共通の変数を宣言する ひょうじ 1. ソリューションエクスプローラで コードの表示をクリックする つぎひょうじところしたかこ 2. 次のコードが表示されるので 1の所に 下の囲いのコードを入力する Imports System.IO Imports System.Drawing.Drawing2D Public Class proceed 1 ここに入力する! End Class Private Const SHEETS As Integer = 2 Private Bm, Bp, Bd As Bitmap Private Gb, Gf As Graphics Private Px, Py As Integer Private Game As Boolean = False Private Dx, Dy As Integer Private Ps As Integer = 0 Private Cnt As Integer = 1 Private Dir As String Private Sw As Stopwatch = New Stopwatch() がぞうよこえかじゅんび 画像を読み込み 絵を描く準備をする がめん 1. デザイン画面で フォームをダブルクリックする つぎひょうじところしたかこ 2. 次のコードが表示されるので 2の所に 下の囲いのコードを入力する Private Sub proceed_load(byval sender As Sym System.EventArgs) Handles MyBase.Load 2 ここに入力する! -1-
きどうしゅとく ' 起動パスの取得 Dir = Application.StartupPath If Not Dir.EndsWith(" ") Then Dir &= " " がぞうよみこみの読込 ' 画像 Bm = New Bitmap(Dir & "road1.png") Bp = New Bitmap(Dir & "plane.gif") びょうがようせいせい ' 描画用 Graphics オブジェクトの生成 With picdisp.backgroundimage = New Bitmap(.Width,.Height).Image = New Bitmap(.Width,.Height) Gb = Graphics.FromImage(.BackgroundImage) Gf = Graphics.FromImage(.Image) End With Gb.Clear(Color.White) Gf.Clear(Color.Transparent) さぎょうようせってい ' 作業用ピクチャボックスの設定 With piccanvas.size = Bp.Size.Visible = False End With さいこうてんよみこみの読込 ' 最高点 Using Sr As StreamReader = New StreamReader( _ Dir & "hiscore.txt", System.Text.Encoding.Default) Dim S As String = Sr.ReadLine( ) Sr.Close( ) lblhi.text = (Single.Parse(S) / 1000).ToString("#.000") End Using しょきか ' 初期化 Px = 20 : Py = 56 Gb.DrawImage(Bm, 0, 0) Gf.DrawImage(Bp, Px, Py) しょきかはじ 初期化を行い ゲームを始める がめん 1. デザイン画面で ボタン をダブルクリックする -2-
つぎひょうじところしたかこ 2. 次のコードが表示されるので 2の所に 下の囲いのコードを入力する Private Sub btnstart_click(byval sender As Sy System.EventArgs) Handles btnstart.click 2 ここに入力する! しょきか ' 初期化 Px = 20 : Py = 56 へんすうしょきか ' 変数の初期化 Dx = 0 : Dy = 0 Ps = 0 Gf.Clear(Color.Transparent) Gf.DrawImage(Bp, Px, Py) picdisp.refresh( ) ぜんけいがめんとうめいしょくを透明色でクリア ' 前景画面 ひこうきびょうが ' 飛行機の描画 がめんさいびょうが ' 画面の再描画 lblblue.visible = False じょうきゃくとうじょうしょうきょ ' 乗客搭乗マークの消去 lblyellow.visible = False lblgreen.visible = False lblon.visible = False Bd = Bp.Clone( ) btnstart.enabled = False Sw.Reset( ) : Sw.Start( ) Game = True tmrmove.enabled = True ひこうきがぞうさくせい ' 飛行機の画像のクローンを作成 しよう ' スタートボタンの使用 ふか不可 しどう ' ストップウォッチの始動 ' ゲームモードのオン しどう ' タイマーの始動 しゅとく キー入力を取得する がめんせんたく 1. デザイン画面で フォームを選択し イベント一覧で KeyDown をダブルクリックする つぎひょうじところしたかこなか 2. 次のコードが表示されるので 3の所に 下の囲いの中のコードを入力する Private Sub proceed_keydown (ByVal sender As SyseEventArgs) Handles MyBase.KeyDown 3 ここに入力する! -3-
Dim F As Boolean = False Select Case e.keycode Case Keys.Left ' が押された時 Dx -= 1 : F = True Case Keys.Right ' が押された時 Dx += 1 : F = True Case Keys.Up ' が押された時 Dy -= 1 : F = True Case Keys.Down ' が押された時 Dy += 1 : F = True Case Keys.Space ' スペースキーが押された時 Dx = 0 : Dy = 0 F = True End Select If F Then Bd = Bp.Clone( ) Call RotatePlane( ) いっていかんかくで自動的 タイマーが一定間隔 じどうてきに行 おこなしょりきじゅつう処理を記述する がめん 1. デザイン画面で タイマー をダブルクリックする つぎひょうじところしたかこ 2. 次のコードが表示されるので 4の所に 下の囲いのコードを入力する Private Sub tmrmove_tick (ByVal sender As Sy System.EventArgs) Handles tmrmove.tick 4 ここに入力する! ひこうきびょうが ' 飛行機の描画 Px += Dx : Py += Dy Gf.Clear(Color.Transparent) Gf.DrawImage(Bd, Px, Py) picdisp.refresh( ) ひこうきしたいろしゅとく ' 飛行機の下の色を取得 Dim X As Integer = Px + 21-4-
Dim Y As Integer = Py + 21 Dim C As Color = Bm.GetPixel(X, Y) ' 5 ここに入力する! If C = Color.FromArgb(255, 255, 255, 255) Then ' ゲームオーバー tmrmove.enabled = False MessageBox.Show("Game Over") btnstart.enabled = True Game = False ElseIf C = Color.FromArgb(255, 255, 0, 0) AndAlso Ps > 0 Then ' ゲームクリア tmrmove.enabled = False MessageBox.Show("Clear!!") btnstart.enabled = True Game = False ' 6 ここに入力する! ElseIf C = Color.FromArgb(255, 0, 0, 255) Then Ps = Ps Or 1 lblon.visible = True ElseIf C = Color.FromArgb(255, 0, 255, 0) Then Ps = Ps Or 2 lblgreen.visible = True ElseIf C = Color.FromArgb(255, 255, 255, 0) Then Ps = Ps Or 4 lblyellow.visible = True If Ps = 7 Then lblon.visible = True やじるしひこうきうごあおいろきいろみどりいろところじょうきゃくのあと これで 矢印キーで飛行機を動かし 青色か黄色か緑色のいずれかの所で乗客を乗せた後 あかいろところゆきんきゅうていし赤色の所に行くと ゴールできるようになった なお スペースキーで緊急停止ができる うえところしたかこ 3. 上の5の所に 下の囲いのコードを入力する lbltime.text = (Sw.ElapsedMilliseconds / 1000).ToString( ) けいかじかんが表示 これで 経過時間 ひょうじされるようになる うえところしたかこ 4. 上の6の所に 下の囲いのコードを入力する Dim S As Single = Single.Parse(lblHi.Text) * 1000 If Sw.ElapsedMilliseconds < S Then S = Sw.ElapsedMilliseconds lblhi.text = (S / 1000).ToString( ) -5-
Dim P As String = Application.StartupPath If Not P.EndsWith(" ") Then P &= " " Using Sw As StreamWriter = New StreamWriter(P & _ "hiscore.txt", False, System.Text.Encoding.Default) Sw.WriteLine(S) Sw.Close( ) End Using さいこうてんだきろくこうしん これで 最高点を出すと 記録更新されるようになる あおいろきいろみどりいろすべてところじょうきゃくのあとあかいろところゆ 5. 青色と黄色と緑色の全ての所で乗客を乗せた後でなければ 赤色の所に行ってもゴールにな よかんがらないようにするには どうすれば良いか考えなさい ふくすうめんつづ 複数面を続けてプレイできるようにする じしたかこへんこう 1. ゲームクリア時のコードを 下の囲いのコードに変更する へんこう ' ゲームクリア ここを変更 tmrmove.enabled = False Sw.Stop( ) MessageBox.Show("Clear") Cnt += 1 If Cnt > SHEETS Then MessageBox.Show("All Clear") Dim S As Single = Single.Parse(lblHi.Text) * 1000 If Sw.ElapsedMilliseconds < S Then S = Sw.ElapsedMilliseconds lblhi.text = (S / 1000).ToString( ) Dim P As String = Application.StartupPath If Not P.EndsWith(" ") Then P &= " " Using Sw As StreamWriter = New StreamWriter(P & _ "hiscore.txt", False, System.Text.Encoding.Default) Sw.WriteLine(S) Sw.Close( ) End Using Application.Exit( ) Bm = New Bitmap(Dir & "road" & Cnt.ToString( ) & ".bmp") Gb.DrawImage(Bm, 0, 0) picdisp.refresh( ) btnstart.enabled = True Game = False -6-