🌸 「なでしこ」
>
🍯 「貯蔵庫」
くじびきアプリ
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
くじびきアプリ 📖
2~20名のくじを作ります。あたり(5つ分)とはずれの名称を自由に設定できます。
プログラム:
(→大)
# ----------------------------------- # --- くじびきアプリ version1.4 # --- 2~20名のくじを作ります。 # --- あたり(5種類)とはずれの名称を自由に設定できます。 # --- version1.4 あたりの設定方法修正(あたりごとに数指定)、あたりの文字列チェック追加 # --- version1.3 あたりのまとめ設定機能追加 # --- version1.1 くじのサイズ計算修正、あたりはずれの文字数に応じてフォントサイズを調整する処理追加 # --- version1.0 新規作成 # ----------------------------------- // 初期値 くじ数=2 あたり数=1 // 結果インデックス はずれ=0 // 選択状態インデックス うら=0 おもて=1 くじリスト=["", "", "", "", "", "","", "", "", "", "", "","", "", "", "", "", "","", ""] くじ状態=[ [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ], [うら, はずれ]] // 描画用 くじ幅=70 くじ高さ=80 すきま=5 行当たり数=4 行数=5 POS = 0 くじチェック=0 # ------------------------------------------- # --- メイン処理ここから # --- 初期表示 「くじびきアプリ」と表示。 「2~20人のくじびきができます。」と表示。 「あたり種類は5つまで」と表示。 「はずれの表示を変更できます。」と表示。 「くじ作成ボタンを押して、はじめましょう。」と表示。 「 << くじ作成 >> 」のボタン作成して、くじ作成ボタンに代入。改行作成。 「・くじの数(2~20) 」のラベル作成。 ["2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]のセレクトボックス作成し、人数セレクトに代入。 人数セレクトに「10」をテキスト設定。 改行作成。 「・あたり設定」のラベル作成。改行作成。 #「 1つめのあたりをまとめて設定」のラベル作成 #["-","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたりセレクトに代入。 #あたりセレクトに「-」をテキスト設定。 #改行作成。 "あたり"のエディタ作成して、文字エディタ1に代入。 ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたり1セレクトに代入。 あたり1セレクトに「1」をテキスト設定。 改行作成。 ""のエディタ作成して、文字エディタ2に代入。 ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたり2セレクトに代入。 あたり2セレクトに「0」をテキスト設定。 改行作成。 ""のエディタ作成して、文字エディタ3に代入。 ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたり3セレクトに代入。 あたり3セレクトに「0」をテキスト設定。 改行作成。 ""のエディタ作成して、文字エディタ4に代入。 ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたり4セレクトに代入。 あたり4セレクトに「0」をテキスト設定。 改行作成。 ""のエディタ作成して、文字エディタ5に代入。 ["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"]のセレクトボックス作成し、あたり5セレクトに代入。 あたり5セレクトに「0」をテキスト設定。 改行作成。 「・はずれ設定」のラベル作成。改行作成。 "はずれ"のエディタ作成して、文字エディタ6に代入。改行作成。 # ------------------------------------------- # --- ボタン押下イベント くじ作成ボタンをクリックした時には、 全描画クリア。 ret=くじ設定。 もし、(ret=-1)ならば 「あたりの数がくじ数よりも多くなっています。」と言う。 戻る。 ここまで もし、(ret=-2)ならば 「あたりがありません。」と言う。 戻る。 ここまで もし、(ret=-3)ならば 「はずれがありません。」と言う。 戻る。 ここまで もし、(ret=-4)ならば 「あたりの文字を入力してください」と言う。 戻る。 ここまで くじボタン描画。 ここまで。 # ------------------------------------------- # --- くじ設定 関数定義 ●くじ設定 Nを0から(20-1)まで繰り返す くじリスト[N] = "" ここまで。 人数セレクトのテキスト取得を半角変換してくじ数に代入。 // あたりの文字列が""ならエラー もし、((あたり1セレクトのテキスト取得を半角変換)>0)かつ((文字エディタ1のテキスト取得)="")ならば -4で戻る。 ここまで もし、((あたり2セレクトのテキスト取得を半角変換)>0)かつ((文字エディタ2のテキスト取得)="")ならば -4で戻る。 ここまで もし、((あたり3セレクトのテキスト取得を半角変換)>0)かつ((文字エディタ3のテキスト取得)="")ならば -4で戻る。 ここまで もし、((あたり4セレクトのテキスト取得を半角変換)>0)かつ((文字エディタ4のテキスト取得)="")ならば -4で戻る。 ここまで もし、((あたり5セレクトのテキスト取得を半角変換)>0)かつ((文字エディタ5のテキスト取得)="")ならば -4で戻る。 ここまで // あたり合計数チェック くじチェック=0 あたり数=0 あたり数 = (あたり1セレクトのテキスト取得を半角変換)+ (あたり2セレクトのテキスト取得を半角変換) + (あたり3セレクトのテキスト取得を半角変換) + (あたり4セレクトのテキスト取得を半角変換)+ (あたり5セレクトのテキスト取得を半角変換) もし、(あたり数>くじ数)ならば -1で戻る。 ここまで もし、(あたり数=0)ならば -2で戻る。 ここまで もし、(あたり数=くじ数)ならば -3で戻る。 ここまで 文字エディタ6のテキスト取得してくじリスト[0] に代入。// はずれ分 num = 1 あたり1セレクトのテキスト取得を半角変換してtmpに代入。 もし、(tmp>0)ならば Nを0から(tmp-1)まで繰り返す 文字エディタ1のテキスト取得してくじリスト[num] に代入。 num = num + 1 ここまで ここまで あたり2セレクトのテキスト取得を半角変換してtmpに代入。 もし、(tmp>0)ならば Nを0から(tmp-1)まで繰り返す 文字エディタ2のテキスト取得してくじリスト[num] に代入。 num = num + 1 ここまで ここまで あたり3セレクトのテキスト取得を半角変換してtmpに代入。 もし、(tmp>0)ならば Nを0から(tmp-1)まで繰り返す 文字エディタ3のテキスト取得してくじリスト[num] に代入。 num = num + 1 ここまで ここまで あたり4セレクトのテキスト取得を半角変換してtmpに代入。 もし、(tmp>0)ならば Nを0から(tmp-1)まで繰り返す 文字エディタ4のテキスト取得してくじリスト[num] に代入。 num = num + 1 ここまで ここまで あたり5セレクトのテキスト取得を半角変換してtmpに代入。 もし、(tmp>0)ならば Nを0から(tmp-1)まで繰り返す 文字エディタ5のテキスト取得してくじリスト[num] に代入。 num = num + 1 ここまで ここまで // くじ状態初期化とランダムな位置にあたりを設定 Nを0から(くじ数-1)まで繰り返す くじ状態[N][0] = うら くじ状態[N][1] = はずれ ここまで Nを1から(20-1)まで繰り返す もし、くじリスト[N]が""ならば 違えば 後判定で繰り返す POS = 0から(くじ数-1)までの乱数範囲 ここまで、(くじ状態[POS][1] > はずれ)の間。 くじ状態[POS][1] = N ここまで ここまで // 描画情報再計算 // 5つ単位で列を増やす場合、4を足して5で割る 行当たり数 = ((くじ数+4)/5)を0で小数点切下げ くじ幅=((305-すきま*(行当たり数+1))/行当たり数)を0で小数点切下げ 行数=(くじ数/行当たり数)を0で小数点切上げ くじ高さ=((430-すきま*(行数+1))/行数)を0で小数点切下げ 0で戻る。 ここまで。 # ------------------------------------------- # --- くじボタン描画 関数定義 ●くじボタン描画 全描画クリア。 3に線太設定 Nを0から(くじ数-1)まで繰り返す idx=N%行当たり数 idy=((N/行当たり数)を0で小数点切下) もし、くじ状態[N][0]がうらならば 青色に塗色設定 [すきま*(idx+1)+くじ幅*idx,すきま*(idy+1)+くじ高さ*idy, くじ幅, くじ高さ]へ四角描画 もじ = N+1 白色に塗色設定 違えば もし、くじ状態[N][1]がはずれならば 水色に塗色設定 違えば 「#ffc0cb」に塗色設定 ここまで [すきま*(idx+1)+くじ幅*idx,すきま*(idy+1)+くじ高さ*idy, くじ幅, くじ高さ]へ四角描画 もじ=くじリスト[くじ状態[N][1]] 黒色に塗色設定 ここまで # くじの中に文字列がおさまるようにフォントサイズ調整 fs = 20 tmp = 0 後判定で繰り返す fsに描画フォント設定 tmp = もじの文字幅取得 fs = fs-1 ここまで、(tmp > くじ幅)かつ(fs>0)の間。 縦調整=(くじ高さ + (もじの文字高さ取得))/2 横調整=(くじ幅 - (もじの文字幅取得))/2 [すきま*(idx+1)+くじ幅*idx+横調整,すきま*(idy+1)+くじ高さ*idy+縦調整]へもじを文字描画 ここまで ここまで # ------------------------------------------- # --- パネルクリックイベント 描画中キャンバスをマウス押した時には くじクリックチェック(マウスX,マウスY) くじボタン描画 ここまで。 # ------------------------------------------- # --- パネルクリックチェック関数定義 ●くじクリックチェック(MX,MY) Nを0から(くじ数-1)まで繰り返す idx=N%行当たり数 idy=((N/行当たり数)を0で小数点切下) x1=すきま*(idx+1)+くじ幅*idx y1=すきま*(idy+1)+くじ高さ*idy x2=x1+くじ幅 y2=y1+くじ高さ もし、MX≧x1ならば もし、MY≧y1ならば もし、MX≦x2ならば もし、MY≦y2ならば # --- パネル切り替え(間違えた場合にやりなおせるように) もし、くじ状態[N][0]がうらならば くじ状態[N][0]=おもて 違えば ここまで ここまで ここまで ここまで ここまで ここまで ここまで # ------------------------------------------- # --- 文字列幅、高さ取得 # --- https://nadesi.com/v3/doc/index.php?plugin_browser%2F文字描画幅取得&show ●(Sの)文字幅取得 TM=Sの文字描画幅取得。 TM["width"]で戻る。 ここまで。 ●(Sの)文字高さ取得 TM=Sの文字描画幅取得。 TM["actualBoundingBoxAscent"]+TM["actualBoundingBoxDescent"]で戻る。 ここまで。
プログラムを実行
⭐ 最上(もがみ) 作
タイトル:
くじびきアプリ
ライセンス:
MIT (
改変可/表示
)
タイプ:
wnako
タグ:
-
利用バージョン:
3.4.23
作成日時:
2023/11/27 13:22 (編集: 2023/12/01 10:10)
公開の投稿
⭐
ログイン
して★を付けよう!
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
📍なでしこハブ (最新版の反映は1日後):
ソースの確認
編集履歴の確認
通報数:
0
通報って何?