연말까지 매일 지속적으로 웹 사이트를 만드는 대학생~ 54일째 자바스크립트로 가위바위보 게임~
16702 단어 JavaScriptCSS
입문
안녕하세요@70days_js
나는 가위바위보 게임을 만들었다.
여느 때처럼 아무 참고도 없이 했어요.
그러니까 더 좋은 가위바위보 알고리즘이 있으면 알려주세요.
오늘이 54일째다.(2019/12/11)
잘 부탁드립니다.
사이트 URL
한 일
이런 느낌의 가위바위보 게임(gif)↓을 만들었어요.
승리는 빨간색.
파란색으로 졌어요.
무승부는 노란색으로 표현된다.
전체 텍스트
html↓
<body>
<section>
<div id="jankenWord">勝負の刻!</div>
</section>
<section>
<div id="MyjankenImage"></div>
<div id="jankenImage"></div>
</section>
<section>
<div id="rock" class="jankenButton">グー</div>
<div id="scissors" class="jankenButton">チョキ</div>
<div id="paper" class="jankenButton">パー</div>
</section>
</body>
css↓body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
section {
display: flex;
}
div {
width: 100px;
height: 100px;
border: solid 1px black;
margin: 50px 0 0 50px;
display: flex;
justify-content: center;
align-items: center;
}
#jankenImage {
background-size: cover;
}
#MyjankenImage {
background-size: cover;
}
#jankenImage::before {
content: "敵";
margin-top: 130px;
}
#MyjankenImage::before {
content: "Me";
margin-top: 130px;
}
.jankenButton {
border-radius: 50%;
cursor: pointer;
}
.click-none {
pointer-events: none;
}
JavaScript↓let janken = {
0: "rock",
1: "paper",
2: "scissors"
};
let img = {
rock: "day54/rock.png",
scissors: "day54/scissors.png",
paper: "day54/paper.png"
};
let jankenImage = document.getElementById("jankenImage");
let MyjankenImage = document.getElementById("MyjankenImage");
let jankenWord = document.getElementById("jankenWord");
let jankenButton = document.getElementsByClassName("jankenButton");
for (var i = 0; i < jankenButton.length; i++) {
let jankenChoice = jankenButton[i];
jankenChoice.addEventListener("click", function() {
let random = Math.floor(Math.random() * 3);
jankenImage.style.backgroundImage = "url(" + img[janken[random]] + ")";
MyjankenImage.style.backgroundImage = "url(" + img[jankenChoice.id] + ")";
judge(random, jankenChoice.id);
});
}
//引数はtekidaは乱数、meは選択した要素のid
function judge(tekida, me) {
let teki = janken[tekida];
if (teki === me) {
jankenWord.innerHTML = "ヒキワケ";
jankenWord.style.backgroundColor = "rgba(255,250,50, .5)";
} else if (me === "rock" && teki === "scissors") {
jankenWord.innerHTML = "カチ";
jankenWord.style.backgroundColor = "rgba(255,50,50, .5)";
} else if (teki === "rock" && me === "scissors") {
jankenWord.innerHTML = "マケ";
jankenWord.style.backgroundColor = "rgba(55,50,250, .5)";
} else if (me.length > teki.length) {
jankenWord.innerHTML = "カチ";
jankenWord.style.backgroundColor = "rgba(255,50,50, .5)";
} else {
jankenWord.innerHTML = "マケ";
jankenWord.style.backgroundColor = "rgba(55,50,250, .5)";
}
}
가위바위보 알고리즘
중요한 건 여기죠?
이번에 나는 가위바위보를 해쉬로 만들었다.
let janken = {
0: "rock",
1: "paper",
2: "scissors"
};
그때 나는 글자 수에 착안했다.
그래서 록을 제외하고는 글자 수가 클수록 강해지는 법칙을 발견했다.
scissors > paper
paper > rock
그래서 다음과 같이 적었습니다.
if (teki === me) {
데이지
} else if (me === "rock"&& teki === "scissors") {
머리띠
}else if (teki === "rock"&& me === "scissors") {
고기전
} else if (me.length > teki.length) {
머리띠
} else {
고기전
}
글자 수가 아니라 숫자로도 돼요.
다만, 이렇게 가위바위보를 하면 성립할 수 있다.
감상
논리를 생각해서 잘 행동하면 즐겁다.
그러나 나도 너무 정확하거나 최고를 추구하는 것은 자신의 성에 맞지 않는다는 것을 깨달았다.
앞으로도 편하고 즐겁게 했으면 좋겠어요.
Reference
이 문제에 관하여(연말까지 매일 지속적으로 웹 사이트를 만드는 대학생~ 54일째 자바스크립트로 가위바위보 게임~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/70days_js/items/584596e67e6e27e07922텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)