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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0511
daruma自作ボードゲーム用の盤面の作り方について教えてください4解決


daruma

リンク

2016/5/11(Wed) 22:32:51|NO.75463

こんばんは
自作ボードゲーム用盤面の作り方について教えてください。
全体が縦15マス×横20マスで、縦横5×5マスの中に「1マスの塗りつぶしをランダムに3つ」配置するための
スプリクト(?)が作りたいです。
どのようにすれば良いでしょうか?

自分はHSP初心者で、ほぼ何もわからないです。すみません。



この記事に返信する


沢渡

リンク

2016/5/15(Sun) 10:39:44|NO.75494

 「5マスx5マスのブロックが、縦に3ブロック、横に4ブロックで、合計12ブロック」
「各ブロック毎に3マスを塗りつぶし、全体では36マスを塗りつぶす」
という認識で良いでしょうか?
 各ブロックについて、「25枚中3枚が当たりのクジを使って抽選を行う」という手法でやってみました。


#define swap(%1,%2) _sw=%1 : %1=%2 : %2=_sw %c //%1の変数と%2の変数の中身を交換するマクロ #define boxf2(%1,%2,%3,%4) boxf %1,%2,(%1)+(%3)-1,(%2)+(%4)-1 //(%1,%2)を起点に、(%3,%4)の大きさの矩形を描画 randomize dim board,20,15 //盤面 repeat 20 : cnt0=cnt : repeat 15 : board(cnt0,cnt)=0 : loop : loop //盤面を初期化 dim lotte,25 //抽選箱 repeat 4 x0=cnt //対象ブロックが左から何番目か repeat 3 y0=cnt //対象ブロックが上から何番目か //抽選箱に3つだけ「当たり」をセット repeat 25 if cnt<3 : lotte(cnt)=1 : else : lotte(cnt)=0 loop //抽選箱をかき混ぜる repeat 25 a=rnd(25) swap lotte(cnt),lotte(a) loop //ボードに配置 repeat 25 x1=cnt\5 : y1=cnt/5 board(x0*5+x1,y0*5+y1)=lotte(cnt) loop loop loop //盤面を描画 color 255,255,255 : boxf color 0,0,0 : boxf2 0,0,400,300 repeat 20 cnt0=cnt repeat 15 a=( int(cnt0/5)+int(cnt/5) ) \ 2 : b=255-a*32 if board(cnt0,cnt)=1 : color 255,0,0 : else : color b,b,b boxf2 cnt0*20+1,cnt*20+1,18,18 loop loop



daruma

リンク

2016/5/15(Sun) 19:30:21|NO.75502

>沢渡さん
その認識であってます!
わかりづらい説明ですみませんでした。
回答ありがとうございます!

追伸
このスクリプトに少し変更を加えて使用してもよろしいでしょうか?



沢渡

リンク

2016/5/15(Sun) 23:16:58|NO.75508

認識が合っていたようで良かったです。
大したことはしていませんが、ご自由に使用いただいて結構ですよ。



daruma

リンク

2016/5/16(Mon) 08:40:25|NO.75510

>沢渡さん
ありがとうございます!



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