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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1213
ギン一度に大量の★7解決


ギン

リンク

2009/12/13(Sun) 17:54:22|NO.29244

題名通り「一度に大量の★」を出したいのです。


randomize repeat 100 //100回繰り返す color 255,255,0 //黄色 pos rnd(640),rnd(480) //位置指定 mes "★" //★を表示 loop
ただ、表示するだけなら↑のスクリプトで十分なんですが、
今回は背景として使いたいのです。


randomize repeat color 255,255,255:boxf:color //上書き防止 〜〜〜〜〜〜〜 〜〜〜〜〜〜〜 repeat 100 //100回繰り返す color 255,255,0 //黄色 pos rnd(640),rnd(480) //位置指定 mes "★" //★を表示 〜〜〜〜〜〜〜 〜〜〜〜〜〜〜 loop
↑だと、繰り返すたびに新しい場所に★が出ますよね??
ずっと同じ場所に★を出すにはどうしたらいいですか?
(いちいち、★の場所を100個も指定はしないですよねー。。。)



この記事に返信する


inovia

リンク

2009/12/13(Sun) 18:44:20|NO.29245

星の背景をバッファーに入れておいて、
使う度にコピーしなおすのではダメですか?

↓完全に遊んでます。

title "決定キーで進みます。" buffer 3,640,480 ;メッセージボックス buffer 2,640,480:boxf ;背景 repeat 100 //100回繰り返す color 255,255,0 //黄色 pos rnd(640),rnd(480) //位置指定 mes "★" //★を表示 loop gsel 0,0 s.0="【少年A】\nそんなバカなぁーーー!\nサンタクロースがいないなんて!" s.1="【少年A】\nクリスマスのバカヤロー!" s.2="【少年B】\n・・・" *draw redraw 0 gmode:pos 0,0:color gcopy 2,0,0,640,480 ;背景 gmode 3,,,128:pos 10,320 gcopy 3,0,0,620,150 ;メッセージ pos 20,330 font "",32,16 mes s.i redraw 1 ;キー入力チェック(左クリック) repeat getkey key,1 if key=1:break wait 12 color 128*(cnt\2),128*(cnt\2),128*(cnt\2) pos 600,440 mes "▽" loop ;キーを離したかチェック(押しっぱなし回避) ;stickでも良かった気もしますが、まぁいいか。 repeat getkey key,1 if key=0:break wait 12 loop i++ if i>2:end ;終了 goto *draw



ギン

リンク

2009/12/13(Sun) 21:27:25|NO.29246

「d3m」というモジュールを使ったプログラムです。
カメラ移動するたびに3Dの背景の★が移動するようにしたいです。
分かりにくいところがあったら言って下さい。



check

リンク

2009/12/13(Sun) 21:34:25|NO.29247

わかりにくいところ

上の質問が解決しているかどうかわからないのに、
同じスレで2度も質問していること。



GENKI

リンク

2009/12/13(Sun) 21:41:03|NO.29248

プログラムでの「乱数」の仕組みを理解するとよいかと。

randomize命令は、乱数表の初期化をする命令です。
rnd関数はその乱数表から数字を取り出しています。
randomize命令では指定された数値を元に乱数表を作成するので、同じ数値が使用されればまったく同じ乱数表が作成されます。
したがってrnd関数で取得できる値もまったく同じになります。

randomize命令にパラメータを設定しない場合、現在時刻を利用した数字が使用されてしまいます。
そのためいつも異なる結果が表示されることになります。


dc = 10 font "",32 *main redraw 1 : await 16 : redraw 0 : color : boxf : color 255, 255, 255 : pos 0,0 c += dc if c>255 : dc = -10 if c<0 : dc = 10 c = limit(c,0,255) randomize 0 color c,c,0 repeat 100 //100回繰り返す pos rnd(640),rnd(480) //位置指定 mes "★" //★を表示 loop ;メッセージ表示 color 255,255,255 gmode 4,,,127 x = 10,630, 630, 10 y = 280,280, 470, 470 gsquare -1,x,y pos x(0)+20, y(0)+20 color mes "【少年B】\n大丈夫!\n信じていれば…いや、無垢な瞳で信じている\nふりをしていれば! " goto *main



ギン

リンク

2009/12/13(Sun) 21:48:21|NO.29249

すいません><
違うスレでわかりやすくします。

inoviaさんの方法も試しましたが駄目でした><



足利超神

リンク

2009/12/13(Sun) 22:16:16|NO.29252

こういうことですか? ・・・
ESCで終了

#include "user32.as" buffer 1,640,480 color 0,0,0 boxf 0,0,640,480 color 255,255,255 repeat 100 pos rnd(640),rnd(480) mes "★" loop screen 0,640,480 gmode 0 pos 0,0 gcopy 1,0,0,640,480 ShowCursor 0 x = 0 y = 0 repeat wait 1 redraw 0 getkey key_Esc,27 if key_Esc != 0:end v_mousex = mousex-317 v_mousey = mousey-211 mouse ginfo(4)+320,ginfo(5)+240 color 0,0,0 pos 0,0 boxf x += v_mousex y += v_mousey pos x,y gcopy 1,0,0,640,480 pos x-640,y-480 gcopy 1,0,0,640,480 pos x-640,y gcopy 1,0,0,640,480 pos x,y-480 gcopy 1,0,0,640,480 redraw 1 loop



珠後

リンク

2009/12/14(Mon) 01:26:14|NO.29256

一旦乱数で算出した座標を配列変数に保存してしまう方法とかはどうでしょう


#define LoopCnt 100 //ループ回数 dim starx,LoopCnt dim stary,LoopCnt randomize repeat LoopCnt //100回繰り返す starx(cnt) = rnd(640) stary(cnt) = rnd(480) loop *main redraw 0 color 255,255,255:boxf // 画面を白で塗りつぶし repeat LoopCnt color 255,255,0 //黄色 pos starx(cnt),stary(cnt)//位置指定 mes "★" //★を表示 loop await 20 redraw 1 goto*main



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