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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0326
船丸psetを使う線の図画がうまくいかない8解決


船丸

リンク

2009/3/26(Thu) 10:54:20|NO.24160

地形によって疲労値が上下して、それを表示するために1つ1つの点からデータを採取するタイプのゲームなので、
それを分かり易くする為に点で線を引いているのだが、その線描きが上手くいきません。
一応、こっちではプログラムを作りました。

repeat redraw 0 color boxf color 255,255,255 // 点移動エリア stick atack , 15 if ( atack & 1 ) : pox - 1 if ( atack & 2 ) : poy - 1 if ( atack & 4 ) : pox + 1 if ( atack & 8 ) : poy + 1 pset pox , poy mox = mousex moy = mousey if mousex < mousey { kurikaesi = moy if moy : mox = double ( mox + 1 ) / moy + 1 moy = 1 } else { kurikaesi = mox if mox : moy = double ( moy + 1 ) / mox + 1 mox = 1 } if mousex < pox { if mousey < poy { handanx = pox handany = poy repeat kurikaesi handanx - mox handany - moy pset handanx , handany loop } else { handanx = pox handany = poy repeat kurikaesi handanx - mox handany + moy pset handanx , handany loop }} else { if mousey < poy { handanx = pox handany = poy repeat kurikaesi handanx + mox handany - moy pset handanx , handany loop } else { handanx = pox handany = poy repeat kurikaesi handanx + mox handany + moy pset handanx , handany loop }} redraw 1 await loop
見にくいのは仕方が無いです。
誰か、間違っているところを教えてください。




この記事に返信する


check

リンク

2009/3/26(Thu) 11:01:46|NO.24162

何をしたいのかがまったくわからんのだが
>それを分かり易くする為に点で線を引いているのだが、その線描きが上手くいきません。
どのような線を引きたいんだ?コメントを入れるなどをして見やすくしてくれ。



船丸

リンク

2009/3/26(Thu) 11:19:36|NO.24163

>check
普通にline命令で引いたような線です。



check

リンク

2009/3/26(Thu) 11:31:24|NO.24164

この情報だと普通にlineで引いたらとしか言えん。
結局何がしたいんだ?
マウスの位置を判定をして何かやっているみたいだが、
俺たちには君の脳内で考えられていることをすべて知る能力を持ってないんだ。



SYAM

リンク

2009/3/26(Thu) 11:42:49|NO.24166

とりあえず…
どこからどこに、線をひきたいのです?



hspail

リンク

2009/3/26(Thu) 11:46:17|NO.24167

何をしたいのかよくわからないが、
psetで線を引くなら↓を参考にしてくれ。

x0 = 10 x1 = 300 y0 = 10 y1 = 100 x = x0 repeat x1 - x0 y = (y1-y0) * (x - x0) / (x1 - x0) + y0 pset x, y x++ loop



SYAM

リンク

2009/3/26(Thu) 12:24:14|NO.24168

傾きによって途切れないようにするためには、媒介変数を使った表現をしないといけません。

x0 = 10 x1 = 300 y0 = 10 y1 = 100 len = sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)) repeat len x=cnt*(x1-x0)/len y=cnt*(y1-y0)/len pset x, y loop
このスクリプトでは cnt を媒介変数として利用しています。
hspailさんのスクリプトではたとえば y1=400 に変えると点線になってしまいます。
このスクリプトではそれが起きません…が、その代わり少しでこぼこした線になっています。この辺は改良が必要ですね。

…もっとも、この話が質問に関係あるのかないのかもわからない状況なワケですけれど。



ORZ

リンク

2009/3/26(Thu) 12:35:25|NO.24169

質問の意味を理解できず回答者の疲労値が上昇するので、それを表示するために
正しい日本語を一つ一つ採取しわかりやすく書き込みましょう。



船丸

リンク

2009/3/26(Thu) 13:00:25|NO.24170

皆様、すいません。説明が下手で誤解を与えてしまって…
それはともかく、一応分かりました。

sitenx = 200 siteny = 200 repeat redraw 0 stick atack , 15 if ( atack & 1 ) : sitenx - 1 if ( atack & 2 ) : siteny - 1 if ( atack & 4 ) : sitenx + 1 if ( atack & 8 ) : siteny + 1 color boxf color 255,255,255 x0 = 10 x1 = mousex - sitenx + 10 y0 = 10 y1 = mousey - siteny + 10 len = sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)) repeat len x=sitenx+cnt*(x1-x0)/len y=siteny+cnt*(y1-y0)/len pset x, y loop await redraw 1 loop
>SYAM
貴方のプログラムで解決しました。
ありがとうございます。



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