/* キャラクターの表示と移動 サンプルスクリプト ゲーム製作メモ http://minus273.s27.xrea.com/prog/ HSP3.0用 2005-08-26 作成開始。 2005-08-26 とりあえず完成。 */ ;ゲームを作るときに、いろんなジャンルで基本になるスクリプトです。 ;----------いろいろな設定など #define VER "1.00" #define SOFTNAME "キャラクターの表示と移動のサンプル" #define TITLEBAR SOFTNAME+" "+VER #define EXENAME "chara_move" #packopt type 0 #packopt name EXENAME #packopt runtime "hsp3c.hrt" #packopt hide 0 ;----------ウインドウの作成 screen 0,320,240 : title TITLEBAR ;----------初期化 *init ;主な変数の宣言 HSPではしなくてもいいけど ;したほうがあとから何の変数かわかりやすい chr_x=64 : chr_y=64 ;キャラクターの座標 chr_vx=0 : chr_vy=0 ;キャラクターの速度 chr_ax=0 : chr_ay=0 ;キャラクターの加速度 ;----------サンプルを選ぶ画面 *choice clrobj redraw 0 color 255,255,255 : boxf pos 8,160 : color 0,0,0 : mes "サンプルを選んでください" redraw 1 objsize 200,24 pos 8,180 : button "等速運動(主にRPG・STG用)",*main_simple pos 8,210 : button "加速度運動・重力あり(主にACT用)",*main_accel stop ;----------メインループ(等速運動) *main_simple await 17 ;1秒に60回くらいループする ;キー入力処理 stick ky,15 if ky&128 : end ;Escで終了 ;キー入力から速度を求める chr_vx=0 : chr_vy=0 if ky&1 : chr_vx -= 2 ;← if ky&2 : chr_vy -= 2 ;↑ if ky&4 : chr_vx += 2 ;→ if ky&8 : chr_vy += 2 ;↓ ;速度の分だけ座標に足す chr_x += chr_vx chr_y += chr_vy ;画面からはみ出ないよう制限 chr_x = limit(chr_x,0,304) chr_y = limit(chr_y,0,144) ;いろいろ描画 redraw 0 color 255,255,255 : boxf ;白で全体を塗りつぶす pos chr_x,chr_y : color 0,0,0 : mes "■" line 0,160,320,160 ;変数の内容を表示 pos 16,16 mes "chr_vx = "+chr_vx+" chr_vy = "+chr_vy mes "chr_x = "+chr_x+" chr_y = "+chr_y redraw 1 goto *main_simple ;----------メインループ(加速度運動) *main_accel await 17 ;1秒に60回くらいループする ;キー入力処理 stick ky,15 if ky&128 : end ;Escで終了 ;キー入力から速度を求める chr_ax=0 : chr_ay=0 if ky&1 : chr_ax -= 1 ;← if ky&4 : chr_ax += 1 ;→ if ky&2 : chr_vy -= 8 ;↑を押したらジャンプ ;加速度が大きくなりすぎないようlimit関数で制限 chr_ax = limit(chr_ax,-2,2) chr_ay = limit(chr_ay,-2,2) ;加速度の分だけ速度に足す chr_vx += chr_ax chr_vy += chr_ay + 1 ;+1は重力(重力は常にかかる) ;速度制限 chr_vx = limit(chr_vx,-8,8) chr_vy = limit(chr_vy,-8,8) ;速度の分だけ座標に足す chr_x += chr_vx chr_y += chr_vy ;画面からはみ出ないよう制限 chr_x = limit(chr_x,0,304) chr_y = limit(chr_y,0,144) ;いろいろ描画 redraw 0 color 255,255,255 : boxf ;白で全体を塗りつぶす pos chr_x,chr_y : color 0,0,0 : mes "■" line 0,160,320,160 ;変数の内容を表示 pos 16,16 mes "chr_ax = "+chr_ax+" chr_ay = "+chr_ay mes "chr_vx = "+chr_vx+" chr_vy = "+chr_vy mes "chr_x = "+chr_x+" chr_y = "+chr_y pos 220,200 : mes "※↑キーで\n ジャンプ" redraw 1 goto *main_accel