|
|
2021/7/29(Thu) 12:42:41|NO.93356
UNDERTALEみたいなのを作りたい
ただそれだけ。
|
|
2021/7/29(Thu) 20:47:10|NO.93362
あの、失礼ですが、
何個も何個も登校するのが悪いとは思ってないですけど、
自分の投稿に対して返答があったのにそれを無視して
新しい投稿をするのは如何なものかと思います...
返答をくれた方に対して失礼じゃないでしょうか
|
|
2021/7/30(Fri) 14:24:53|NO.93376
どの部分が作れないかぐらい言え
|
|
2021/8/2(Mon) 07:28:04|NO.93433
えっと、
・枠からハートが出ないところ
・敵の攻撃
・HPバー
かなぁ
|
|
2021/8/2(Mon) 17:50:31|NO.93440
枠からハートが出ないところというのは壁の当たり判定が欲しいってことかな?
大雑把すぎてどこから説明すればいいのか...
HSP3付属のサンプル見て勉強してからもう一度挑戦する事をオススメします。
|
|
2021/8/2(Mon) 21:15:51|NO.93448
ひとまず、「 http://hsp.tv/play/pforum.php?mode=about」
こちらリンク先の「HSP3掲示板の使い方」の下にある「投稿時の注意」、
7番と6番を読んでおきましょう。
三つとも、それがどうしたのか、全く分からず、
他の方が言っている通り、何から答えればいいのかわかりません。
例えば、
「HPバーを作りたいが、HPが減った時、HPバーに反映されず困ってます」
のような出来る限り具体的な内容に、
その状態を再現できる簡潔なスクリプトがあれば尚スムーズに話が進みます。
また、スクリプトは今作っている全てではなく、
再現できる最低限のものが良いです。(長すぎるとそれを見るのも大変なため)
|
|
2021/8/4(Wed) 09:40:47|NO.93463
>>93440
そうします、ありがとうございました
|
|
2021/8/4(Wed) 10:05:44|NO.93464
ハートが枠から出ないようにするコード
celload "heart.png"
heart=stat
mx=300 ; X座標
my=300 ; Y座標
msp=2 ; スピード
*main
redraw 0 ; 描画始め
cls
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
redraw 1 ; 描画終わり
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
if mx<=196:mx=mx+2
if mx>=375:mx=mx-2
if my<=197:my=my+2
if my>=377:my=my-2
goto *main
最初はtamane_jump.hspが役に立つと思ったんだけど、keymove.hspの方が役に立ったね
|
|
2021/8/4(Wed) 18:27:59|NO.93468
>>93464
を少し改造して骨が流れてmx=0になったときに骨がまた流れてくるようにしました
celload "heart.png"
heart=stat
celload "bone.png"
bone=stat
*l
mx=300 ; X座標
my=300; Y座標
msp=3 ; スピード
hp=10
*bone2
mx2=500
randomize
my2=rnd(351)
if my2<=200:goto *bone2
*main
redraw 0 ; 描画始め
cls 4
color 255,255,255
mes hp
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
mx2=mx2-10
pos mx2,my2
celput bone
color 200,20,0
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
redraw 1 ; 描画終わり
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
if mx<=196:mx=mx+3
if mx>=375:mx=mx-3
if my<=197:my=my+3
if my>=377:my=my-3
if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1
if hp=0:goto *gameover
if mx2=0:goto *bone2
goto *main
*gameover
goto *l
|
|
2021/8/4(Wed) 18:30:26|NO.93470
>>93468
欠点
画像ファイルがなければいけない
骨に当たると最初から()
(最初からっていう概念あるっけ)
|
|
2021/8/4(Wed) 18:43:46|NO.93472
>>93468
を改造してHPの位置を調整し敵を表示させるようにしました
*l
mx=300 ; X座標
my=300; Y座標
msp=3 ; スピード
hp=100
*bone2
mx2=500
randomize
my2=rnd(351)
if my2<=200:goto *bone2
*main
redraw 0 ; 描画始め
cls 4
color 255,255,255
pos 100,410
mes hp
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
mx2=mx2-10
pos mx2,my2
celput bone
pos 200,0
celput ske
color 200,20,0
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
redraw 1 ; 描画終わり
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
if mx<=196:mx=mx+3
if mx>=375:mx=mx-3
if my<=197:my=my+3
if my>=377:my=my-3
if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1
if hp=0:goto *gameover
if mx2=0:goto *bone2
goto *main
*gameover
goto *l
|
|
2021/8/4(Wed) 18:55:55|NO.93473
・redraw 0とredraw 1の間にclsを挟むと意味がなくなる。ちらついている
redraw 0 ~ redraw 1内には描画処理のみ行い、キー入力処理、プレイヤーの移動などの処理は外部に書いたほうが管理しやすい
・壁の形状はシンプル(四角形)なので、壁によるプレイヤーキャラの座標の制限はlimitを使うと便利
・インデントは見やすくする。コードによくわからないインデントが目立つ
p_sizex = 16 // プレイヤーXサイズ
p_sizey = 16 // プレイヤーYサイズ
mx = 300 // プレイヤーX座標
my = 350 // プレイヤーY座標
msp = 4 // プレイヤー移動速度
x1 = 200 // 左の壁のX座標
x2 = 400 // 右の壁のX座標
y1 = 300 // 上の壁のY座標
y2 = 450 // 下の壁のY座標
*main
stick key, 1+2+4+8 // キー入力
if (key & 1) : mx -= msp
if (key & 2) : my -= msp
if (key & 4) : mx += msp
if (key & 8) : my += msp
mx = limit(mx, x1, x2 - p_sizex) // プレイヤーのX座標を壁内に制限
my = limit(my, y1, y2 - p_sizey) // プレイヤーのY座標を壁内に制限
redraw 0 // 描画
color 0, 0, 0 : boxf // 背景の塗りつぶし
color 255, 0, 0
boxf mx, my, mx + p_sizex, my + p_sizey // プレイヤーの描画
color 255, 255, 255
pos x1, y1
line x2, y1 : line x2, y2 : line x1, y2 : line x1, y1 // 壁の描画
redraw 1
await 1000/30
goto *main
|
|
2021/8/4(Wed) 19:07:42|NO.93474
#include "hsp3util.as"
text 100
gsel 0,-1
screen 1
*ll
onkey 0
emes "おちたニンゲンに なまえをつけてください"
name=""
input name,100,20
button "OK",*ok
repeat
if name="がすたー" or name="ガスター" or name="Gester" :end
await 10
loop
*ok
if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele
*start
gsel 1,-1
screen 0
celload "heart.png"
heart=stat
celload "bone.png"
bone=stat
celload "ske.png"
ske=stat
*l
story1=0
story2=0
time=0
mx=300 ; X座標
my=300; Y座標
msp=3 ; スピード
hp=100
*bone2
mx2=500
randomize
my2=rnd(351)
if my2<=200:goto *bone2
*main
redraw 0 ; 描画始め
cls 4
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
mx2=mx2-10
pos mx2,my2
celput bone
pos 200,0
celput ske
color 200,20,0
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
color 255,255,255
pos 100,410
mes name,1
mes " HP:",1
mes hp,1
mes " ",1
if story1=0:emes "このよのおわりだ":story1=1
if story2=0 and story1=1 and time=300:emes "とめられるのはぼくしかいない":story2=1
if story1=1 and story2=0:mes "このよのおわりだ"
if story2=1 and story3=0:mes "とめられるのはぼくしかいない"
redraw 1 ; 描画終わり
time=time+1
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
if mx<=196:mx=mx+3
if mx>=375:mx=mx-3
if my<=197:my=my+3
if my>=377:my=my-3
if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1
if hp=0:goto *gameover
if mx2=0:goto *bone2
goto *main
*gameover
goto *l
*skele
onkey 1
emes "いまから たたかう モンスターの なまえ。"
onkey goto *ll
stop
UNDERTALEっぽくしてみた
| |
|
2021/8/4(Wed) 19:15:11|NO.93475
>>93473
を参考にしました、本当にありがとうございます
#include "hsp3util.as"
text 100
gsel 0,-1
screen 1
*ll
onkey 0
emes "おちたニンゲンに なまえをつけてください"
name=""
input name,100,20
button "OK",*ok
repeat
if name="がすたー" or name="ガスター" or name="Gester" :end
await 10
loop
*ok
if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele
*start
gsel 1,-1
screen 0
celload "heart.png"
heart=stat
celload "bone.png"
bone=stat
celload "ske.png"
ske=stat
*l
story1=0
story2=0
time=0
mx=300 ; X座標
my=300; Y座標
msp=3 ; スピード
hp=100
*bone2
mx2=500
randomize
my2=rnd(351)
if my2<=200:goto *bone2
*main
redraw 0 ; 描画始め
color 0,0,0:boxf
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
mx2=mx2-10
pos mx2,my2
celput bone
pos 200,0
celput ske
color 200,20,0
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
color 255,255,255
pos 100,410
mes name,1
mes " HP:",1
mes hp,1
mes " ",1
if story1=0:emes "このよのおわりだ":story1=1
if story2=0 and story1=1 and time=300:emes "とめられるのはぼくしかいない":story2=1
if story1=1 and story2=0:mes "このよのおわりだ"
if story2=1 and story3=0:mes "とめられるのはぼくしかいない"
redraw 1 ; 描画終わり
time=time+1
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
kekkax=limit(mx,192,375)
kekkay=limit(my,197,377)
if kekkax=192:mx=mx+3
if kekkax=375:mx=mx-3
if kekkay=197:my=my+3
if kekkay=377:my=my-3
if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1
if hp=0:goto *gameover
if mx2=0:goto *bone2
goto *main
*gameover
goto *l
*skele
onkey 1
emes "いまから たたかう モンスターの なまえ。"
onkey goto *ll
stop
| |
|
2021/8/4(Wed) 19:15:58|NO.93476
その代わりもっさり
|
|
2021/8/4(Wed) 19:24:44|NO.93477
めっちゃ変更
・うざいからストーリー削除。→ただのよけゲーに
・inputの最大入力数を6に。
#include "hsp3util.as"
text 100
gsel 0,-1
screen 1
*ll
onkey 0
emes "おちたニンゲンに なまえをつけてください"
name=""
input name,100,20,6
button "OK",*ok
repeat
if a=6:goto *ok
if name="がすたー" or name="ガスター" or name="Gester" :end
await
loop
*ok
if name="スケルトン" or name="すけるとん" or name="Skeleton":goto *skele
*start
gsel 1,-1
screen 0
celload "heart.png"
heart=stat
celload "bone.png"
bone=stat
celload "ske.png"
ske=stat
*l
story1=0
story2=0
time=0
mx=300 ; X座標
my=300; Y座標
msp=3 ; スピード
hp=100
*bone2
mx2=500
randomize
my2=rnd(351)
if my2<=200:goto *bone2
*main
redraw 0 ; 描画始め
color 0,0,0:boxf
gmode 2 ; 透明色ありの指定
pos mx,my ; 表示位置の設定
celput heart ; 画像コピー
mx2=mx2-10
pos mx2,my2
celput bone
pos 200,0
celput ske
color 200,20,0
line 200,200,200,400
line 400,200,400,400
line 200,200,400,200
line 200,400,400,400
color 255,255,255
pos 100,410
mes name,1
mes " HP:",1
mes hp,1
redraw 1 ; 描画終わり
await 20
stick key,15 ; キー入力
if key&1 : mx=mx-msp
if key&4 : mx=mx+msp
if key&2 : my=my-msp
if key&8 : my=my+msp
kekkax=limit(mx,192,375)
kekkay=limit(my,197,377)
if kekkax=192:mx=mx+3
if kekkax=375:mx=mx-3
if kekkay=197:my=my+3
if kekkay=377:my=my-3
if mx>=mx2 and mx<=mx2+100 and my>=my2+20 and my<=my2+80:hp=hp-1
if hp=0:goto *gameover
if mx2=0:goto *bone2
goto *main
*gameover
goto *l
*skele
onkey 1
emes "いまから たたかう モンスターの なまえ。"
onkey goto *ll
stop
| |
|
2021/8/5(Thu) 08:58:06|NO.93487
|
|