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

MESSAGE 記憶力の限界に挑戦! /ムロジェク (02/01/01(Tue) 22:14) [14]
......MESSAGE 感想:面白いけど、難易度が高いかも /クジラ飛行机 (02/01/01(Tue) 23:39) [15]
......MESSAGE Re[1]: 記憶力の限界に挑戦! /moka (02/01/02(Wed) 13:12) [23]
......MESSAGE 改造してみました。 /ムロジェク (02/01/02(Wed) 21:55) [29]


親記事 / ▼[ 15 ] ▼[ 23 ] ▼[ 29 ]
NO.14  記憶力の限界に挑戦!
□投稿者/ ムロジェク -(2002/01/01(Tue) 22:14:21)
□U R L/
こんにちは、一つゲームを作ってみました。次々に表示される色の順番を覚えて答えるどこかで見たようなゲームです。始めは4回表示され、レベルが上がるにつれ表示回数が増えていきます。
プログラムのソース自体は変数名を思いつきでつけたりしてかなり雑な上に長いのであまり参考にはならないかも知れませんが遊んでいただければ幸いです。また、「プログラムのここをこうすればもっと良くなる」や「ここはもっと簡単に書ける」等有りましたら書き込んでいただければ嬉しいです。

注)このプログラム中に出て来る「難易度選択」画面にある「reset」ボタンを初回に押した時、またはプログラムを終了した時に「scoredate.ini」というハイスコア記録用ファイルが自動作成されます。「reset」を押してこのファイルを作っておくとハイスコアが自動的に記録されます。

それでは以下、プログラム本文です。
’-------------------------------------------------------------
'次々に表示される色を記憶するゲーム(ありがち)

'終了処理
終了ラベルに、終了処理設定。

'母艦の設定
母艦の、タイトルは、「MEMORIZE COLOR」'私的命名。変えてもいいです。
母艦の、幅は、300
母艦の、高さは、170
母艦の、リサイズは、オフ

'タイトル画面の作成(無くてもいいです。)
5で、画面フェードアウト
タイトル色判定=0
6回
(
センタリング
(0、50)へ、移動
文字サイズ=20
もし、タイトル色判定=0ならば、タイトル色=赤色
もし、タイトル色判定=1ならば、タイトル色=青色
もし、タイトル色判定=2ならば、タイトル色=黄色
もし、タイトル色判定=3ならば、タイトル色=緑色
もし、タイトル色判定=4ならば、タイトル色=茶色
もし、タイトル色判定=5ならば、タイトル色=紫色
文字色=タイトル色
「MEMORIZE」と、表示
「COLOR」と、表示
0.2秒、待つ
タイトル色判定=タイトル色判定+1
黒色で、画面クリア
)

'難易度選択画面の作成
*リセット地点
(0,5)へ、移動
センタリング
文字色=白色
文字サイズ=13
「難易度選択」と、表示
センタリング解除
文字サイズ=9
初級ボタンを、ボタンとして、作成
その、テキストは、「初級」
その、Xは、5
その、Yは、30
その、幅は、35
その、イベントは、初級レベル
(45、35)へ、移動
「色は4色です。まずはこれから。」と、表示
中級ボタンを、ボタンとして、作成
その、テキストは、「中級」
その、Xは、5
その、Yは、65
その、幅は、35
その、イベントは、中級レベル
(45、70)へ、移動
「色が6色になります。」と、表示
上級ボタンを、ボタンとして、作成
その、テキストは、「上級」
その、Xは、5
その、Yは、100
その、幅は、35
その、イベントは、上級レベル
(45、105)へ、移動
「色が6色になり、色表示の間隔が短くなります。」と、表示
スコア初期化ボタンを、ボタンとして、作成
その、Xは、5
その、Yは、140
その、幅は、35
その、高さは、20
その、テキストは、「reset」
その、イベントは、ハイスコア初期化
(45、145)へ、移動
文字サイズ=8
文字色=赤色
「ハイスコアをリセットします。」と、表示
待機

*初級レベル
難易度=初級
q=4
p=0
h=0
オブジェクト全破壊
ワープ1へ、飛ぶ

*中級レベル
難易度=中級
q=6
p=0
h=1
オブジェクト全破壊
ワープ1へ、飛ぶ

*上級レベル
難易度=上級
q=6
p=1
h=1
オブジェクト全破壊

*ワープ1
'変数の設定
t=4
n=0
k=0
選択色=「」
背景色#0=赤色
背景色#1=青色
背景色#2=黄色
背景色#3=緑色
背景色#4=紫色
背景色#5=茶色

'INI読む
『scoredate.ini』の、INIファイル開く
もし、難易度=初級ならば、(『スコアデータ』の、『初級ハイスコア』を、INIファイル読む)
もし、難易度=中級ならば、(『スコアデータ』の、『中級ハイスコア』を、INIファイル読む)
もし、難易度=上級ならば、(『スコアデータ』の、『上級ハイスコア』を、INIファイル読む)
ハイスコア=それ
INIファイル閉じる

'画面の設定
レベル=1
スコア=0
黒色で、画面クリア
ペン色=RGB(80,80,80)
(40、25)から、(125、85)へ、四角形。
(170、10)へ、移動
文字サイズ=11
文字色=白色
「難易度 {難易度}」と、表示
「現在のレベル」と、表示
レベル表示を、ラベルとして、作成
その、テキストは、レベル
「現在のスコア」と、表示
スコア表示を、ラベルとして、作成
その、テキストは、スコア
「ハイスコア」と、表示
ハイスコア表示を、ラベルとして、作成
その、テキストは、ハイスコア

'ボタンの設定
*返り点
開始ボタンを、ボタンとして、作成。
その、テキストは、「レベル{レベル}開始」
その、Xは、22
その、Yは、115
その、幅は、120
その、イベントは、ゲーム開始
待機

'イベント部分
*ゲーム開始
開始ボタンの、オブジェクト破壊。
t回
(
c=乱数(q)。
塗り色=背景色#c
色データ#n=塗り色
(40、25)から、(125、85)へ、四角形。
n=n+1
もし、p=0ならば、0.8秒、待つ
もし、p=1ならば、0.4秒、待つ
塗り色=黒色
(40、25)から、(125、85)へ、四角形。
もし、p=0ならば、0.8秒、待つ
もし、p=1ならば、0.4秒、待つ
)

'?色目の色は?の表示
回数ラベルを、ラベルとして、作成
その、Xは、1
その、Yは、125
その、フォント色は、白色

*手動ループ
'---------------------------------------------
'?回(命令) の繰り返しの中ではラベルが使えないようなので
'私的命名「手動ループ」(笑)を、使用しています。
'変数で繰り返しを設定しています。
'---------------------------------------------
回数ラベルの、テキストは、「{k+1}色目の色は?」
' 解答ボタンの作成
赤ボタンを、ボタンとして、作成
その、テキストは、「赤」
その、Xは、5
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、赤ボタンPUSH

青ボタンを、ボタンとして、作成
その、テキストは、「青」
その、Xは、32
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、青ボタンPUSH

黄ボタンを、ボタンとして、作成
その、テキストは、「黄」
その、Xは、59
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、黄ボタンPUSH

緑ボタンを、ボタンとして、作成
その、テキストは、「緑」
その、Xは、86
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、緑ボタンPUSH

もし、h=1ならば、
(
紫ボタンを、ボタンとして、作成
その、テキストは、「紫」
その、Xは、113
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、紫ボタンPUSH

茶ボタンを、ボタンとして、作成
その、テキストは、「茶」
その、Xは、140
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、茶ボタンPUSH
)
待機


*赤ボタンPUSH
a=赤色
ワープ2へ、飛ぶ
*青ボタンPUSH
a=青色
ワープ2へ、飛ぶ
*黄ボタンPUSH
a=黄色
ワープ2へ、飛ぶ
*緑ボタンPUSH
a=緑色
ワープ2へ、飛ぶ
*紫ボタンPUSH
a=紫色
ワープ2へ、飛ぶ
*茶ボタンPUSH
a=茶色

*ワープ2
赤ボタンの、オブジェクト破壊
青ボタンの、オブジェクト破壊
黄ボタンの、オブジェクト破壊
緑ボタンの、オブジェクト破壊
もし、h=1ならば、
(
紫ボタンの、オブジェクト破壊
茶ボタンの、オブジェクト破壊
)
もし、色データ#k=aならば、
(
回数ラベルの、テキストは、「正解」
0.8秒、待つ
スコア=スコア+10。
スコア表示の、テキストは、スコア
k=k+1
)
違えば、
(
回数ラベルの、テキストは、「残念、再チャレンジ」
0.8秒、待つ
ゲームオーバーへ、飛ぶ
)
もし、k<tならば、手動ループへ、飛ぶ
n=0
k=0
t=t+1
レベル=レベル+1
レベル表示の、テキストは、レベル
回数ラベルの、オブジェクト破壊
返り点へ、飛ぶ

*ゲームオーバー
ハイスコアINI記録を、呼ぶ
「再チャレンジしますか?」と、二択
もし、それが、はいならば、
(
t=4
n=0
k=0
スコア=0
レベル=1
スコア表示の、テキストは、スコア
レベル表示の、テキストは、レベル
黒色で、画面クリア
オブジェクト全破壊
リセット地点へ、飛ぶ
)
違えば、終わり

*ハイスコアINI記録
もし、スコア>ハイスコアならば、
(
『scoredate.ini』の、INIファイル開く
それ=スコア
もし、難易度=初級ならば(『スコアデータ』の、『初級ハイスコア』へ、INIファイル書く)
もし、難易度=中級ならば(『スコアデータ』の、『中級ハイスコア』へ、INIファイル書く)
もし、難易度=上級ならば(『スコアデータ』の、『上級ハイスコア』へ、INIファイル書く)
INIファイル閉じる
)
戻る

*ハイスコア初期化
「ハイスコアをリセットしますか?」と、二択
もし、それが、はいならば、
(
『scoredate.ini』の、INIファイル開く
それ=0
『スコアデータ』の、『初級ハイスコア』へ、INIファイル書く
『スコアデータ』の、『中級ハイスコア』へ、INIファイル書く
『スコアデータ』の、『上級ハイスコア』へ、INIファイル書く
INIファイル閉じる
「ハイスコアをリセットしました。」と、言う
)
待機
違えば、待機

*終了ラベル
ハイスコアINI記録を、呼ぶ
おわり



▲[ 14 ] / 返信無し
NO.15  感想:面白いけど、難易度が高いかも
□投稿者/ クジラ飛行机 -(2002/01/01(Tue) 23:39:00)
□U R L/ http://www.text2music.com
記憶力ゲーム面白いですね。
ただ、初級でも私には難しかったです!

だいたい、2,3回目で間違えてしまいます(;_;)
私的には、もう少し難易度が低いと、長い時間遊べて、嬉しいです。


あと、余計なお世話なんですが、・・・
ソース見て思ったんですけど、
タイトルの色のフラッシュを、反復でやると、もっと楽かもしれません。
’====================
色配列=「{赤色}
{青色}
{黄色}
{緑色}
{白色}
{紫色}」
文字サイズは、20
色配列を、反復(
   文字色は、それ
   (50,50)へ、移動。「COLOR」と、表示。
   0.5秒、待つ
)
’=====================



▲[ 14 ] / 返信無し
NO.23  Re[1]: 記憶力の限界に挑戦!
□投稿者/ moka -(2002/01/02(Wed) 13:12:52)
□U R L/ http://www.geocities.jp/moka21/teatime/
記憶力の限界がすぐそこにあるらしく、悲しくなりました。(^_^;)
ゲームとして、記憶力訓練として、楽しく鍛えられそうですね。

中級で、「Y,Y,B,R,B」などと覚えていたら、ブラウンにやられました。
BrownとBlueと混同してしまった。右脳を使うべきかなあ。

ところで、コードの書き方ですが、
タブでインデントしていただけると、(私には)見易くなります。



▲[ 14 ] / 返信無し
NO.29  改造してみました。
□投稿者/ ムロジェク -(2002/01/02(Wed) 21:55:29)
□U R L/
皆さんコメント有難うございます。m(__)m 少し改造してみました。

>ミネさん
余計なお世話なんかじゃないです。アドバイス有難うございます。たしかにこうすると書く量が少なくて済みますね。反復ってまだいまいち使い慣れていない物で…。でも便利ですね、反復。
難易度が高いというのは僕も感じていた事です。実際僕も初級でレベル6ぐらいが限界です。そこで、
初級=赤と青の2色 
中級=黄色と緑を足した4色 
上級=茶色と紫を足した6色 
という難易度設定にしてみました。

>mokaさん
()で分岐する所にタブ入れてみました。いつもつい省略してしまうのですがやはり入れると見やすいですね。

それでは、以下改造版です。
’-----------------------------------------------------------------------
'次々に表示される色を記憶するゲーム改(ありがち)

'終了処理
終了ラベルに、終了処理設定。

'母艦の設定
母艦の、タイトルは、「MEMORIZE COLOR」'私的命名。変えてもいいです。
母艦の、幅は、300
母艦の、高さは、170
母艦の、リサイズは、オフ

'タイトル画面の作成(無くてもいいです。)
5で、画面フェードアウト
色配列=「{赤色}
{青色}
{黄色}
{緑色}
{茶色}
{紫色}」

色配列を、反復(
   センタリング
   (0、50)へ、移動
   文字サイズ=20
   文字色は、それ
   「MEMORIZE」と、表示
   「COLOR」と、表示
  0.2秒、待つ
)
黒色で、画面クリア

'レベル選択画面の作成
*リセット地点
(0,5)へ、移動
センタリング
文字色=白色
文字サイズ=13
「難易度選択」と、表示
センタリング解除
文字サイズ=9
初級ボタンを、ボタンとして、作成
その、テキストは、「初級」
その、Xは、5
その、Yは、30
その、幅は、35
その、イベントは、初級レベル
(45、35)へ、移動
「色は赤と青の2色です。まずはこれから。」と、表示
中級ボタンを、ボタンとして、作成
その、テキストは、「中級」
その、Xは、5
その、Yは、65
その、幅は、35
その、イベントは、中級レベル
(45、70)へ、移動
「黄色と緑が加わり4色になります。」と、表示
上級ボタンを、ボタンとして、作成
その、テキストは、「上級」
その、Xは、5
その、Yは、100
その、幅は、35
その、イベントは、上級レベル
(45、105)へ、移動
「茶色と紫色が加わり6色になります。」と、表示
スコア初期化ボタンを、ボタンとして、作成
その、Xは、5
その、Yは、140
その、幅は、35
その、高さは、20
その、テキストは、「reset」
その、イベントは、ハイスコア初期化
(45、145)へ、移動
文字サイズ=8
文字色=赤色
「ハイスコアをリセットします。」と、表示
待機

*初級レベル
難易度=初級
q=2
h=0
オブジェクト全破壊
ワープ1へ、飛ぶ

*中級レベル
難易度=中級
q=4
h=1.1
オブジェクト全破壊
ワープ1へ、飛ぶ

*上級レベル
難易度=上級
q=6
h=2.1
オブジェクト全破壊

*ワープ1
'変数の設定
t=4
n=0
k=0
選択色=「」
背景色#0=赤色
背景色#1=青色
背景色#2=黄色
背景色#3=緑色
背景色#4=紫色
背景色#5=茶色

'INI読む
『scoredate.ini』の、INIファイル開く
もし、難易度=初級ならば、(『スコアデータ』の、『初級ハイスコア』を、INIファイル読む)
もし、難易度=中級ならば、(『スコアデータ』の、『中級ハイスコア』を、INIファイル読む)
もし、難易度=上級ならば、(『スコアデータ』の、『上級ハイスコア』を、INIファイル読む)
ハイスコア=それ
INIファイル閉じる

'画面の設定
レベル=1
スコア=0
黒色で、画面クリア
ペン色=RGB(80,80,80)
(40、25)から、(125、85)へ、四角形。
(170、10)へ、移動
文字サイズ=11
文字色=白色
「難易度 {難易度}」と、表示
「現在のレベル」と、表示
レベル表示を、ラベルとして、作成
その、テキストは、レベル
「現在のスコア」と、表示
スコア表示を、ラベルとして、作成
その、テキストは、スコア
「ハイスコア」と、表示
ハイスコア表示を、ラベルとして、作成
その、テキストは、ハイスコア

'ボタンの設定
*返り点
開始ボタンを、ボタンとして、作成。
その、テキストは、「レベル{レベル}開始」
その、Xは、22
その、Yは、115
その、幅は、120
その、イベントは、ゲーム開始
待機

'イベント部分
*ゲーム開始
開始ボタンの、オブジェクト破壊。
t回(
   c=乱数(q)。
   塗り色=背景色#c
   色データ#n=塗り色
   (40、25)から、(125、85)へ、四角形。
   n=n+1
   もし、p=0ならば、0.8秒、待つ
   もし、p=1ならば、0.4秒、待つ
   塗り色=黒色
   (40、25)から、(125、85)へ、四角形。
   0.8秒、待つ
   
)

'?色目の色は?の表示
回数ラベルを、ラベルとして、作成
その、Xは、1
その、Yは、125
その、フォント色は、白色

*手動ループ
'---------------------------------------------
'?回(命令) の繰り返しの中ではラベルが使えないようなので
'私的命名「手動ループ」(笑)を、使用しています。
'変数で繰り返しを設定しています。
'---------------------------------------------
回数ラベルの、テキストは、「{k+1}色目の色は?」
' 解答ボタンの作成
赤ボタンを、ボタンとして、作成
その、テキストは、「赤」
その、Xは、5
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、赤ボタンPUSH

青ボタンを、ボタンとして、作成
その、テキストは、「青」
その、Xは、32
その、Yは、145
その、幅は、20
その、高さは、20
その、イベントは、青ボタンPUSH

もし、h>1ならば(
   黄ボタンを、ボタンとして、作成
   その、テキストは、「黄」
   その、Xは、59
   その、Yは、145
   その、幅は、20
   その、高さは、20
   その、イベントは、黄ボタンPUSH

   緑ボタンを、ボタンとして、作成
   その、テキストは、「緑」
   その、Xは、86
   その、Yは、145
   その、幅は、20
   その、高さは、20
   その、イベントは、緑ボタンPUSH

   もし、h>2ならば、(
      紫ボタンを、ボタンとして、作成
      その、テキストは、「紫」
      その、Xは、113
      その、Yは、145
      その、幅は、20
      その、高さは、20
      その、イベントは、紫ボタンPUSH

      茶ボタンを、ボタンとして、作成
      その、テキストは、「茶」
      その、Xは、140
      その、Yは、145
      その、幅は、20
      その、高さは、20
      その、イベントは、茶ボタンPUSH
   )
)
待機


*赤ボタンPUSH
a=赤色
ワープ2へ、飛ぶ
*青ボタンPUSH
a=青色
ワープ2へ、飛ぶ
*黄ボタンPUSH
a=黄色
ワープ2へ、飛ぶ
*緑ボタンPUSH
a=緑色
ワープ2へ、飛ぶ
*紫ボタンPUSH
a=紫色
ワープ2へ、飛ぶ
*茶ボタンPUSH
a=茶色

*ワープ2
赤ボタンの、オブジェクト破壊
青ボタンの、オブジェクト破壊
もし、h>1ならば、(
   黄ボタンの、オブジェクト破壊
   緑ボタンの、オブジェクト破壊
   もし、h>2ならば、(
      紫ボタンの、オブジェクト破壊
      茶ボタンの、オブジェクト破壊
   )
)
もし、色データ#k=aならば、(
   回数ラベルの、テキストは、「正解」
   0.8秒、待つ
   スコア=スコア+10。
   スコア表示の、テキストは、スコア
   k=k+1
)
違えば、(
   回数ラベルの、テキストは、「残念、再チャレンジ」
   0.8秒、待つ
   ゲームオーバーへ、飛ぶ
)
もし、k<tならば、手動ループへ、飛ぶ
n=0
k=0
t=t+1
レベル=レベル+1
レベル表示の、テキストは、レベル
回数ラベルの、オブジェクト破壊
返り点へ、飛ぶ

*ゲームオーバー
ハイスコアINI記録を、呼ぶ
「再チャレンジしますか?」と、二択
もし、それが、はいならば、(
   t=4
   n=0
   k=0
   スコア=0
   レベル=1
   スコア表示の、テキストは、スコア
   レベル表示の、テキストは、レベル
   黒色で、画面クリア
   オブジェクト全破壊
   リセット地点へ、飛ぶ
)
違えば、終わり

*ハイスコアINI記録
もし、スコア>ハイスコアならば、(
   『scoredate.ini』の、INIファイル開く
   それ=スコア
   もし、難易度=初級ならば(『スコアデータ』の、『初級ハイスコア』へ、INIファイル書く)
   もし、難易度=中級ならば(『スコアデータ』の、『中級ハイスコア』へ、INIファイル書く)
   もし、難易度=上級ならば(『スコアデータ』の、『上級ハイスコア』へ、INIファイル書く)
   INIファイル閉じる
)
戻る

*ハイスコア初期化
「ハイスコアをリセットしますか?」と、二択
もし、それが、はいならば、(
   『scoredate.ini』の、INIファイル開く
   それ=0
   『スコアデータ』の、『初級ハイスコア』へ、INIファイル書く
   『スコアデータ』の、『中級ハイスコア』へ、INIファイル書く
   『スコアデータ』の、『上級ハイスコア』へ、INIファイル書く
   INIファイル閉じる
   「ハイスコアをリセットしました。」と、言う
)
待機
違えば、待機

*終了ラベル
ハイスコアINI記録を、呼ぶ
おわり



- Child Tree -