HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0823
ZERO画面のスクロール2解決


ZERO

リンク

2016/8/23(Tue) 04:00:49|NO.76700

HSP3の質問です
飛行機を飛ばすゲームを作ろうとしています



;実際の画面より小さい画面を表示しました
screen 0,1200,1200,0,,,600,600;自機のスタート位置を指定しました
x = 300.0
y = 500.0
;自機の速さです
vx = 0.0
vy = 0.0

*main

;自機を表示します
pos x-16,y-16 ;表示する座標です

;キーボード入力の情報です
stick key,15 ;15は斜めも入力できる
if(key & 1) : vx = vx-0.01
if(key & 2) : vy = vy-0.01
if(key & 4) : vx = vx+0.01
if(key & 8) : vy = vy+0.01

;速度を自機の座標に加えます
x = x + vx
y = y + vy


;画面をスクロールします(ここがわかっていません)

groll ginfo_vx,ginfo_vy

;画面がスクロールしているか確認するためにいったん書きます

line 0,0,60,60

goto *main



僕がしたいのは、一部しか見えていない広いフィールドを、自機を画面の真ん中に置いたまま、画面をスクロールしながら動かすということです。プログラムはだいぶ省いて書きました。そのためには grollとginfoをどのように使えばよいのか教えて下さい。



この記事に返信する


MillkeyStars

リンク

2016/8/23(Tue) 05:17:24|NO.76701

使い方サンプル

screen 0,1200,1200,0,,,400,400 /// 背景を描く color 128,128,128 repeat 30 y = cnt repeat 30 x = cnt if ((y\2) = 0){ color 128,128,128 boxf (x * 80) ,(y * 40),(x * 80) + 40,(y * 40) + 40 color 0,0,0 boxf (x * 80) + 40 ,(y * 40),(x * 80) + 80,(y * 40) + 40 } else { color 0,0,0 boxf (x * 80) ,(y * 40),(x * 80) + 40,(y * 40) + 40 color 128,128,128 boxf (x * 80) + 40 ,(y * 40),(x * 80) + 80,(y * 40) + 40 } loop loop /// 背景の描き終わり PosX = 400 //初期のスクロール左上横座標 (ginfo(8) と同等) PosY = 400 //初期のスクロール左上縦座標 (ginfo(9) と同等) groll PosX,PosY //初期のビュー座標変更 *main await 10 stick ki,15,1 //↓正しく解釈できなくなるので、変な書き方です。 if ((ki&1) ! 0)&(PosX > 0) : PosX-- : groll PosX,PosY if ((ki&2) ! 0)&(PosY > 0) : PosY-- : groll PosX,PosY if ((ki&4) ! 0)&(PosX < 800) : PosX++ : groll PosX,PosY if ((ki&8) ! 0)&(PosY < 800) : PosY++ : groll PosX,PosY PlayerX = PosX + 200 //プレイヤーの中央座標の更新 PlayerY = PosY + 200 // 〃 title "BGX : "+ginfo(8)+" / BGY : "+ginfo(9)+" | PlayX : "+PlayerX+" / PlayY : "+PlayerY goto *main

なお、スクロールの座標の変更はすべて整数 1単位です。
実数を groll に渡そうとしても、すべて整数に変換されますのでご注意ください。



ZERO

リンク

2016/8/28(Sun) 22:16:03|NO.76733

ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.