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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0906
はがくれ画面の動かし方6解決


はがくれ

リンク

2013/9/6(Fri) 02:06:21|NO.56914

初歩的な質問すみません。
あらゆる検索方法を試しますたが解決できなかったので質問します。
下のようなスクリーンに画像AとBがあるとして、
------------------

   B

 A
------------------
A,Bの場所を↓の様にずらしたいのです、が
------------------

        B
 
     A
------------------
この時AとBの座標を右にずらせばこうなることはわかります。
しかし、画面自体を左に動かすことができればもっと簡単にずらせるとおもうのです。

画面自体をうごかす命令はありますか?
3Dではないです。
お願い致します。



この記事に返信する


kanahiron

リンク

2013/9/6(Fri) 02:26:43|NO.56915

grollという命令で画面自体をずらすことが可能となります

サンプル

screen 0,740,580,0,-1,-1,640,480 color 200,200,200 repeat ginfo(26)/10 line cnt*10,-1,cnt*10,ginfo(27) loop repeat ginfo(27)/10 line -1,cnt*10,ginfo(26),cnt*10 loop color pos 150,150 mes "A" pos 200,200 mes "B" onclick gosub *click stop *click mx = mousex+screenadd_x my = mousey+screenadd_y repeat getkey cli,1 screenadd_x = limit((mx-mousex),0,100) screenadd_y = limit((my-mousey),0,100) groll screenadd_x,screenadd_y await 16 if cli = 0:break loop return
ちと厄介な命令なので解説を

まずgroll命令は、初期化された大きさの分しか移動させることが出来ません
なのでscreen命令で740x580で初期化し、640x480を表示させています
この場合動かせる範囲は100x100pxとなります

また、groll命令ずらした分、mousexなの座標取得系の命令も一緒にずれます
なので

mx = mousex+screenadd_x my = mousey+screenadd_y
の部分でずらした文をmousexの取得座標に足してやることで解決しています

ごめんなさい、いま非常に眠いので間違っているかもしれないです
考えてもわからない所があればまた聞いてください



はがくれ

リンク

2013/9/6(Fri) 02:42:50|NO.56917

早いお返事ありがとうございます。

grollですね!
使うときは画面を多めに確保しておけばいいのですかね。

あとは自分で調べて見ます。


これで製作が再開できます!
本当にありがとうございました。



fortunehill

リンク

2013/9/6(Fri) 02:46:40|NO.56918

/*ご参考(見た目だけならw)*/

screen 0,640*2,480,0,,,640,480 line 0,240,640*2,240 :line 640,0,640,480 cc = 640 groll cc pos cc+150,100 :mes "B" pos cc+100,150 :mes "A" wait 100 groll cc-100



はがくれ

リンク

2013/9/6(Fri) 03:15:09|NO.56919

fortunehillさんもご回答ありがとうございます!
質問の図を忠実に再現してくださってありがとうございました(笑)

お二方ともgrollを使ってらっしゃりますね。
流石です!!



fortunehill

リンク

2013/9/6(Fri) 03:47:39|NO.56921

/*蛇足*/

#uselib "gdi32.dll" #func global SetWindowOrgEx "SetWindowOrgEx" sptr,sptr,sptr,sptr screen 0,640*2,480,0,,,640,480 color 255 :line 0,240,640,240 :line 160,0,160,480 cc = 160 SetWindowOrgEx hdc,-cc,0,0 color ,,255 :line 0,240,640,240 :line 150,0,150,480 color 0 :pos 150,100 :mes "B" :pos 100,150 :mes "A" redraw wait 100 SetWindowOrgEx hdc,-cc+50,0,0 redraw



はがくれ

リンク

2013/9/6(Fri) 05:26:41|NO.56922

fortunehillさん
またまた返信ありがとうございます!

こっちの方法だとマイナス方向にもいけるということですかね?

grollで書き始めちゃったので今回は使うことはできませんが、
気になるので調べて見ますね!



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