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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1014
msm乱数の考え方2解決


msm

リンク

2012/10/14(Sun) 03:04:45|NO.49985

今現在、野球ゲームを作成しています。その際、下のスクリプトを実行していただいたらわかると
思うのですが、赤い枠と青い枠が2つあると思います。
その青い枠の範囲のなかで、●を表示するプログラムです。
現在、青い枠に何回表示したかというのをxxの変数で表しています。
contという変数は50にしているのですが、50%で青い枠に行くようにするためには
どのようにすればいいのかわかりません。どのようにすればできるか教えていただけませんか?
*ちなみにcont=30であるならば30%という風に・・・。

     lax=440:lay=220 cont=50 dim a,100 dim b,100 //赤い枠 color 255,0,0:line lax-50,lay-50,lax+150,lay-50:line lax-50,lay-50,lax-50,lay+150:line lax-50,lay+150,lax+150,lay+150:line lax+150,lay-50,lax+150,lay+150 color 0,0,255:line lax,lay,lax+100,lay:line lax,lay,lax,lay+100:line lax,lay+100,lax+100,lay+100:line lax+100,lay,lax+100,lay+100 control=200 repeat 100 randomize a.cnt=390+rnd(control) b.cnt=170+rnd(control) font "MS明朝",5 color 255,0,0 pos a.cnt,b.cnt mes "●" if (a.cnt>lax)&(a.cnt<lax+100)&(b.cnt>lay)&(b.cnt<lay+100):xx++ title ""+xx+"" await 1 loop



この記事に返信する


暇人

リンク

2012/10/14(Sun) 09:10:10|NO.49986

一番楽なのは先に確率でどっちの領域に行くか振り分けてから
その範囲になるように座標を決める

lax=440:lay=220 Zone=100 control=200 olu=(control-Zone)/2 //左上 ord=control-olu //右下 cont=50 max=100 dim a,max dim b,max //赤い枠 color 255,0,0:line lax-olu,lay-olu,lax+ord,lay-olu:line lax-olu,lay+ord:line lax+ord,lay+ord:line lax+ord,lay-olu color 0,0,255:line lax,lay,lax+Zone,lay:line lax,lay+Zone:line lax+Zone,lay+Zone:line lax+Zone,lay randomize repeat max if rnd(100)>=cont { repeat x=rnd(control) y=rnd(control) if ((x<olu) | (x>ord)) | ((y<olu) | (y>ord)) {break} loop a.cnt=lax-olu+x b.cnt=lay-olu+y }else{ a.cnt=lax+rnd(Zone) b.cnt=lay+rnd(Zone) } font "MS明朝",5 color 255,0,0 pos a.cnt,b.cnt mes "●" if (a.cnt>=lax)&(a.cnt<=lax+Zone)&(b.cnt>=lay)&(b.cnt<=lay+Zone):xx++ title ""+xx+"" await 1 loop
青枠外に振り分けられたら
青枠外の座標になるまでループして再取得してる(手抜き)



msm

リンク

2012/10/14(Sun) 16:25:35|NO.49989

そういう風にすれば、よかったんですね。
サンプル作っていただきありがとうございます。
参考にさせていただきます。



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