アプリ版:「スタンプのみでお礼する」機能のリリースについて

ある課題で下記の条件を満たしたものを制作するというものがありまして、
制作してみたんですが、回答例と異なっていました。
私が制作したものでは、なにか間違っているのか分かりませんので質問させていただきました。よろしくお願いいたします。

☆☆☆ 条件 ☆☆☆
★ _mcの移動幅を5~10もしくは-10~-5の範囲になるようにします。
★ 縦方向、横方向ともにステージの端まで移動したら反転するようにします。
※ステージ幅は400px、高さは300pxとします。
※条件ではありませんが、この問題を解くヒントとして、
「移動幅は2分の1の確率で-1を掛ける」と
「2分の1を表す条件式の例としては[ Math.random < 0.5 ]が考えられます。」とあります。


☆☆☆ 回答例 ☆☆☆
var stepX:int = Math.floor(Math.random() * 6) + 5;
var stepY:int = Math.floor(Math.random() * 6) + 5;
if (Math.random() < 0.5){
stepX *= -1;
}
if (Math.random() < 0.5){
stepY *= -1;
}
_mc.addEventListener(Event.ENTER_FRAME, xEnterFrame);
function xEnterFrame(evt) {
_mc.x += stepX;
_mc.y += stepY;
if (_mc.x >= 400 || _mc.x <= 0){
stepX *= -1;
}
if (_mc.y >= 300 || _mc.y <= 0){
stepY *= -1;
}
}



☆☆☆ 私が書いたもの ☆☆☆
var stepX:int = Math.floor(Math.random() * 6) + 5;
var stepY:int = Math.floor(Math.random() * 6) + 5;
_mc.addEventListener(Event.ENTER_FRAME, xEnterFrame);
function xEnterFrame(evt) {
_mc.x += stepX;
_mc.y += stepY;
if(_mc.x > 400 || _mc.x < 0){
stepX *= -1;
}
if(_mc.y > 300 || _mc.y < 0){
stepY *= -1;
}
}
あくまでもヒントでしたので、私が書く際にはヒントを見ずに書きました。

A 回答 (2件)

>あくまでもヒントでしたので、私が書く際にはヒントを見ずに書きました。



その見なかったヒントの部分の差ですね。
Flash/ActionScriptの描画座標系は知らないので具体的にどの方向かはわかりませんが、あなたのプログラムでは「最初に」動く方向がx軸の正方向とy軸の正方向に挟まれた方向だけに限られるはずです。

この回答への補足

私が書いたものは
条件の、
★ _mcの移動幅を5~10もしくは-10~-5の範囲になるようにします。
の、

「_mcの移動幅を5~10」というのをスタート時には設定しているけれど、
「-10~-5の範囲になるように」は設定していないという解釈で大丈夫でしょうか?

補足日時:2011/01/13 10:46
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2011/01/13 16:40

>私が書いたものは


>条件の、
>★ _mcの移動幅を5~10もしくは-10~-5の範囲になるようにします。
>の、

>「_mcの移動幅を5~10」というのをスタート時には設定しているけれど、
>「-10~-5の範囲になるように」は設定していないという解釈で大丈夫でしょうか?
半分不正確、ですかね?
「『_mcの移動幅を5~10』というのをスタート時には設定していて、
『5~10もしくは-10~-5の範囲になるように』は設定していない」
というほうが正確だと思います。

この問題の場合、正方向と負方向のどちらか一方に向かうのが正しいということはなく、正方向に向かうのと負方向に向かうのとが半々の確率になるようにするのが正しい仕様です。
問題の本文だけだとちょっと分かりづらいですが、ヒントに書いてある式を使うことを考えるとそうなります。

まあ、これはあくまでこの問題に限っての事で、あなたのコードのほうが正しい仕様というのもあります(出発点がステージの隅で、外に出ないように飛び出す方向を正方向-正方向に限定したい)。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おかげさまで理解できました!

お礼日時:2011/01/13 16:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!