|
|
2009/12/25(Fri) 17:23:22|NO.29497
現在、九九計算のゲームをちょっとしたRPG要素を取り入れて作ろうと試みています。
ゲームの構成
①勇者が敵を倒していくというゲーム。
②戦闘=九九の問題を解いていく。
③レベル1の敵から始まり、レベル9のラスボスで終わる。
④レベル1は一の段、レベル9は九の段。
⑤できれば、ランダムもいれてみたい。
こういう計画を立てています。
そこで、質問があります。
ア)「1×1=?」のような画面を表示し、その答えを入力したら「1×2=?」・・・
のように進めていくにはどのようにすればいいのでしょうか?
「if」や「getkey」などを使ってやってみているのですが、スクリプトの書き方が
イマイチよく分かりません。
当方、初心者であり、色々な講座を読んでみてもこのスクリプト制作にうまく繋がらなか
ったので、代表的なスクリプトを教えていただければと思っております。
よろしくお願いします。
|
|
2009/12/25(Fri) 18:06:19|NO.29499
簡単な九九ゲームのスクリプトです
screen 0, 320, 240, 0, (ginfo_dispx - 320) / 2, (ginfo_dispy - 240) / 2
title "九九ゲーム 得点0"
*初期設定
randomize
sco = 0
lv = 1 ;レベル
*問題作成
if c = 10 : if lv < 9 : lv += 1 : c = 0
kazu = rnd(9) + 1 ;かける数
kotae = lv * kazu ;答え
a = "" ;入力した数字を記録する変数
*問題
cls 0
font "MS ゴシック", 32, 0 : color 0, 0, 0
pos (320 - 16 * 12) / 2, 64 : mes "" + lv + " × " + kazu + " = ?" ;問題表示
objsize 64, 20 ;オブジェクトのサイズの設定
pos 160 - 64, 120 : input a ;入力欄表示
pos 160, 120 : button "答える", *解答
stop
*解答
cls 0
font "MS ゴシック", 32, 0 : color 0, 0, 0
if a = kotae : pos (320 - 16 * 4) / 2, 64 : mes "正解" : sco ++ : c ++ ;正解なら正解と表示
if a ! kotae : pos (320 - 16 * 6) / 2, 64 : mes "ハズレ" ;ハズレならハズレと表示
objsize 64, 20
pos 160 - 64, 120 : button "もう一回", *問題
pos 160, 120 : button "次の問題", *問題作成
title "九九ゲーム 得点"+sco
stop
rndでかける数をランダムで選んでいます
10問正解するごとにレベルが上がっていきます
|
|
2009/12/25(Fri) 19:07:22|NO.29501
ありがとうございます!!
とても助かりました!
|
|
2009/12/25(Fri) 19:33:36|NO.29502
それと、もう一つ質問させていただいてよろしいでしょうか?
現在、練習用として、画面に「1×1=?」のみ表示させ、その答えのキーを押すと
次の問題が表示されるというようなページを作っています。
しかし、「2×5=?」のときに『10(getkeyで49番と48番)』を押させて、
次の問題に行くようにしたいのですが、0を押した時点で最後のラベルに飛んでしま
います。
どこが可笑しいのでしょうか?
スクリプト↓
*二の段1
cls
pos 0,0
mozi="2×1="
repeat
redraw 2
color 0,0,0:boxf
color 255,255,255
pos 150,100
font "mozi",80,MS明朝
print mozi
getkey b,50
if b==1:goto *二の段2
redraw 1
wait 1
loop
~(省略)~
*二の段5
cls
pos 0,0
mozi="2×5="
repeat
redraw 2
color 0,0,0:boxf
color 255,255,255
pos 150,100
font "mozi",80,MS明朝
print mozi
getkey b,49&48
if b==1:goto *二の段6
redraw 1
wait 1
loop
~(省略)~
*二の段9
cls
pos 0,0
mozi="2×9="
repeat
redraw 2
color 0,0,0:boxf
color 255,255,255
pos 150,100
font "mozi",80,MS明朝
print mozi
getkey b,49&56
if b==1:goto *二の段L
redraw 1
wait 1
loop
*二の段L
cls
title "君の勝ちだ!!"
color 100,100,100:boxf
color 255,255,255
font "mes",100,MSゴシック
pos 150,100
mes "you win"
objsize 110,20
pos 440,305 : button "選択画面に戻る",*traning
pos 440,325 : button "メインページに戻る",*hata0
stop
そもそも、このスクリプト自体のつくりが非効率的なのは分かっているのですが、どうにも
これ以外の方法で作ることができなくて。
アドバイスなどもいただけたら幸いです

| |
|
2009/12/25(Fri) 23:21:48|NO.29509
とっても非効率ですね。
それぞれのラベルの共通の部分と、違っている部分を探して、うまく一箇所でできるようにがんばりましょう。
それと、
getkey b,48&49
という書き方は、できないです。("&"のところです。)
|
|