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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0707
T.GAMEマップエディタ タクティクスオウガやFFTの様なアクティブの制のSRPGのマップ13解決


T.GAME

リンク

2007/7/7(Sat) 21:21:08|NO.9382

タイトルの通り、FFTの様なゲームのマップエディタをサンプルを基に作っています。
そこで問題があるのですが、サンプルはマップチップを普通に並べてしまいます。
今作っているゲームは斜めから見下ろすタイプなので、マップチップが立体的になっている為
マップチップ同士の間に隙間ができてしまいます。この隙間を無くすようにマップチップの座標を指定するにはどうすればいいのでしょうか?
スクリプトはこのようになっています。


; ; 簡易マップ編集ツール ; chipx=32:chipy=36 ; チップXYサイズ csrc=3 ; チップのあるウィンドウID ZENTAImapx=20 ; マップ全体Xサイズ ZENTAImapy=20 ; マップ全体Yサイズ *start dim map,ZENTAImapx,ZENTAImapy Hmapx=20 : Hmapy=12 ; 表示XYチップ数 mapx=0 : mapy=0 mapcode=0 buffer csrc picload "map\\map-riku.jpg" ; 画像ファイル screen 0,Hmapx*chipx,Hmapy*chipy+24 ox=60:x=0:y=Hmapy*chipy objsize ox,24 pos x,y:button "セーブ",*cmd_save:x+=ox pos x,y:button "ロード",*cmd_load:x+=ox pos x,y:button "クリア",*start:x+=ox pos x,y:input mapcode:obj_mapcode=stat:x+=ox *main redraw 0 ; 描画始め color 0,0,64 boxf ; 背景を消す gosub *putmap ; マップ表示 gosub *putmes ; メッセージ表示 redraw 1 ; 描画終わり await 20 stick key,$10f ; キー入力 if key&$100 : goto *cmd_put if key&$200 : goto *cmd_get if key&1 : mapx- if key&4 : mapx+ if key&2 : mapy- if key&8 : mapy+ mapx=limit(mapx,0,ZENTAImapx-Hmapx) mapy=limit(mapy,0,ZENTAImapy-Hmapy) goto *main *cmd_put x=mousex/chipx:y=mousey/chipy if y>=Hmapy or x>=Hmapx : goto *main map(mapx+x,mapy+y)=mapcode goto *main *cmd_get x=mousex/chipx:y=mousey/chipy if y>=Hmapy : goto *main mapcode=map(mapx+x,mapy+y) objprm obj_mapcode,mapcode goto *main *cmd_save dialog "map",17,"マップファイル" if stat=0 : goto *main fname = refstr exname=getpath(fname,2) ; ファイル名の拡張子を取得 if exname="" : fname+=".map" ; 拡張子がなければ.mapを追加 bsave fname,map ; ファイルをセーブ goto *main *cmd_load dialog "map",16,"マップファイル" if stat=0 : goto *main fname = refstr bload fname,map ; ファイルをロード goto *main *putmap gmode 0,chipx,chipy repeat Hmapy i=mapy+cnt:y=cnt*chipy repeat Hmapx pos cnt*chipx,y gcopy csrc,map(mapx+cnt,i)*chipx,0 loop loop return *putmes sysfont 17 pos 0,0:color 0,0,0 mes "カーソルキーでマップを移動させてください。" return



この記事に返信する


f

リンク

2007/7/7(Sat) 22:11:30|NO.9383

提示されてるエディタは確かに、四角描画のようだが・・・。

なにがどう問題なのか、これだけ見せられてもよく分からないんでね?



T.GAME

リンク

2007/7/7(Sat) 22:36:31|NO.9384

申し訳ありません。
画像をアップしたので見てみて下さい。
http://www.uploda.org/uporg893505.png.html
受信パスはhspです。



f

リンク

2007/7/7(Sat) 22:39:00|NO.9385

エラーが表示されてスクリプトを実行できないんですが。



T.GAME

リンク

2007/7/7(Sat) 22:39:15|NO.9386

↑のはミスです…
http://www.imgup.org/iup413734.png.html
こちらに再うpしました。
受信パスはhspです。



f

リンク

2007/7/7(Sat) 23:00:22|NO.9387

「提示したスクリプトで作ったマップ」だけど、
あなたが言ってる「隙間」っていうのはひし形(正方形?)の白地のことですか?
てっきり画像と画像との間に微妙に(たとえば白い)細い線が出ることだと思ったんだけど。



T.GAME

リンク

2007/7/7(Sat) 23:10:05|NO.9388

>>あなたが言ってる「隙間」っていうのはひし形(正方形?)の白地のことですか?
>>てっきり画像と画像との間に微妙に(たとえば白い)細い線が出ることだと思ったんだけど。

そのひし形の白地の事です。説明が悪くて申し訳ありません。
それを無くすようにチップを配置するようにするにはスクリプトをどのように変えればいいのでしょうか?



Drip

リンク

2007/7/7(Sat) 23:41:16|NO.9389

Dripです。

 T.GAMEさん、こんにちは。
逆にお伺いしたいのですが、なぜひし形の状態で編集したいのでしょうか。
画像を拝見したところ、正方形のデータをただ単に斜めに表示しているだけなので、
正方形の形で編集し、ゲームで表示する時に限り斜め見下ろしで表示すれば
済むのではないでしょうか。画像そのものが斜めになっていて編集し難いのであれば、
grotateを組み合わせて向きを補正するか、編集時専用の簡易マップチップ画像を用意して
編集し易いようにすると良いと思います。



f

リンク

2007/7/7(Sat) 23:49:13|NO.9390

>>>あなたが言ってる「隙間」っていうのはひし形(正方形?)の白地のことですか?
>>>てっきり画像と画像との間に微妙に(たとえば白い)細い線が出ることだと思ったんだけど。

>そのひし形の白地の事です。説明が悪くて申し訳ありません。

だったら単純にずらしてないだけじゃん。

1.ひし形をひとつ書く(これをひし形Aとする)
2.ひし形Aの上の頂点から右回りに点a,点b,点c,点dとする
3.ひし形Aを真下にずらした位置に2つ目のひし形を書く(これをひし形A'とする)
4.ひし形A'の頂点から右回りに点a',点b',点c',点d'とする
5.点aと点a',点bと点b',点cと点c',点dと点d'を結んで、辺aa',辺bb',辺cc',辺dd'を引く

現れた直方体abb'c'd'dがマップチップひとつである

7.点aと点c,点bと点dを結んで、辺ac,辺bdを引く
8.辺acと辺bdの交点を点pとする
9.辺dd'を上方向に延長させるような補助線を引く(この補助線を補助線Lとする)
10.辺bdに平行で、点aを通過し、補助線Lと交わる補助線を引く(この補助線を補助線Mとする)
11.補助線Lと補助線Mの交点を点oとする

点oがマップチップ画像の左上である。
点pが直方体abb'c'd'dの右下に接続されるマップチップ画像の左上である。
点oから点pまでの距離は、x方向は辺bd/2,y方向は辺ac/2である。

Dripのレスはちょっと的外れだから気にすんなw



T.GAME

リンク

2007/7/8(Sun) 00:10:57|NO.9391

ありがとうございます。
詳しく説明されてあってとても参考になりました。
しかしそれをどうスクリプトにあらわせばいいのかわからないです…



f

リンク

2007/7/8(Sun) 00:51:09|NO.9392

・・・。
なんか俺楽ちん状態になっている・・・(謎
俺より丁寧ね・・・。

とりあえず俺的には「まず正方形のでゲーム一本仕上げてみ?
ひし形は次のチャレンジにすればいいんでね?」という感じだが。
ここでそんなに悩むようなら、ここから先でもっと悩む気がする。

どうしても、と言うなら止めやしないが・・・。
まずは経験値上げから始めるほうがいいんでね?



で、表示位置をずらす話なら、

マップチップが32*36のサイズがあるとしても、そのまんまの形で並べりゃ
白抜きしなければいけない部分が丸出しになるのは当たり前。

見たところ、ひし形の「左上」にあたる部分は(15,0)位の位置か。
ひし形の「右上」にあたる部分が(31,11)辺りの様子。
差は右に16進んで下に11だな。これは実際に配置して確認するなり町制するなりすれ。

で、横方向に表示する時はx座標に32を足すのではなく、xに16、yに11足していけば良いという事だ。

これで考え方はわかったんでね?

白抜きの透過についてはgmode命令調べれば書いてある。



T.GAME

リンク

2007/7/8(Sun) 01:13:20|NO.9393

こんな夜中に最後まで付き合ってくださりありがとうございます。。
とても参考になりました。お陰で上手くいくと思います。多分。
質問ばっかりですいませんでした。自分もfさんのように他の人の質問に分かりやすく答えられるようになりたいと思います。
ありがとうございました。



T.GAME

リンク

2007/7/8(Sun) 01:26:29|NO.9394

解決忘れてました…orz



f

リンク

2007/7/8(Sun) 01:27:17|NO.9395

いや、俺自身は、最初の突っ込みと最後のだけだから。



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