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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0716
かっぺいRPGマップ6解決


かっぺい

リンク

2008/7/16(Wed) 18:02:28|NO.17324

私はまだHSPを始めたばっかりなのですが
無謀にもロープレのようなを作ろうと思いまして試してみたのですけど
よくロープレとかでキャラが動けば同じようにマップもうごくものがありますよね
それが作りたかったのですがどうにもうまくいかず・・・
お願いしますつくりかたを教えてください
(できればわかりやすく教えてください初心者なので・・・)



この記事に返信する


Quiet

リンク

2008/7/16(Wed) 18:59:41|NO.17327


screen 0,300,300 oo=500 dim x,oo:dim y,oo repeat oo ;壁(ブロック?)の位置 x.cnt=rnd(50) y.cnt=rnd(35) x.cnt=x.cnt*10 y.cnt=y.cnt*10 loop px=0:py=0 ;playerの位置 *main redraw 0 color :boxf gosub *player gosub *kabe redraw 1 await 1 goto *main *kabe color 255,255,255 repeat oo boxf x.cnt,y.cnt,x.cnt+10,y.cnt+10 ;壁表示 if x.cnt=px & y.cnt=py{ ;x.cnt(壁のX位置)= px(playerのX位置) & y.cnt(壁のY位置)= py(playerのY位置) だった場合 if ky=1 or ky=4:px+mx ;キーの右か左を押すとmxでpxの前の計算が元に戻る 例 px+=10 → px+mx(mx=-10) == 0 if ky=2 or ky=8:py+my } loop return *player color 255,,255:boxf px,py,px+10,py+10 ;player表示 stick ky if ky=1:px-10:mx=10 ;キーを押したときにmx、myであらかじめ正負逆の数を確保しときます。 if ky=4:px+10:mx=-10 if ky=2:py-10:my=10 if ky=8:py+10:my=-10 return
壁に入ってしまったときに、「壁の位置=playerの位置」になったら逆の計算をします。
こうすれば、playerの位置はプラスマイナスゼロになります。

僕が基本的に使用している方法NO.1です。



高頻度通りすがり

リンク

2008/7/16(Wed) 19:53:22|NO.17334

>>Quietさん
スクロールしていませんが…^^;

;サイズの設定 #const msizex 400 ;マップの横サイズ #const msizey 400 ;マップの縦サイズ #const wx 200 ;ウィンドウの横サイズ #const wy 200 ;ウィンドウの縦サイズ ;当然ですが、マップ>ウィンドウのサイズにならないとスクロールが変になると思います。 ;背景作成(実際はメインループの中でマップ情報を表示すればいいです。) buffer 1,msizex,msizey : color 192,192,192 repeat (msizex/40)*(msizey/40) boxf cnt\(msizex/40)*40,cnt/(msizex/40)*40,cnt\(msizex/40)*40+19,cnt/(msizex/40)*40+19 boxf cnt\(msizex/40)*40+20,cnt/(msizex/40)*40+20,cnt\(msizex/40)*40+39,cnt/(msizex/40)*40+39 loop ;ウィンドウサイズ調整 screen 0,wx,wy ;初期位置 x=msizex/2 : y=msizex/2 *main redraw 0 ;画像をコピーしてくるX座標Y座標 hx=x-wx/2 : hy=y-wy/2 ;自分の位置(基本的に真中です) mx=wx/2 : my=wy/2 ;画面の端のほうに行った時の処理 if x<wx/2 : hx=0 : mx=x if x>msizex-wx/2-1 : hx=msizex-wx : mx=wx-msizex+x if y<wx/2 : hy=0 : my=y if y>msizey-wy/2-1 : hy=msizey-wy : my=wy-msizey+y ;表示 pos 0,0 : gcopy 1,hx,hy,wx,wy color 255,0,0 : boxf mx,my,mx+1,my+1 ;移動 stick key,15 if key&1 : x-- : if x<0 : x=0 if key&2 : y-- : if y<0 : y=0 if key&4 : x++ : if x>=msizex-1 : x=msizex-2 if key&8 : y++ : if y>=msizey-1 : y=msizey-2 redraw 1 wait 1 goto *main
こんなんでどうでしょうか。



Quiet

リンク

2008/7/16(Wed) 20:46:25|NO.17336

あっやべっ!

YR7177さんの質問スレに投稿したつもりでしたが、間違えました。
申し訳ありませんでした。


wx=300:wy=300 screen 0,wx,wy randomize px=150:py=150 oo=100 dim x,oo:dim y,oo dim xx,oo:dim yy,oo repeat oo x.cnt=rnd(30):y.cnt=rnd(30) x.cnt=x.cnt*30:y.cnt=y.cnt*30 xx.cnt=x.cnt:yy.cnt=y.cnt loop w=2 *main redraw 0 color :boxf gosub *wool gosub *player color 255,255:pos 0,0:mes sx redraw 1 await 1 goto *main *player color ,255,:boxf px-2,py-2,px+2,py+2 return *wool color 255,255,255 repeat oo boxf x.cnt,y.cnt,x.cnt+30,y.cnt+30 stick ky,15 if ky&1:x.cnt+=w if ky&4:x.cnt-=w if ky&2:y.cnt+=w if ky&8:y.cnt-=w x.cnt=limit(x.cnt,xx.cnt-600,xx.cnt) y.cnt=limit(y.cnt,yy.cnt-600,yy.cnt) loop return
お詫びに一つ(参考にもならないと思います・・・)。



かっぺい

リンク

2008/7/17(Thu) 18:04:56|NO.17349

ありがとうございます。参考になりました。
それで、もうひとつ教えてほしいことがあるのですけど
キャラのレベルなどをセーブして保存しておくにはどうしたらいいのでしょうか
教えてください。



高頻度通りすがり

リンク

2008/7/17(Thu) 20:10:16|NO.17353

peekとか使うといいんじゃないでしょうか。
sdimで確保した場所に突っ込んでいって、bsaveで保存が一番簡単かと。
読み込むときは逆にすればいいかと思います。



かっぺい

リンク

2008/7/19(Sat) 11:05:13|NO.17405

ありがとうございました。
何とかがんばってみます。



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