UFOゲームの制作 VB6 | |
(4) タイマーによる処理 |
1. ゲームのメインルーチン
メインルーチン(ゲーム中の処理)は、(a) 敵・UFO移動、自機弾・敵弾移動、(b)
敵弾発射、(c) UFO発生(出現)、(d) 弾当たり判定(敵爆破と自機爆破)、(e)
ゲームオーバー判定、などの処理をタイマーで一定時間ごとに実行する。
各処理を一カ所に書くと見にくくなるのでそれぞれプロシージャとして作成し、タイマーのサブプロシージャから呼び出すことにする。
・プログラム処理概要
Private Sub Timer1_Timer() 'ゲームのメイン処理 '自機弾移動処理 '敵移動処理 '敵弾発射と敵弾移動処理 'UFO出現とUFO移動処理 '当たりの判定 '爆破図表示 'ゲームオーバー判定 'ゲームクリア判定 End Sub
ここで示した処理(プロシージャ)の分け方は一例であるが、この形でプログラムを進めていくことにする。
2. 自機弾移動処理
自機弾imgTama1はコントロール配列でimgTama1(0), imgTama1(1),・・・,imgTama1(MaxTama)のようにMaxTama個用意している。発射された自機弾はVisibleプロパティがTrue、発射されていなければFalseとなっている。自機弾をウィンドウの下から上へ移動させるには、自機弾のTopプロパティの値を減らしていけばよい。
自機弾移動の処理はサブプロシージャIdouとして作成する。
・プログラムリスト
Private Sub Timer1_Timer() 'ゲームのメイン処理 Idou '自機弾移動処理 '敵移動処理 '敵弾発射と敵弾移動処理 'UFO出現とUFO移動処理 '当たりの判定 '爆破図表示 'ゲームオーバー判定 'ゲームクリア判定 End Sub Private Sub Idou() '自機弾 移動処理 Dim n As Integer For n = 0 To MaxTama '自機弾数(MaxTama個分)を調べる If imgTama1(n).Visible = True Then '自機弾表示ONのものだけ imgTama1(n).Top = imgTama1(n).Top - Dy * 4 '4倍の早さで移動 If imgTama1(n).Top < 0 Then '自機弾最上部到達 imgTama1(n).Visible = False '自機弾表示OFF End If End If Next n End Sub
自機弾の移動スピード(移動間隔)は基準移動量Dyの4倍としている。
実行してスペースキーを押すと自機弾(赤色)が自機から発射される。ただし、ウィンドウ上には最大3発だけしか現れない。
(4) タイマーによる処理 | |
Copyright © 2002 Hiroshi Masuda |