2017-11-21
新機能?!と、ジャンケンの勝敗判定のこととか
マイナビ連載16回目はジャンケンでした。
http://news.mynavi.jp/series/nadeshiko/016/
# --- イベントを設定 --- (*3) 「#gu」をクリックした時には、0で勝負処理。ここまで。 「#choki」をクリックした時には、1で勝負処理。ここまで。 「#pa」をクリックした時には、2で勝負処理。ここまで。
こっ、こんな書き方が出来たとわっ!!!
うわあぁん、全然知らなかった。一体いつからデスか?!?!
しかし、コレは大変素晴らしいですよ(≧▽≦)
「ここまで」が必要なことを除けば、ほとんどなでしこ1のGUIとおんなじ感じにイベントを設定できるじゃないですか♪
しかもしかも、DOMイベント設定ではどうもうまく出来なかった、関数の引数がふつーに付けられるようですヽ(^o^)ノ
他のイベントもみんな使えるのかなー?
とりあえず、「マウス押した時」「マウス離した時」は使えることを確認☆
それから、項目は追加されたけど説明が一切無くて、なんかよく分からんと思っていた「DOMスタイル一括設定」の仕方も分かりました。
今までは、スタイルのタグだけ作って置いて、DOM_HTML設定したりしてたんですが。
本当はスタイルもね、DOMスタイル設定のよーに、いっこいっこ書いていく場合なら、できればなでしこ1みたいに日本語で書けると助かるのに・・・などと思ったりするところなんだけど、CSSを学びまくっている現状では結局、CSS的にまとめて書いたほうが早いってゆうかw
ところで、ジャンケンの勝敗判定ですけど・・・
結果は(敵手 - 自手 + 3) % 3 もし、結果が0ならば、判定は「あいこ」 もし、結果が1ならば、判定は「勝ち★」 もし、結果が2ならば、判定は「負け」
この4行・・・ってゆうか、下の三行は単に日本語で勝ち負けを表示させるための処理なんで、実質最初の一行だけで、計算出来ちゃうってコトなんですね!w(゜o゜)w
しかし、なんでそんなコトが可能なのかについての解説はありません。
世の中の賢い方々にとっては、こんなの一見して分かるべきカンタンなコトなんですかね?!
なにしろワタシは数学・・・以前の算数の段階で挫折している人間です;
九九の表が信用できずに、小豆(!)を並べて数えたりしてましたw
そうゆう検証が難しくなった時点で、算数が分からなくなっていきました;;;
でも、このくらいの式なら、全部を検証してみることが出来そう。
0,ジャンケンの勝敗表
| 自 手 |----------------------------- | グー(0) |チョキ(1)| パー(2) -----------|---------|---------|--------- | グー(0) | あいこ | 負け; | 勝ち★ 敵|---------|---------|---------|--------- |チョキ(1)| 勝ち★ | あいこ | 負け; 手|---------|---------|---------|--------- | パー(2) | 負け; | 勝ち★ | あいこ -----------------------------------------
表にすると、こうゆうこと。
そして、あいこ=0、勝ち★=1、負け=2、とゆう計算結果になる予定。
全部で9パターンしかないから地道な検証もヨユウですw
1,敵手-自手
| 自 手 |----------------------------- | グー(0) |チョキ(1)| パー(2) -----------|---------|---------|--------- | グー(0) | 0-0=0 | 0-1=-1 | 0-2=-2 敵|---------|---------|---------|--------- |チョキ(1)| 1-0=1 | 1-1=0 | 1-2=-1 手|---------|---------|---------|--------- | パー(2) | 2-0=2 | 2-1=1 | 2-2=0 -----------------------------------------
あいこはまあ分かるんだよねー。
同一の手を出したらあいこなんだから、引けば0になる道理。
そして、どうやら、自手がグーだった場合の結果が基準となるっぽい。
2,+3(3を足します)
| 自 手 |----------------------------- | グー(0) |チョキ(1)| パー(2) -----------|---------|---------|--------- | グー(0) | 0+3=3 | -1+3=2 | -2+3=1 敵|---------|---------|---------|--------- |チョキ(1)| 1+3=4 | 0+3=3 | -1+3=2 手|---------|---------|---------|--------- | パー(2) | 2+3=5 | 1+3=4 | 0+3=3 -----------------------------------------
むむむ・・・
3,%3(3で割った余り)
| 自 手 |----------------------------- | グー(0) |チョキ(1)| パー(2) -----------|---------|---------|--------- | グー(0) | 3%3=0 | 2%3=2 | 1%3=1 敵|---------|---------|---------|--------- |チョキ(1)| 4%3=1 | 3%3=0 | 2%3=2 手|---------|---------|---------|--------- | パー(2) | 5%3=2 | 4%3=1 | 3%3=0 -----------------------------------------
おおぉ?!
1余り・・・となるものと、0余り・・・となるものがあるけど、ここでちゃんと計算がそろいました☆
実は、1の(敵手-自手)をした時に、答えがマイナスだった場合にだけ3を足せば、同じように計算がそろうんだよね。
こんな感じ?
結果は敵手-自手。 もし、結果<0ならば、結果=結果+3。 もし、結果=0ならば、判定は「あいこ」 もし、結果=1ならば、判定は「勝ち★」 もし、結果=2ならば、判定は「負け」
いやいや、まてまて。分かってきた!
もうちょっと戻って、(敵手-自手)の前に、敵手(引かれる数)が自手(引く数)より小さかった場合(答えがマイナスになってしまう場合)に、敵手に3を足して答えがプラスの値になるようにするのだとも考えられます。
ジャンケンの手は3つしか無いから、0=グー。1=チョキ。2=パー・・・ときたら、3はまたグーで、4=チョキ、5=パー・・・とゆうことになるんだよね。
敵手を直接変えちゃったら、プログラム上は後で手説明の時に困るけど、まあ判定のことだけ考えれば、こうゆうこったろう。
もし、敵手<自手ならば、敵手=敵手+3。 結果は敵手-自手。 もし、結果=0ならば、判定は「あいこ」 もし、結果=1ならば、判定は「勝ち★」 もし、結果=2ならば、判定は「負け」
だけど、もしとか使わずに、一つの計算式だけで済ますために、いっかい全部に3を足してからまた3で割っているんだね。その余りが0、1、2にそろうのは15パズルでもやったのでした。
それにしても一体誰が考えつくんだろう、こんなこと。
天才だね!!