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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1224
RPGマップ移動について7解決


リンク

2006/12/24(Sun) 18:19:49|NO.4378

みなさんはじめまして。
早速ですが質問したいと思います
今RPGをつくろうと思っていてサンプルスクリプトを勉強のため
いじっているのですが何度やってもキャラがちらつきます
*top
stick kk,15 ggx=gx:ggy=gy if kk&1:dim po,20:gx--:po(0)=1 if kk&2:dim po,20:gy--:po(0)=3 if kk&4:dim po,20:gx++:po(0)=2 if kk&8:dim po,20:gy++:po(0)=0 if gx<4:gx=4 if gy<4:gy=4 if gx>27:gx=27 if gy>19:gy=19 pp=(mwide*gy)+gx a =peek (map,pp) po1=po1+1 if a='4':gx=ggx:gy=ggy gosub *memap await 100 goto *top stop ;プレイヤーとマップ両方表示 *memap redraw 2 mox=gx-4 moy=gy-4 gosub *allmap gmode 2 mex=128:mey=128 if po1>4:po1=1 pos mex,mey gcopy 2,po1*32,po(0)*48,32,48 redraw 1 return ;キャラクタ単位 *allmap gmode 0 repeat 18 cty=cnt i=(moy+cnt)*mwide+mox repeat 18 code =peek (map,i) i++ pb = code-'0' pos cnt*32,cty*32 gcopy 1,pb*32,0,32,32 loop loop return
ご指摘お願いします



この記事に返信する


ふほ

リンク

2006/12/24(Sun) 19:01:13|NO.4379

ぱっとスクリプトを見て、ちらつくような理由が解りませんでした。
そこで、適当にいじって動作させて見ましたが、やはり、ちらつくような感じはしません。

あくまで、私が、「こうなんだろうな」と思うように、コードを付け足した結果です。


とりあえず、動作するスクリプトにしてみて頂けませんか?
そちらで動作して、ちらついているスクリプトを見せていただけませんでしょうか。



トホホッティー

リンク

2006/12/24(Sun) 20:09:51|NO.4381

redraw 2じゃなくて0にしてみて。



リンク

2006/12/24(Sun) 20:16:27|NO.4382

ちらつくスクリプトはこれです
	;初期化
sdim map,4000:po1=0 ;グラフィックの読み込み buffer 1,,,0 picload "mapall.bmp" buffer 2,,,0 picload "01.bmp" ;画面の切り替え gsel 0 screen 0,288,288,0 mwide=32 ;マップの横サイズ map= "4111111111111111111111111111111441111111111111111111111111111114" map=map+"1111111222222222111111111111111111111112222222221111111111111111" map=map+"1111112222222222221111111111111111111122222222222211111111111111" map=map+"1111122222222222222111111111111111111122222222222211111111111111" map=map+"2222222222222222222111111111111122222222222222222221111111111111" map=map+"2222222222222222211111111111111122222222222222222221111111111111" map=map+"2214444444444422221111111111111122144444444444222211111111111111" map=map+"2224444444444422111111111111111122144444444444222211111111111111" map=map+"2224444444444421111111111111111122144444444444222211111111111111" map=map+"2222222222222211111111111111111122222222222222111111111111111111" map=map+"1111111111111111111111111111121122222222222222111111111111111111" map=map+"1112222222222221111111111112221122222222222222111111111111111111" map=map+"2222244442222111111111111112222133333333333332222211111222222222" map=map+"2222222222222111111111111122222233333333333332222211111222222222" map=map+"3333333322222221111111112222222233333333333332222211111222222222" map=map+"3333333333222221111111222222222233333333333332222211111222222222" map=map+"3333333333322222111111222222222233333333333332222211111222222222" map=map+"3333333333222222111112222222222233333333333332222211111222222222" map=map+"3333333333222222111111222222222233333333333332222211111222222222" map=map+"3333333333322222111111222222222233333333333332222211111222222222" map=map+"3333333333332222211111122222222233333333333332222211111222222222" map=map+"3333333333333222221111122222222233333333333332222211111222222222" map=map+"3333333333333222221111122222222233333333333332222211111222222222" map=map+"4333333333333222221111111222222443333333333332222211111112222224" ;game 座標でプレイヤーの位置 gx,gy gx=12:gy=12 gosub *memap *top stick kk,15 ggx=gx:ggy=gy if kk&1:dim po,20:gx--:po(0)=1 if kk&2:dim po,20:gy--:po(0)=3 if kk&4:dim po,20:gx++:po(0)=2 if kk&8:dim po,20:gy++:po(0)=0 if gx<4:gx=4 if gy<4:gy=4 if gx>27:gx=27 if gy>19:gy=19 pp=(mwide*gy)+gx a =peek (map,pp) if po1=4:po1=0 po1=po1+1 if a='4':gx=ggx:gy=ggy gosub *memap await 100 goto *top stop ;プレイヤーとマップ両方表示 *memap redraw 0 mox=gx-4 moy=gy-4 gosub *allmap gmode 2 mex=128:mey=128 pos mex,mey gcopy 2,po1*32,po(0)*48,32,48 redraw 1 return ;キャラクタ単位 *allmap gmode 0 repeat 18 cty=cnt i=(moy+cnt)*mwide+mox repeat 18 code =peek (map,i) i++ pb = code-'0' pos cnt*32,cty*32 gcopy 1,pb*32,0,32,32 loop loop return
redraw 2じゃなくて0にしてもだめでした。

つかっている画像が悪いんでしょうか?
ご指摘お願いします



ふほ

リンク

2006/12/24(Sun) 20:34:54|NO.4383

なるほど。

とりあえずこちらに画像は無いので、最初のほうを

;グラフィックの読み込み buffer 1,160,32,0 ;picload "mapall.bmp" color 0, 0, 0:boxf 0, 0, 31, 31 color 0, 0,255:boxf 32, 0, 63, 31 color 255, 0, 0:boxf 64, 0, 95, 31 color 255, 0,255:boxf 96, 0,127, 31 color 0,255, 0:boxf 128, 0,159, 31 buffer 2,128,192,0 ;picload "01.bmp"
このようにしてみましたが、確かにちらついてるようですね。

多分、キャラクタを選ぶ番号の問題ではないかと思いますが。

gcopy 2,po1*32,po(0)*48,32,48



redraw 1

の間に、


pos 0,0 color 255,255,255 print "po1 :" + po1 print "po(0):" + po(o)

と入れてみると、
po1が1から4まで変化しているようですが、コレは意図どおりですか?
もしかして、0から3ではないですか?



リンク

2006/12/24(Sun) 20:42:03|NO.4384

すみません。
0〜3まででした。
解決しました。どうもありがとうございました。



ふほ

リンク

2006/12/24(Sun) 20:46:00|NO.4385

もし、1から4で意図どおりなら(というか、プログラムはがっつりそうなってますが)
それならば、キャラクタを読み込んでいるであろうと思われる画像の横サイズが、1キャラ分足りないのだと思われます。
その証拠に、追加した

buffer 2,128,192,0

のところを、

buffer 2,128+32,192,0

にすればちらつきません。

今思えば、最初に気づけばよかったですね^^;

>トホホッティさん

 自分も最初ソコ疑いましたw
 念のためと思ってドキュメント読んでみたら、2でもいけそうだったので、
 実験しちゃいましたよ^^;

 でも作りなれてると0の感覚がありますよね^^;
 いや、駄目だって言っているわけではないので。



ふほ

リンク

2006/12/24(Sun) 20:48:35|NO.4386

あ、解決しましたか、失礼m(__)m



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