神奈川県立川崎北高等学校 情報科 「アルゴリズム」
ドライブゲームを作ろう!
 
2004,2,4更新
【学習のねらい】
(1) 実習に興味関心を持ち、積極的に実習を行おうとする。(関心・意欲・態度)
(2) プログラムの手順を考え、分岐、判断などの処理を組み立てることができる。(思考・判断)
(3) 操作しやすいインターフェース、オリジナルのキャラクターなどを作成することができる。(技能・表現)
(4) 座標、関数、コマンドなどを理解し、コードを作成、アレンジすることができる。(知識・理解)
【指導計画】
背景、キャラクターのデザイン(1h)
背景の移動、キャラクターの操作(1h)
敵キャラクターの動き(1h)
衝突の判定、得点(1h)
【解説】
最も単純なシューティングゲームを作成し、座標、画像の移動、判定などを学びます。自作のキャラクターが自作の背景の前で動くゲームに生徒は大喜びでした。
【学習の内容】
(1)キャラクターを作成する
メインキャラクター(自分で操作できるキャラクター)と敵キャラクターをペイントなどで作成します。キャンバスのサイズは30×50ピクセル程度にしてみました。
  
(2)背景を作成する
ペイントなどで作成します。キャンバスのサイズを100ピクセル×1000ピクセルに設定し、BMPまたはGIF形式で保存します。右のサンプルを参考にして下さい。
(3)コントロールの配置
command1〜スタートボタン
command2〜ストップボタン
command3〜左移動ボタン
command4〜右移動ボタン
timer1
picture1〜窓
picture2〜背景貼りつけ(picture1の内部に作成)
picture3〜メインキャラクター貼りつけ(picture1の内部に作成)
(4)プロパティの設定
timer1
・interval=10

picture1〜3
・Autosize=true
(5)コーディング

(6)自己評価〜改善
【作品例】


↑画像をクリックするとダウンロードできます。(road2003.exe 56KB)
【生徒の作品】

milkloverさんの作品

tonoさんの作品

0510さんの作品





【ダウンロード】


Dim x, y, z, dx, dy As Single
Dim p As Integer
Private Sub Command1_keydown(keycode As Integer, shift As Integer)
If keycode = 104 Then dy = -15
If keycode = 98 Then dy = 15
If keycode = 100 Then dx = -15
If keycode = 102 Then dx = 15
End Sub

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
dx = -15
End Sub
Private Sub Command3_Click()
dx = 15
End Sub

Private Sub Command4_Click()
dx = 0
dy = 0
End Sub

Private Sub Command5_Click()
dy = -15
End Sub

Private Sub Command6_Click()
dy = 15
End Sub

Private Sub Form_Load()
p = 1000
End Sub

Private Sub Timer1_Timer()
'--------------------赤のクルマの動き--------------------
Picture3.Move Picture3.Left + dx, Picture3.Top + dy
If Picture3.Left < 0 Then Picture3.Left = 0
If Picture3.Left > Picture1.Width - Picture3.Width Then Picture3.Left = Picture1.Width - Picture3.Width
If Picture3.Top < 0 Then Picture3.Top = 0
If Picture3.Top > Picture1.Height - Picture3.Height Then Picture3.Top = Picture1.Height - Picture3.Height

'--------------------黄色のクルマの動き--------------------
If Picture5.Top < -1000 Then Picture5.Top = 5000
If Picture5.Top > 5000 Then Picture5.Top = 1000
Picture5.Move (Picture5.Left + 1) Mod 2000, (Picture5.Top - 10) Mod 20000

'--------------------青のクルマとセンターラインの動き-----------------
For i = 0 To 3
If Shape1(i).Top > 5000 Then Shape1(i).Top = -2000
Shape1(i).Move Shape1(i).Left, (Shape1(i).Top + 70) Mod 5000
If Picture4(i).Top > 5000 Then Picture4(i).Top = -2000
Picture4(i).Move Picture4(i).Left + Rnd * 50 - 25, (Picture4(i).Top + 30 + Rnd * 10 * i) Mod 15000
xx = Picture4(i).Left - Picture3.Left
yy = Picture4(i).Top - Picture3.Top
If xx < 450 And xx > -450 And yy < 750 And yy > -750 Then
p = p - 1: Shape2.Width = p * 4: Picture3.Move Picture3.Left, Picture3.Top + 100
End If
Next i
End Sub
TOPページへ戻る