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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0516
make画像の選択決定について6解決


make

リンク

2008/5/16(Fri) 22:55:08|NO.15867

複数の画像を縮小表示してカーソルで選択している画像を
左クリックすると次の画面にいくというものを作りたいのですが
どうすればいいんでしょうか?
(マスは9マスですがboxfは1部省略してます)

screen 0,640,480
buffer 1,640,480
picload "gazou01.bmp"
buffer 2,640,480
picload "gazou02.bmp"
buffer 3,640,480
picload "gazou03.bmp"
buffer 4,640,480
picload "gazou04.bmp"
buffer 5,640,480
picload "gazou05.bmp"
buffer 6,640,480
picload "gazou06.bmp"
buffer 7,640,480
picload "gazou07.bmp"
buffer 8,640,480
picload "gazou08.bmp"
buffer 9,640,480
picload "gazou09.bmp"

gsel 0

pos 0,0
gcopy 1,1,1,640,480
gzoom 158,118,1,1,1,640,480
pos 160,0
gcopy 2,1,1,640,480
gzoom 158,118,2,1,1,640,480
pos 320,0
gcopy 3,1,1,640,480
gzoom 160,120,3,1,1,640,480
pos 0,120
gcopy 4,1,1,640,480
gzoom 160,120,4,1,1,640,480
pos 160,120
gcopy 5,1,1,640,480
gzoom 160,120,5,1,1,640,480
pos 320,120
gcopy 6,1,1,640,480
gzoom 160,120,6,1,1,640,480
pos 0,240
gcopy 7,1,1,640,480
gzoom 160,120,7,1,1,640,480
pos 160,240
gcopy 8,1,1,640,480
gzoom 160,120,8,1,1,640,480
pos 320,240
gcopy 9,1,1,640,480
gzoom 160,120,9,1,1,640,480

color 255,0,0

;カーソルが四角の中にある場合黒枠、ない場合白枠
repeat
;左上
boxf 1,1,160,2;上
boxf 1,118,160,120;下
boxf 1,1,2,120;左
boxf 158,1,160,120;右
;上中
boxf 161,1,320,2;上
boxf 161,118,320,120;下
boxf 161,1,162,120;左
boxf 318,1,320,120;右
;右上
;左中
boxf 1,121,160,122;上
boxf 1,239,160,240;下
boxf 1,121,2,240;左
boxf 159,120,160,240;右
;中中
;右中
;左下
;左中
;右下
if(mousex>=0)&(mousex<=160)&(mousey>=0)&(mousey<=120):color 0,0,0:else:color 255,255,255
if(mousex>=161)&(mousex<=320)&(mousey>=0)&(mousey<=120):color 0,0,0:else:color 255,255,255
if(mousex>=0)&(mousex<=160)&(mousey>=120)&(mousey<=240):color 0,0,0:else:color 255,255,255

await 10
;左クリックしたら次の画面にいく
onclick *inkey
;if ;左上を押した時、goto*hidariue
;if ;上中を押した時、goto*uenaka
;if ;左中を押した時、goto*hidarinaka
loop
stop
*inkey
if lparam>>30 : stop
cls
;*hidariue
dialog"左上を押した"
;goto*uenaka
dialog"右中を押した"
;goto*hidarinaka
dialog"左中を押した"
stop



この記事に返信する


knock2

リンク

2008/5/17(Sat) 13:19:32|NO.15877

>次の画面にいくというものを作りたいのですが

次の画面って良くわかりませんが、どこをを押したか調べるのならこんな感じ?

でも画像を表示する方法と選択した時に枠を付ける方法はもう少し効率の良い方法を考えたほうが良い
と思います。


onclick *inkey x=0:y=0 repeat 4 line x,y+cnt*100,x+300,y+cnt*100 line x+cnt*100,y,x+cnt*100,y+300 loop stop *inkey if iparam = 0 { if mousey < 100 { if mousex < 100 : dialog"左上を押した" if mousex > 100 & mousex < 200 :dialog"中上を押した" if mousex > 200 & mousex < 300 :dialog"右上を押した" } if mousey > 100 & mousey <200 { if mousex < 100 : dialog"左中を押した" if mousex > 100 & mousex < 200 :dialog"中中を押した" if mousex > 200 & mousex < 300 :dialog"右中を押した" } if mousey > 200 & mousey <300 { if mousex < 100 : dialog"左下を押した" if mousex > 100 & mousex < 200 :dialog"中下を押した" if mousex > 200 & mousex < 300 :dialog"右下を押した" } }



make

リンク

2008/5/17(Sat) 17:29:10|NO.15882

レスありがとうございます
>でも画像を表示する方法と選択した時に枠を付ける方法は
>もう少し効率の良い方法を考えたほうが良いと思います。
すみません、書き方がよくわからないもので
書き方もご教示頂けると幸いです

とりあえずカーソルの処理がわからないのですが、どうすればいいのでしょうか?
あとバグもありますがカーソルが解決してから後ほどご指導お願いします

*main
screen 0,640,480
buffer 1,640,480
picload "gazou01.bmp"
buffer 2,640,480
picload "gazou02.bmp"
buffer 3,640,480
picload "gazou03.bmp"
buffer 4,640,480
picload "gazou04.bmp"
buffer 5,640,480
picload "gazou05.bmp"
buffer 6,640,480
picload "gazou06.bmp"
buffer 7,640,480
picload "gazou07.bmp"
buffer 8,640,480
picload "gazou08.bmp"
buffer 9,640,480
picload "gazou09.bmp"

gsel 0

pos 0,0
gcopy 1,1,1,640,480
gzoom 158,118,1,1,1,640,480
pos 160,0
gcopy 2,1,1,640,480
gzoom 158,118,2,1,1,640,480
pos 320,0
gcopy 3,1,1,640,480
gzoom 160,120,3,1,1,640,480
pos 0,120
gcopy 4,1,1,640,480
gzoom 160,120,4,1,1,640,480
pos 160,120
gcopy 5,1,1,640,480
gzoom 160,120,5,1,1,640,480
pos 320,120
gcopy 6,1,1,640,480
gzoom 160,120,6,1,1,640,480
pos 0,240
gcopy 7,1,1,640,480
gzoom 160,120,7,1,1,640,480
pos 160,240
gcopy 8,1,1,640,480
gzoom 160,120,8,1,1,640,480
pos 320,240
gcopy 9,1,1,640,480
gzoom 160,120,9,1,1,640,480

color 255,0,0

;カーソルが四角の中にある場合黒枠、ない場合白枠
repeat
;左上
boxf 1,1,160,2;上
boxf 1,118,160,120;下
boxf 1,1,2,120;左
boxf 158,1,160,120;右
;上中
boxf 161,1,320,2;上
boxf 161,118,320,120;下
boxf 161,1,162,120;左
boxf 318,1,320,120;右
;右上
;左中
boxf 1,121,160,122;上
boxf 1,239,160,240;下
boxf 1,121,2,240;左
boxf 159,120,160,240;右
;中中
;右中
;左下
;左中
;右下
if(mousex>=0)&(mousex<=160)&(mousey>=0)&(mousey<=120):color 0,0,0:else:color 255,255,255
; if(mousex>=161)&(mousex<=320)&(mousey>=0)&(mousey<=120):color 0,0,0:else:color 255,255,255
; if(mousex>=0)&(mousex<=160)&(mousey>=120)&(mousey<=240):color 0,0,0:else:color 255,255,255
await 10

onclick *inkey
loop
stop
;クリックしたら元の画像を表示する
*inkey
x=0:y=0
repeat
if iparam = 0 {
if mousey < 120 {
if mousex < 160 :goto*gazouhidariue
if mousex > 161 & mousex < 320 :goto*gazounakaue
if mousex > 321 & mousex < 480 :dialog"右上を押した":stop
}
if mousey > 121 & mousey <240 {
if mousex < 160 : goto*gazouhidarinaka
if mousex > 161 & mousex < 320 :dialog"中中を押した":stop
if mousex > 321 & mousex < 480 :dialog"右中を押した":stop
}
if mousey > 241 & mousey <360 {
if mousex < 160 : dialog"左下を押した":stop
if mousex > 161 & mousex < 320 :dialog"左中を押した":stop
if mousex > 321 & mousex < 480 :dialog"右下を押した":stop
}
}
loop
;クリックしたらmainに戻る
*gazouhidariue
cls
picload"gazou01.bmp"
onclick goto*main
stop
*gazounakaue
cls
picload"gazou02.bmp"
onclick goto*main
stop
*gazouhidarinaka
cls
picload"gazou04.bmp"
onclick goto*main
stop



jill

リンク

2008/5/18(Sun) 02:51:20|NO.15895

勉強がてらに挑戦してみました。変数の使いまわしがあり、初期化等見栄えが悪いです。
多分もっと良い方法があると思いますが、一様見てみてください
大きな画像を大量に読み込んで置くとメモリを使いすぎるので注意してください
これ以外にも大きな画像を大量に使用するならbuffer 1,640,480として、そのつど読み込んだほうが良いかもしれません

screen 0,640,480,2 buffer 1,5760,480 repeat 9 pos 640*cnt,0 picload "gazou0"+(cnt+1)+".bmp",1 loop *start x=0 : y=0 repeat 9 gsel 0 if cnt=3 : x=0 : y=120 if cnt=6 : x=0 : y=240 pos x+2,y+2 gzoom 156,116,1,640*cnt,0,640,480 x+=160 loop gsel 0,2 onclick *inkey pos 0,0 *main wait 10 pic=0 : x=0 : y=0 if (mousex>=0)&(mousex<=160)&(mousey<=360) : pic=1 if (mousex>=160)&(mousex<=320)&(mousey<=360) : pic=2 : x=160 if (mousex>=320)&(mousex<=480)&(mousey<=360) : pic=3 : x=320 if (mousey>=120)&(mousey<=240)&(mousex<=480) : pic+=3 : y=120 if (mousey>=240)&(mousey<=360)&(mousex<=480) : pic+=6 : y=240 if pic!=0 : gosub *waku goto *main *waku if pt=pic : return gmode 2 buffer 2,160,120 color 255,255,255 : boxf color : boxf 2,2,157,117 gsel 0,1 gcopy 2,0,0,160,120 buffer 2,160,120 color 1 : boxf color : boxf 2,2,157,117 gsel 0,1 pos x,y gcopy 2,0,0,160,120 pt=pic return *inkey if wparam!=1 | pic=0: goto *main pos 0,0 gcopy 1,640*(pic-1),0,640*pic,480 dialog "選択した画像は[ "+pic+" ]です" color 255,255,255 : boxf goto *start
枠が見づらいので調整した方が良さそうです。
*wakuを下記に入れ替えれば枠が点滅します。

*waku gmode 2 pos x,y buffer 2,160,120 color 1 : boxf color : boxf 2,2,157,117 gsel 0,1 gcopy 2,0,0,160,120 wait 10 buffer 2,160,120 color 255,255,255 : boxf color : boxf 2,2,157,117 gsel 0,1 gcopy 2,0,0,160,120 pt=pic return



make

リンク

2008/5/18(Sun) 17:27:08|NO.15907

レスありがとうございます
わざわざ手間をかけさせてすみません、参考になりました

ダイアログは仮の形で書いていたもので必要なくて
下記のように書いても動きますが、どのように書けば効率がいいのでしょうか?


*inkey if wparam!=1 | pic=0: goto *main pos 0,0 gcopy 1,640*(pic-1),0,640*pic,480 onclick : goto *kesu stop *kesu cls goto*start



jill

リンク

2008/5/18(Sun) 18:10:40|NO.15908

改めて見てみるとおかしな所があるような。。
*startの最初を下記に変えてみてください

*start x=0 : y=0 gsel 0 : cls repeat 9
*kesuは必要なくて*inkeyを
onclick *start
にしてみてください。



make

リンク

2008/5/18(Sun) 19:35:00|NO.15910

レスありがとうございます、希望通りの事ができて満足です

細かい事ですがクリックして画像を表示した後クリックしてstartに戻った時
カーソルが一瞬左上に表示されたりマウスのあるマスにカーソルが表示されない等の
不具合があるようです
ただ私としては動かせればよかったので、とりあえず終了という事で構わないです
不具合がでないものを回答頂けたら幸いであります
お二方とも、ありがとうございました



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