ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE マスターマインド(4桁の数当て) /ムロジェク (02/08/31(Sat) 23:38) [15]
......MESSAGE Re[1]: マスターマインド(4桁の数当て) /プレイヤー (02/09/01(Sun) 00:57) [16]
............MESSAGE ありがとうございます /ムロジェク (02/09/01(Sun) 13:30) [17]


親記事 / ▼[ 16 ]
NO.15  マスターマインド(4桁の数当て)
□投稿者/ ムロジェク -(2002/08/31(Sat) 23:38:56)
□U R L/
{---プログラム掲示板投稿フォーム---
【ソフト名】マスターマインド(バージョン 1.01)
【作 成 者】ムロジェク
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.56
【転  載】可(転載条件:ご自由に)
【改変運用】可
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】
よくある4桁の数字当てゲームです。ランダムで4桁の数字(「1213」のように、同時に同じ数字は使われません)が選ばれるのでそれを当てます。
数字は有っているが桁がずれている数が有ると「数字正解」に、
数字も桁も有っている数が有ると「桁と数字正解」にその個数が表示されます。
例えば「1234」が正解で「1325」と入力した場合、数字正解2、桁と数字正解1
となります。
履歴が表示されるので、そこから4桁の数字を推理してください。

非常に分かりにくい説明ですが(笑)やってみれば分かると思います。

---投稿フォームここまで---}

黒色で、画面クリア
母艦の、タイトルは、「マスターマインド」
母艦の、リサイズは、オフ

'数字入力
ボタン1を、ボタンとして、作成。
その、サイズは、(440,100,490,150)
その、テキストは、「1」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&1。表示エディタ=それ。文字数判定)
ボタン2を、ボタンとして、作成。
その、サイズは、(490,100,540,150)
その、テキストは、「2」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&2。表示エディタ=それ。文字数判定)
ボタン3を、ボタンとして、作成。
その、サイズは、(540,100,590,150)
その、テキストは、「3」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&3。表示エディタ=それ。文字数判定)
ボタン4を、ボタンとして、作成。
その、サイズは、(440,150,490,200)
その、テキストは、「4」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&4。表示エディタ=それ。文字数判定)
ボタン5を、ボタンとして、作成。
その、サイズは、(490,150,540,200)
その、テキストは、「5」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&5。表示エディタ=それ。文字数判定)
ボタン6を、ボタンとして、作成。
その、サイズは、(540,150,590,200)
その、テキストは、「6」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&6。表示エディタ=それ。文字数判定)
ボタン7を、ボタンとして、作成。
その、サイズは、(440,200,490,250)
その、テキストは、「7」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&7。表示エディタ=それ。文字数判定)
ボタン8を、ボタンとして、作成。
その、サイズは、(490,200,540,250)
その、テキストは、「8」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&8。表示エディタ=それ。文字数判定)
ボタン9を、ボタンとして、作成。
その、サイズは、(540,200,590,250)
その、テキストは、「9」
その、イベントは、(文字の数=文字の数+1。それ=表示エディタ。それ=それ&9。表示エディタ=それ。文字数判定)

'決定と削除
決定ボタンを、ボタンとして、作成。
その、サイズは、(490,270,590,320)
その、テキストは、「決定」
その、有効は、オフ
その、イベントは、正解判定

削除ボタンを、ボタンとして、作成。
その、サイズは、(440,270,490,320)
その、テキストは、「削除」
その、イベントは、(
   文字の数=文字の数-1
   もし、文字の数<=0ならば、文字の数=0
   それ=表示エディタ
   1文字、右端削除
   表示エディタ=それ
   文字数判定
)

'入力表示
表示エディタを、エディタとして、作成。
その、サイズは、(440,40,590,65)
その、編集は、オフ

'履歴表示
履歴ウインドウを、メモとして、作成
その、Xは、40
その、Yは、40
その、幅は、330
その、高さは、280
その、スクロールバーは、縦
その、編集は、オフ
その、テキストは、「<履歴>」

*リセット

'変数設定
文字の数=0
位置数字正解=0
数字正解=0
A=1

数=「1\n2\n3\n4\n5\n6\n7\n8\n9」
答え=『』
桁数=4。
数を、配列シャッフルして、数に、入れる。
桁数回、(
   「正解{回数}桁={数#(回数-1)}」を、ひまわりする
)

待機

*文字数判定
もし、文字の数>=4ならば、(
   nを、1から、9まで、繰り返す(「ボタン{n}の、有効は、オフ」を、ひまわりする。決定ボタンの、有効は、オン)
   決定ボタンに、注目
)
もし、文字の数<=3ならば、(
   nを、1から、9まで、繰り返す(「ボタン{n}の、有効は、オン」を、ひまわりする。決定ボタンの、有効は、オフ)
)
戻る

*正解判定

'位置数字正解判定
表示用=表示エディタ
表示エディタの中で、1文字目から、1つ、切り出す
入力4桁=それ
表示エディタの中で、2文字目から、1つ、切り出す
入力3桁=それ
表示エディタの中で、3文字目から、1つ、切り出す
入力2桁=それ
表示エディタの中で、4文字目から、1つ、切り出す
入力1桁=それ

nを、1から、4まで、繰り返す(
   「もし、正解{n}桁=入力{n}桁ならば、位置数字正解=位置数字正解+1」を、ひまわりする
   もし、位置数字正解>=4ならば、クリアへ、飛ぶ
)

'数字判定
nを、1から、3まで、繰り返す(
   「もし、正解{n}桁=入力4桁ならば、数字正解=数字正解+1」を、ひまわりする
)
nを、1から、2まで、繰り返す(
   「もし、正解{n}桁=入力3桁ならば、数字正解=数字正解+1」を、ひまわりする
)
もし、正解4桁=入力3桁ならば、数字正解=数字正解+1
nを、3から、4まで、繰り返す(
   「もし、正解{n}桁=入力2桁ならば、数字正解=数字正解+1」を、ひまわりする
)
もし、正解1桁=入力2桁ならば、数字正解=数字正解+1
nを、2から、4まで、繰り返す(
   「もし、正解{n}桁=入力1桁ならば、数字正解=数字正解+1」を、ひまわりする
)


それ=履歴ウインドウ
それに、「\n{A}回目 {表示用} 数字正解{数字正解} 桁と数字正解{位置数字正解}」を、足す
履歴ウインドウ=それ

位置数字正解=0
数字正解=0
文字の数=0
nを、1から、9まで、繰り返す(「ボタン{n}の、有効は、オン」を、ひまわりする。決定ボタンの、有効は、オフ)
表示エディタ=「」
A=A+1

待機

*クリア
「{A}回で正解!」と、言う
「もう一回?」と、二択
もし、それが、はいならば、(
位置数字正解=0
数字正解=0
文字の数=0
nを、1から、9まで、繰り返す(「ボタン{n}の、有効は、オン」を、ひまわりする。決定ボタンの、有効は、オフ)
表示エディタ=「」
履歴ウインドウの、テキストは、「<履歴>」
A=A+1
リセットへ、飛ぶ
)
違えば、おわり



▲[ 15 ] / ▼[ 17 ]
NO.16  Re[1]: マスターマインド(4桁の数当て)
□投稿者/ プレイヤー -(2002/09/01(Sun) 00:57:18)
□U R L/
なるほど、おもしろいですねぇ。

ところで、正解の作成で「乱数作成→前に同じ数が選ばれたか調べる」というのがありますが、
もし、何回も同じ数が選ばれたら、無限ループのようになってしまいます。
(4桁なので、そのようなことは無いと思いますが…)
一応、同じ数を選ばないサンプルを載せておきます。

{ここから▼}
10回('10回走らせてみる
   番号=回数。
   数=「1\n2\n3\n4\n5\n6\n7\n8\n9」。
   答え=『』。
   桁数=4。
   数を、配列シャッフルして、数に、入れる。
   桁数回、答えに、「{数#(回数-1)}」を、足して、答えに、入れる。
   「{番号}番目の答えは、{答え}です。」と、表示。
)。
{ここまで▲}



▲[ 16 ] / 返信無し
NO.17  ありがとうございます
□投稿者/ ムロジェク -(2002/09/01(Sun) 13:30:21)
□U R L/
どうもアドバイス有難うございます。早速改良を加えてみました。こんな方法が有ったのですね…。



- Child Tree -