LoginSignup
2
1

More than 3 years have passed since last update.

HSP3で簡単なアクション作ってみた

Last updated at Posted at 2019-07-10

本当に簡易的で説明も下手なので参考にもならないと思います。

コード

main.hsp
screen 0,320,240 //画面初期化
x=0 //変数初期化ここから
y=0
dim hit,60,17
atr=0
stg=0
sizx=60
sizy=17 //変数初期化ここまで
//マップデータ
map(0) ="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000001111111000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="000000000000000000000000000000000000000000000000000000000000"
map(0)+="111111111111111000111111111110111111111111111111111111111111"
map(0)+="111111111111111000111111111110111111111111111111111111111111"
map(0)+="111111111111111000111111111110111111111111111111111111111111"
//地面描画処理ここから
buffer 3
repeat sizy//Yサイズの数だけ繰り返す
bgy=cnt//bgy変数にY方向の繰り返し回数を代入
repeat sizx//Xサイズの数だけ繰り返す
bgx=cnt//bgx変数にX方向の繰り返し回数を代入
drw=strmid(map(0),bgy*sizx+bgx,1)//drw変数に現在位置の文字列をmap変数から読み出し
//atr変数は当たり判定です
//str_map変数は描画する文字です
if drw="0" {str_map=" ":atr=0}
if drw="1" {str_map="B":atr=1}
hit(bgx,bgy)=atr//当たり判定を設定
//描画ここから
pos bgx*8,bgy*16
color 255,0,255
mes str_map
//描画ここまで
loop
loop
gsel 0
//地面描画処理ここまで

repeat //永遠に繰り返す
redraw 0
stick stk,15//stk命令にキー入力を代入
color 0,0,0//背景色
boxf//背景
color 255,255,255//透過色
gmode 4,0,0,255//透過モード
pos 0,0//左端に設定
gcopy 3,bx,0,320,240//地面コピー
pos x,y//場所指定
mes "A"//A(プレイヤー)を描画
y=y+1//重力
vx=0//Xの進む量
if (y/16+1)>16 :break//落ちたら終了
if hit((x+bx)/8,y/16+1)=1 :y=y-1//地面があったら重力に抵抗する
if stk&16  {
    if j=0 :j=64//ジャンプしていなければジャンプ
}
if j!0 :j=j-1:y=y-2//ジャンプ中なら浮かせる
if stk&1 :vx=-1//左に入力中なら移動量を-1にする
if stk&4 :vx=1//右に入力中なら移動量を1にする
if x>160 :bx=bx+1:x=x-1//Xが160以上になったらスクロール
x=x+vx//移動量を追加
if x<0 :x=0//画面外に出たら戻す
redraw 1
await 10
loop
end

実行結果

image.png

初投稿なのでこれだけで許してください...

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1