[目次へ][前へ][次へ][表紙へ]
 シューティングゲームを作ろう その2

 2.プログラム実行時の初期設定
	#include "hmm.as"
	
	;
	;プログラム実行時の初期設定
	;
	#define GWIDTH 480		;ゲーム画面の幅
	#define GHEIGHT 480		;ゲーム画面の高さ
	#define ENEMAX 64		;敵の最大数
	#define ESHOTMAX 100	;敵の弾の最大数

	chgdisp 1
	bgscr 0, 640, 480, 0, 0, 0
	gsel 0, 2
	gosub *Clear_Screen

	;仮想画面に絵を読み込む
	celload "graphics\\size32.bmp", 1
	celdiv 1, 32, 32
	celload "graphics\\size64.bmp", 2
	celdiv 2, 64, 64
	celload "graphics\\size16.bmp", 3
	celdiv 3, 16, 16
	
	randomize

	dim enemy_x, ENEMAX
	dim enemy_y, ENEMAX
	dim enemy_dx, ENEMAX
	dim enemy_dy, ENEMAX
	dim enemy_state, ENEMAX	;0:存在しない 1:通常 2:爆発中
	dim enemy_kind, ENEMAX
	dim enemy_phase, ENEMAX
	dim enemy_cnt, ENEMAX
	dim eneexplode_cnt, ENEMAX
	dim eshot_x, ESHOTMAX
	dim eshot_y, ESHOTMAX
	dim eshot_dx, ESHOTMAX
	dim eshot_dy, ESHOTMAX
	dim eshot_f, ESHOTMAX
	
	zkey = 0
	upkey = 0
	downkey = 0

	dsinit
	diinit
	digetjoynum
	n_joy = stat
	
	hiscore = 5000
	
	;効果音を読み込む
	dsloadfname "sound\\tm2_shoot003.wav", 0	;ショット音
	dsloadfname "sound\\tm2_bom001.wav", 1		;敵の爆破音
	dsloadfname "sound\\bom01.wav", 2			;自機の爆破音

	;BGMファイルを開く
	mci "open sound\\rbutai_xg.mid alias bgm"
	mci "set bgm time format milliseconds"



	#define ESHOTMAX 100	;敵の弾の最大数

 敵の弾は最大100発まで存在できるものとします。

 本ゲームの画面はフルスクリーンモードとします。

	chgdisp 1

 フルスクリーンモードにします。

	bgscr 0, 640, 480, 0, 0, 0

 枠がないウィンドウを作ります。
 第1引数はウィンドウIDで、第2、第3引数は画面の大きさです。第4引数は画面モードで、0だとフルカラー(すべての色が使える)で、1だとパレットモード(256色しか使えない)です。第5、第6引数はウィンドウを配置するx座標、y座標で、通常は0を指定します。

	gsel 0, 2

 第2引数に2を指定すると、第1引数で指定したウィンドウが常に最前面に表示されます。

 要は、フルスクリーンモードにするには

	chgdisp 1
	bgscr 0, 640, 480, 0, 0, 0
	gsel 0, 2

 とする、ということです。なお、ウィンドウモードにするには

	chgdisp
	screen 0, 640, 480
	gsel 0, 1

 とします。

	;仮想画面に絵を読み込む
	celload "graphics\\size32.bmp", 1
	celdiv 1, 32, 32
	celload "graphics\\size64.bmp", 2
	celdiv 2, 64, 64
	celload "graphics\\size16.bmp", 3
	celdiv 3, 16, 16

 size32.bmp、size64.bmp、size16.bmpはそれぞれ32×32、64×64、16×16の絵が並んだ画像です。


size32.bmp


size64.bmp


size16.bmp

	dim enemy_x, ENEMAX
	dim enemy_y, ENEMAX
	dim enemy_dx, ENEMAX
	dim enemy_dy, ENEMAX
	dim enemy_state, ENEMAX	;0:存在しない 1:通常 2:爆発中
	dim enemy_kind, ENEMAX
	dim enemy_phase, ENEMAX
	dim enemy_cnt, ENEMAX
	dim eneexplode_cnt, ENEMAX

 敵の配列変数です。
 enemy_x、enemy_yは敵の座標です。enemy_dx、enemy_dyは、一度にx方向、y方向に動くドット数です。enemy_stateは敵の状態です。0なら存在しない、1なら通常の状態、2なら爆発中であることを表します。
 enemy_kindは敵の種類、enemy_phaseは現在どの段階にあるか、enemy_cntは弾発射用カウンタ、eneexplode_cntは敵の爆発用カウンタです(詳細は後述)。

	dim eshot_x, ESHOTMAX
	dim eshot_y, ESHOTMAX
	dim eshot_dx, ESHOTMAX
	dim eshot_dy, ESHOTMAX
	dim eshot_f, ESHOTMAX

 敵の弾用配列です(eはenemyの略です)。
 eshot_x、eshot_yは弾の座標です。eshot_dx、eshot_dyは、一度にx方向、y方向に動くドット数です。eshot_fは弾の存在フラグです。

	zkey = 0
	upkey = 0
	downkey = 0

「キー、ジョイパッドの入力」サブルーチンで、

	pre_zkey = zkey
	pre_upkey = upkey
	pre_downkey = downkey

 としています。そのため、最初にこのサブルーチンを呼ぶ時に、zkey、upkey、downkeyの初期値が必要です。便宜的に0としています。


[目次へ][前へ][次へ][表紙へ] inserted by FC2 system