二十九歩目 あたり判定2

 
     では今回は ちょっと当たり判定から外れて画像をやります
     シューティングゲームのように 矢印のボタンを押すと絵が動く というのをやってみましょう
     その前に絵が必要だから十七歩 絵の取り入れにある あのへたな絵を使いますのでね
     
     まずは 絵を表示する方法を忘れた人がいるのではないでしょうか?
     忘れた人は 二十七歩二十八歩を読みなおしてくださいφ(@@)
     ではまず 絵の取り入れからいくぞー
 

	
	buffer 2		;仮想画面 ID2を作る
	picload "zyuunana-1.bmp";画像をロードする
	gsel 0,1		;ウインドウ0を 描画先にする
	gcopy 2			;ID2のウインドウから 今の描画先へ画像を転送する
	stop			;止まる

     これはOKだよな でも一応説明しとくか
     buffer 2で 仮想画面(パソコンの画面に出てこないウインドウ)のID2を作る
     picload "zyuunana-1.bmp" は zyuunana-1.bmpというファイルを
       今の描画先(または描画ウインドウという)にロードする
       この場合 仮想画面ID2に描かれる
     gsel 0,1 でウインドウID0のウインドウを描画先に指定しています
       だから今度からprint 命令なんかで描かれるものは
       すべてウインドウ0に描かれます
     gcopy 1 でID2のウインドウ(ID2の仮想画面)に表示されている
       画像(この場合zyuunana-1.bmpが描かれている)
       今の描画先のウインドウへ転送します
       つまりzyuunana-1.bmpがウインドウ0に描かれます
     stop で止まります
 
     とまぁ これでウインドウ0に絵が描かれますが
     移動はしてくれませんね どうすれば良いでしょうか?
     まず繰り返さないといけませんね 画像を動かすんですから
      それからgetkeyやstickで キーが押されているかチェックもしないとね
     でキーが押されていたら画像を動かすようにしよう
        ではまず繰り返して画像を表示するところから↓

	
	buffer 2		;仮想画面 ID2を作る
	picload "zyuunana-1.bmp";画像をロードする
	gsel 0,1		;ウインドウ0を描画先にする

	repeat			;繰り返しの始め
	redraw 2		;画面には描画しない
	color 0,0,0:boxf	;黒で画面を塗りつぶす
	gcopy 2			;ID2のウインドウから 今の描画先へ画像を転送する
	redraw 1		;一気に描画
	wait 1			;待つ
	loop			;repeatヘ戻る

     はぁ・・・はぁ・・・ なんか疲れたなぁ 最近ちょっといそがしくて・・・・・というのはうそです
     さぁ説明には入ろう
     repeat で繰り返しの始めだな
     redraw 2 でココからredraw 1が実行されるまで画面には何も表示されなくなる
     color 0,0,0:boxf で 黒で画面を塗りつぶします
     gcopy 2 でID2のウインドウに描かれているものを 今の描画先(ウインドウ0)に
       転送する
     redraw 1 でredraw 2で描かれなかった部分を一気に描画する
     wait 1 で待って
     loop repeatヘ戻る
 
     これで パチパチ無しでへたなロケットが真っ黒なウインドウの左上に
     ちょこんとさびしく映ってるな
     
     よし 次はそのロケットの位置を矢印のキーを押すことで
     移動するようにしよう

	
	buffer 2		;仮想画面 ID2を作る
	picload "zyuunana-1.bmp";画像をロードする
	gsel 0,1		;ウインドウ0を描画先にする

	repeat			;繰り返しの始め
	redraw 2		;画面には描画しない
	color 0,0,0:boxf	;黒で画面を塗りつぶす
	stick key,1+2+4+8	;keyという変数に 押されているキー番号を入力
	if key=1:x=x-5		;keyが1だったらxから5を引いてxに入力
	if key=2:y=y-5		;keyが2だったらyから5を引いてyに入力
	if key=4:x=x+5		;keyが4だったらxから5を足してxに入力
	if key=8:y=y+5		;keyが8だったらyから5を足してyに入力
	pos x,y			;x,yの位置に
	gcopy 2			;ID2のウインドウから 今の描画先へ画像を転送する
	redraw 1		;一気に描画
	await 1			;待つ
	loop			;repeatヘ戻る

     ただ画像を動かすだけなのに 長いプログラムだなぁ・・・
     さぁせつめいじゃ ほっほっほっほっ
     stick key,1+2+4+8 は keyという変数に押されているキーのキー番号を
       入力してくれますが 前にstickの紹介をした時に言った通り
       stick はキーが押された瞬間だけしかキー番号を変数に入れてくれないので
       keyの後ろに ずーっと押されている間は押されてるキーのキー番号を
       変数に入れ続けるように そうしてほしいキー番号を書きます
       この場合 1と2と4と8(矢印のキーの番号)ですので それぞれ足した数字を書いときます
       これで矢印キーはどれも 押されている間は ずーっとキー番号が変数に入りつづけます
     if 達で それぞれキーが押されたら 押されたキーによって
       変数を足したり引いたりします
       例えば 上向きの矢印キーを押したら Xの変数から5を引く  とか
     pos x,y で横はx 縦はy の座標に画像がロードできるようにします
       つまりこの位置がロケットの位置になるのです
       もちろんxyはキーを押すことによって増えたり減ったり つまり
       ロケットが上に行ったり 右へ行ったりと動きます
     await 1 はwait 1ではロケットの動きが ぎこちないので ちょっと速くしたのです
 
     どうです? なんとなくかっこいいと思うのは 僕だけでしょうね・・・多分・・・
     でもこれが シューティングゲームの基本のようなもんじゃよ
     
     とある人・・・「最近 俺の登場が少なくねぇか?」
     オヤブン・・・「そうか?」
     とある人・・・「ギャラ(出演料)くれーーーー」
     オヤブン・・・「他の仕事さがしな」
     とある人・・・「就職難で・・・うう・・・家には女房二人に子供が一人・・・」
     オヤブン・・・「浮気かよ!」
 

戻る コウザへ ホームへ 次へ