[目次へ][前へ][次へ][表紙へ]
 スカッシュ・ゲームを作ろう その1(2/2)

 5.バーの移動

 矢印キーの左右でバーを動かします。一度に8ドット動かすことにします。

	;
	;メイン・ループ
	;
*Main_Loop
	await 16
	;バーの移動
	getkey key, 37
	if key == 1 { bar_x -= 8 }
	getkey key, 39
	if key == 1 { bar_x += 8 }
	if bar_x < 0 { bar_x = 0 }
	if bar_x > 576 { bar_x = 576 }

キーコード

←キー 37
→キー 39

 ←キーが押されていたらbar_xから8引きます。→キーが押されていたらbar_xに8足します。
 bar_xが0より小さくなったら強制的に0にし、バーが左端より左に行かないようにします。右端についても同様で、bar_xが576(= 640 - 64)より大きくなったら強制的に576にします。
 なお、←キと→キーを同時に押した場合は相殺されてどちらにも動きません。

 6.画面の更新
	;
	;画面の更新
	;
	redraw 0
	gosub *Clear_Screen
	;バーの描画
	pos bar_x, bar_y
	gmode 2
	celput 1
	redraw 1
	
	goto *Main_Loop

 画面をクリアし、自機を描きます。
 あとは*Main_Loop行に戻って繰り返しです。


 まとめますと、以下の通りです。

	;
	;プログラム実行時の初期設定
	;
	
	screen 0, 640, 480
	title "SQUASH"
	gsel 0
	gosub *Clear_Screen
	
	;仮想画面に絵を読み込む
	celload "graphics\\bar.bmp", 1

	;
	;タイトル画面
	;
*Title_Screen
	gosub *Clear_Screen
	pos 200, 128
	color 255, 255, 0
	font "MS 明朝", 72
	mes "SQUASH"
	msx = 256 : msy = 480 - 48
	message = "PUSH Z KEY"
	gosub *Write_Message
*Input_Z
	await 16
	getkey key, 90
	if key == 0 { goto *Input_Z }
	
	;
	;ゲームスタート時の初期設定
	;
	
	;バーの座標
	bar_x = (640 - 64) / 2
	bar_y = 480 - 48
	
	;
	;メイン・ループ
	;
*Main_Loop
	await 16
	;バーの移動
	getkey key, 37
	if key == 1 { bar_x -= 8 }
	getkey key, 39
	if key == 1 { bar_x += 8 }
	if bar_x < 0 { bar_x = 0 }
	if bar_x > 576 { bar_x = 576 }
	
	;
	;画面の更新
	;
	redraw 0
	gosub *Clear_Screen
	;バーの描画
	pos bar_x, bar_y
	gmode 2
	celput 1
	redraw 1
	
	goto *Main_Loop

	;画面のクリア
*Clear_Screen
	color 0, 0, 0
	boxf 0, 0, 639, 479
	return

	;メッセージの表示
*Write_Message
	;msx,msy	: 表示する座標
	;message	: メッセージの内容
	pos msx, msy
	color 255, 255, 255
	font "MS 明朝", 16
	mes message
	return

[サンプルをダウンロード]


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