
2chのまとめ見ていたら、役に立つプログラムつくってみたいなー
ってニュアンスのスレがまとめられていたんですよ。
レスしてる人が、じゃんけんから作ってみたらーとか言ってたので、
おしおらもじゃんけん作ってみるかと思って作ってみました。
作ってみて思ったのは相手を”つくんなきゃいけないんだな”って思いました。
まぁ作る相手なんて大したこと無いんだけれど、相手作ってんだなーって思いました。
HTMLを作る
まずユーザー側が何を出すか選択できるように
ラジオボタンを3つ作ります。
<html>
<head>
</head>
<body>
<form id="betform">
<input type="radio" name="bet" value="1">goo
<input type="radio" name="bet" value="2">pa
<input type="radio" name="bet" value="3">choki
</form>
</body>
</html>
イベントを登録する
次にクリック時で動作するようにイベントを登録します。
window.onload = function(){
var el = document.getElementsByName("bet")
for (var i in el) {
if(i != "item" && i != "length") {
el[i].addEventListener("click",act,true)
}
}
};
こんな感じです。
userの行動を記録する
自分がじゃんけんで選択した指を記録しておきます。
var el = document.getElementsByName("bet")
var user
var enemy
var userAct
var enemyAct
userAct = function () {
for (var i in el) {
if(i != "item" && i != "length") {
if(el[i].checked)
{
user = el[i].value
}
}
}
return user
}
user = userAct()
相手の行動を作る
相手の行動を作成します。
enemyAct = function() {
enemy = Math.floor(Math.random() * (100 - 0) + 1);
if(enemy < 30) {
enemy = "goo"
} else if(enemy > 30 && enemy < 50) {
enemy = "pa"
} else {
enemy = "choki"
}
return enemy
}
enemy = enemyAct()
適当に乱数を作って、この乱数の範囲で条件を設定してます。
でもこういう作り方より、Math.randomに3をかけて乱数作って
それをMath.floorする人を良く見ます。
なので、そっちのが一般的だと思います。
相手の行動から結果を作る
というわけで最後のプログラムです。
playGame = function() {
if((enemy == "goo" && user == 1) || (enemy == "pa" && user == 2) || (enemy == "choki" && user == 3)) {
alert("相手は"+enemy+"おあいこ")
} else if((enemy == "goo" && user == 2) || (enemy == "pa" && user == 3) || (enemy == "choki" && user == 1)) {
alert("相手は"+enemy+"あなたの勝ち")
} else {
alert("相手は"+enemy+"あなたの負け")
}
}
playGame()
なんでやねーーーんって言われそうですけど、僕これしか思いつきませんでした。
優しい人優しく教えて下さい。なんか凄い決め打ちな感じなので、
あんまり良くないと思います。時間ある時に勉強しておきます。
あ、でも一応動くはずですよ!
まじでーって思った人はソース乗っけとくので、HTMLにでも貼って下さい。
<html>
<head>
<script>
window.onload = function(){
var el = document.getElementsByName("bet")
for (var i in el) {
if(i != "item" && i != "length") {
el[i].addEventListener("click",act,false)
}
}
};
function act() {
var el = document.getElementsByName("bet")
var user
var enemy
var userAct
var enemyAct
userAct = function () {
for (var i in el) {
if(i != "item" && i != "length") {
if(el[i].checked)
{
user = el[i].value
}
}
}
return user
}
user = userAct()
enemyAct = function() {
enemy = Math.floor(Math.random() * (100 - 0) + 1);
console.log(enemy)
if(enemy < 30) {
enemy = "goo"
} else if(enemy > 30 && enemy < 50) {
enemy = "pa"
} else {
enemy = "choki"
}
return enemy
}
enemy = enemyAct()
playGame = function() {
if((enemy == "goo" && user == 1) || (enemy == "pa" && user == 2) || (enemy == "choki" && user == 3)) {
alert("相手は"+enemy+"おあいこ")
} else if((enemy == "goo" && user == 2) || (enemy == "pa" && user == 3) || (enemy == "choki" && user == 1)) {
alert("相手は"+enemy+"あなたの勝ち")
} else {
alert("相手は"+enemy+"あなたの負け")
}
}
playGame()
}
</script>
</head>
<body>
<form id="betform">
<input type="radio" name="bet" value="1">goo
<input type="radio" name="bet" value="2">pa
<input type="radio" name="bet" value="3">choki
</form>
</body>
</html>


コメントを残す