[Javascript]デジタル野球ゲームを作る
45369 ワード
ルール#ルール#
同じ値、同じ桁数の場合🟢"
Code
const input = document.querySelector("input");
const numberForm = document.querySelector(".number_form");
const numberList = document.querySelector(".user__number-list");
const correct = document.querySelector(".correct_number")
const answer = document.querySelector(".answer")
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
correct_number = []
answer_number_list = []
// 선택한 숫자를, 리스트에서 제거
const numberPickUp = (number) => {
numbers = numbers.filter(value => value !== number)
correct_number.push(number)
}
// 4자리의 숫자 정하기
const createAnswerNumber = () => {
const first = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(first)
const second = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(second)
const third = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(third)
const fourth = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(fourth)
return correct_number
}
// 같은 숫자가 있는지 확인하고 값추가
const paintNumber = number => {
answer_number = []
compare_number_list = []
const li = document.createElement("li")
const span = document.createElement("span")
const h1 = document.createElement("h1")
li.appendChild(span)
li.appendChild(h1)
first = Math.floor(number / 1000)
second = Math.floor(number / 100) - (first * 10)
third = Math.floor(number / 10) - (first * 100) - (second * 10)
fourth = number - (first * 1000) - (second * 100) - (third * 10)
answer_number.push([first, second, third, fourth])
for (let i = 0; i < answer_number[0].length; i++) {
for (let j = i + 1; j < answer_number[0].length; j++) {
if (answer_number[0][i] === answer_number[0][j]) {
alert("같은 숫자는 입력 안되요~")
handleSubmit()
}
}
}
for (let i = 0; i < correct_number.length; i++) {
for (let j = 0; j < correct_number.length; j++) {
if (correct_number[i] === answer_number[0][j]) {
if (i === j) {
compare_number_list.push("🟢")
} else {
compare_number_list.push("🟡")
}
}
}
}
span.innerText = answer_number
h1.innerText = compare_number_list
numberList.appendChild(li)
const numberObject = {
text: number,
}
answer_number_list.push(numberObject)
if (compare_number_list[0] === "🟢" && compare_number_list[1] === "🟢" && compare_number_list[2] === "🟢" && compare_number_list[3] === "🟢") {
alert("정답이에요")
input.classList.add("hiding")
answer.classList.remove("hiding")
}
if (answer_number_list.length === 10) {
input.classList.add("hiding")
answer.classList.remove("hiding")
}
}
//정답은 미리 추가 해놓음.
correct.innerText = createAnswerNumber()
//정답 콘솔에 노출
console.log(correct_number)
//핸들, form event 추가
numberForm.addEventListener("submit", handleSubmit = e => {
e.preventDefault();
const currentValue = input.value
if (currentValue / 1000 < 1 || currentValue / 10000 > 1) {
alert("4자리 숫자를 입력해주세요!")
handleSubmit()
}
paintNumber(currentValue);
})
正解の仕方
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
correct_number = []
answer_number_list = []
const numberPickUp = (number) => {
numbers = numbers.filter(value => value !== number)
correct_number.push(number)
}
const createAnswerNumber = () => {
const first = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(first)
const second = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(second)
const third = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(third)
const fourth = numbers[Math.floor(Math.random() * numbers.length)];
numberPickUp(fourth)
return correct_number
}
NumberPickUp関数は、重複する数値を排除します.CreateAnswerNumber関数で
数字の中から数字を選ぶ.
「均一な数値PickUp」関数を使用して、数値から数値を削除します.
正しいnumberを返します
こうして4桁の数字を作る
入力値
numberForm.addEventListener("submit", handleSubmit = e => {
e.preventDefault();
const currentValue = input.value
if (currentValue / 1000 < 1 || currentValue / 10000 > 1) {
alert("4자리 숫자를 입력해주세요!")
handleSubmit()
}
paintNumber(currentValue);
})
HTMLはフォームにコミットされたイベントを刺激します.handleを使用してこのイベントを設定する
ここには4桁しか入力しません.
ifを用いて範囲を決定する.
値HTMLに表示
まず第1部から見ると、
answer_number = []
compare_number_list = []
const li = document.createElement("li")
const span = document.createElement("span")
const numberId = numbers.length + 1
li.appendChild(span)
first = Math.floor(number / 1000)
second = Math.floor(number / 100) - (first * 10)
third = Math.floor(number / 10) - (first * 100) - (second * 10)
fourth = number - (first * 1000) - (second * 100) - (third * 10)
answer_number.push([first, second, third, fourth])
まず,正解を表す部分はulにli表現を追加する方法を用いた.4桁数字入力時
[1000桁、100桁、10桁、1桁]
このように置くために、一人一人に分けて、それぞれの値をリストに並べます.
このようにして作成されたリスト自体をリストに入れます.
入力した値を繰り返しチェック
for (let i = 0; i < answer_number.length; i++) {
for (let j = i + 1; j < answer_number.length; j++) {
if (answer_number[i] === answer_number[j]) {
alert("같은 숫자는 입력 안되요~")
handleSubmit()
}
}
}
その後、受信した数字に重複値があるかどうかを確認します.n[0] => n[1], n[2], n[3]
n[1] => n[2], n[3]
...
このように比較するためにfor文を用いて値をチェックした.
アラームを起動するように行う
StrikeとBallの決定
for (let i = 0; i < correct_number.length; i++) {
for (let j = 0; j < correct_number.length; j++) {
if (correct_number[i] === answer_number[0][j]) {
if (i === j) {
compare_number_list.push("🟢")
} else {
compare_number_list.push("🟡")
}
}
}
}
どちらも長さ4のリストなので比較のため1つのリストの長さで比較した.
リスト自体がresert numberに含まれているので、[0]を追加できます.
リストのリスト値を確認します.
値が同じ場合は「B」、位置が同じ場合は「S」
正解を確かめる
span.innerText = answer_number
h1.innerText = compare_number_list
numberList.appendChild(li)
const numberObject = {
text: number,
}
answer_number_list.push(numberObject)
if (compare_number_list[0] === "🟢" && compare_number_list[1] === "🟢" && compare_number_list[2] === "🟢" && compare_number_list[3] === "🟢") {
alert("정답이에요")
input.classList.add("hiding")
answer.classList.remove("hiding")
}
if (answer_number_list.length === 10) {
input.classList.add("hiding")
answer.classList.remove("hiding")
}
}
テキストを加えると、全部で10回のチャンスがあります.私はあなたにidをあげて、idが0の時にゲームを停止させたいです.
長さもいいので、とりあえず両方入れておきました.
id=10をチェックしたり、長さをチェックしたりできます
["🟢","🟢","🟢","🟢“”
if(compare_number_list === ["🟢","🟢","🟢","🟢"]{}
私はこの方法で可能性を試してみましたが、だめなので、一つ一つ比較しました.ゲームが終わる方向に、
数字が完全に一致したり、10回のチャンスが終わったりしたら
ゲームは終わった
終わりだ!🚀
負けた...
変更します。
StrikeとBallの位置は数字の位置と一致しています.
推測しやすいようですが...
簡単なキャンセル...
ストライクでしたら前のボールに変えて後ろのボールにします
Reference
この問題について([Javascript]デジタル野球ゲームを作る), 我々は、より多くの情報をここで見つけました https://velog.io/@ddalkigum/Javascript-숫자-야구게임-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol