- 締切済み
Flash lite1.0の計算クイズ
足し算と引き算の問題をランダムで表示させ、 テキストボックスに答えを入力すると言うクイズを作成しています。 ですが、足し算と引き算を表示させるスクリプトを書いても引き算しか表示されません。また、引き算は2-5等、答えがマイナスになってしまう物もあります。 足し算と引き算をランダムに出し、引き算の場合マイナスにならないようにする為にはどのようにすればいいでしょうか? 分かる方がいらっしゃれば教えて下さい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
#1です。 > 足し算と引き算を表示させるスクリプトを > 書いても引き算しか表示されませんので > 引き算は表示されます。 すみません。 読み間違えで,逆でしたね。 大変申し訳ございません。 しかし,この意味がわかりません。 // 問いテキストフィールドの表示# toi = a add "+" add b add "="; toi = c add "-" add d add "="; これだと, 当然 toi という変数名のテキストフィールドには, 引き算しか表示されませんよ。 例えば↓これだと, //////////////// a = 5; a = 10: a = 3; //////////////// まず, a に 5 が代入されて, a に 10 が代入された後, a に 3 が代入されるわけですから, a は 3 です。 3 以外になりようがありません。 何がしたいのでしょうか? PCがわからないことでも, スクリプトを人間が見れば雰囲気でしたいことがわかる場合がありますが, したいことが人間にもわかりません。 というか,引き算を表示させたい以外にわかりません。 > 足し算と引き算を表示させるスクリプトを > 書いても… と日本語で書かれているところからして, 足し算も引き算も両方とも表示させたいということでしょうか? それだと, toi というテキストフィールドが1つしかない場合, toi というテキストフィールドを「複数行」表示できる設定にして, 2行分の文字が入るように縦に大きく広げて, ///////////////////////////////////////////////////////////////// // 問いテキストフィールドの表示# toi = a add "+" add b add "=" add newline add c add "-" add d add "="; ///////////////////////////////////////////////////////////////// こんな感じにするべきだと思います。 newline は改行コードです。 または, 足し算と引き算を別の変数に入れるべきです。 toi というテキストフィールド1つだけだと, それは実現出来ませんから, toi1 と toi2 というテキストフィールド を作って, ///////////////////////////////////////////// // 問いテキストフィールドの表示# toi1 = a add "+" add b add "="; toi2 = c add "-" add d add "="; ///////////////////////////////////////////// こんな感じにするべきだと思います。 あと,書かれている, -------------------------- c>d; // 問いテキストフィールドの表示# -------------------------- この c>d; というのは, 書いていても問題は生じませんが,書いていても全く意味はありません。 「c は d より大きい」 と書いてあるだけです。 人間もコンピュータも,「はぁ,そうですか。」と思うしかありません。 質問者さまでもそうでしょう。 「CさんはDさんより背が高い。」 と言われても, 「へー,そうですかー…... それで?」 となるでしょう。 それで返答がなければ無視するだけです。 というわけで, 上の2例は,足し算も引き算も両方表示させるという方法です。 つまり最初のご質問の回答にはなっていると思います。 あと, > 2-5等、答えがマイナスになってしまう物もあります についての回答ですが, -------------------------- c = random(99)+1; // a と足しても99までにしかならない乱数を代入 d = random(99-a)+1; -------------------------- これはまずいですね。 結論が, toi = c add "-" add d add "="; なのですから, d を出すときに a の値は全く関係がありません。 c と d のみについて考えないとなりません。 したがって次のようになると思います。 ----------------------------------- d = random(99)+1; // 99以下で c 以上の乱数 c = random(100-d)+d; ----------------------------------- ActionScript 以前に算数です。 そして,d と c を求める順が逆です。 まず,引く数 d を先に求めて,そこから引かれる数 c を求めないと答えがマイナスになる場合も当然あります。 引く数 d にランダムで仮に 48 という数が代入されたとします。 引かれる数 c は 48 以上でないとなりません。 だから, c = random(100-d)+d; の最後 +d が必要になります。 とりあえず, c = random(100)+48; これで,d は必ず 0 以上になります。 しかし c = random(100)+48; だと,c は 100 を越えることがあります。 48 を足した分,48を引かなければなりません。 c = random(100-48)+48; ↓つまり↓ c = random(52)+48; これで c は 48 以上,99以下の数になります。 ====================== とりあえず回答出来るのはここまでですね。 ボタンのスクリプトに至っては, 上のことがハッキリしない限り,正常に動作しないと思います。 ActionScript の前に何がしたいのかを具体的にハッキリさせることが第一です。 そして次に算数も必要です。 ////////////////////////////////////////// 大変申し訳なく,また失礼にあたる アドバイスなのですが, ちゃんとした Flash の本(例えば,「教えて!Flash8」 まつむらまきお氏著) などを買って, 普通の Flash をまず始められてはいかがでしょうか? Flash Lite の,それも 1.0 なんかしていても, 難しいだけですし,スクリプトも変なので,ひとつも Flash 自体が上達しませんよ。 今や,Flash Lite 2.0 が発売の中心になっていると思います。 Flash Lite 1.0 や 1.1 というのは, 過渡期の特別変な存在だと思ってください。 Flash 4 時代を背負った,今や通用しないスクリプトだらけです。 こういうマイナーな言語(実は ActionScript1.0 とも 2.0 とも似ても似つかない言語)を 将来的に上達したとしても, その頃には誰も,Flash Lite 1.0 など見向きもしていないと思います。 かなり 普通のFlashが出来る方で,Flash Lite 1.0 や 1.1 の開発をされるのなら全く問題はないと思いますが。 大きなお世話かもしれませんが,正直以上のように思います。 なお, 上の newline とか, add とか,random() 関数 とか… 全て今の Flash では普通使わない,もしくは使ってはならない言葉なのですよ。 それをわかった上で研究されるのなら良いとは思います。 しかし言えることは, 絶対に,普通の Flash では私が回答したり,質問者さまが書いてくださっているスクリプトは使用しないでください。 正常に動かないなどトラブルの種になるだけです。 (私は Flash 4 (1999年)から Flash と付き合っているので,たまたま Flash Lite 1.0 の言語がわかるだけです。普通の人はわかりませんし,わかっても今後どうしようもない言語です。)
>> 足し算と引き算を表示させるスクリプトを書いても引き算しか表示されません。 足し算は表示されて,引き算は表示されないのですか? さっぱり意味がわかりません。 よりしければそうなるスクリプトを書いてみてください。 また, >> 引き算は2-5等、答えがマイナスになってしまう物もあります。 表示されているではないですか。書いていることが矛盾しているようにも思えますが。 いったいどういうことなのでしょう? ========================= 表示されているという前提で, 答えがマイナスになってしまうのが困るのであれば, 困るか困らないかは質問者さまが決めることで, マイナスになって困るとは決まったことではありませんが, もし困るのであれば, 「引く数」をランダムに出して, 「引かれる数」をそれより大きくすれば良いだけのことだと思います。 大きくするといっても,たとえば, 1兆5千3百50億 - 3 = ? のような問題であっては,きっと困るわけでしょう。 だから, 「引かれる数」は「引く数」以上で,なおかつ,○○までの乱数を出せばいいと思います。 ========================= とにかく, どういう仕組みで足し算と引き算の問題をランダムで表示させているのかわかりませんし, 引き算が表示されない理由もさっぱり見当がつきませんよ。
お礼
回答ありがとうございます。 >> 足し算は表示されて,引き算は表示されないのですか? 足し算と引き算を表示させるスクリプトを書いても引き算しか表示されませんので 引き算は表示されます。 スクリプトは以下のように記入しています。 ◆問題表示のスクリプト _focusrect = false; // 問題数表示 m_count=count+1 add"/"add n; // a にランダムな 0~99 までの 100個の乱数を代入 a = random(99)+1; // a と足しても99までにしかならない乱数を代入 b = random(99-a)+1; c = random(99)+1; // a と足しても99までにしかならない乱数を代入 d = random(99-a)+1; c > d; // 問いテキストフィールドの表示# toi = a add "+" add b add "="; toi = c add "-" add d add "="; // 答案の初期化 touan = ""; ◆決定ボタンのスクリプト on (press, keyPress "*") { // カウントに 1 を加算 count++; c++; // もし答案が正解であれば if (touan eq a+b) { // 得点に 1 を加算 tokuten++; // フレーム3へ gotoAndStop(3); } else { // それ以外(不正解)であればフレーム4へ gotoAndStop(4); } if (touan eq c-d) { // 得点に 1 を加算 tokuten++; // フレーム3へ gotoAndStop(3); } else { // それ以外(不正解)であればフレーム4へ gotoAndStop(4); } }
お礼
説明が下手で申し訳ございませんでした。 足し算と引き算を1つのテキストフィールドに ランダムで表示させると言う事でした。 Flash Lite 1.0をやるのに少し事情があったのですが Flash8も勉強していこうと思います。 ありがとうございました。