微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用for循环来管理JavaScript中对象属性的增量?

如何解决如何使用for循环来管理JavaScript中对象属性的增量?

我正在做一个rockPaperScissors项目。这是已发布的链接https://george-swift.github.io/rockPaperScissors/。我想添加一个到第5个功能来为游戏添加一个结束分数。如果玩家或计算机达到5岁,我将收到一条消息,宣布获胜者(我知道如何操作该消息)。随附的是一个清晰的代码段。

//computer will randomly pick from this array
const RPS = ['rock','paper','scissors']

//object defines the rules of the game for each player selection
const rulesRPS = {
    rock: {
        beats: "scissors"
    },paper: {
        beats: "rock"
    },scissors: {
        beats: "paper"
    }
};

//cached elements for scores
const pscore = document.getElementById("player-score");
const tscore = document.getElementById("tie-score");
const cscore = document.getElementById("computer-score");

//declared variables for helper functions
let winner,results,scores;

//for event listeners
document.getElementById("rock-btn").addEventListener('click',pSelectedR);
document.getElementById("paper-btn").addEventListener("click",pSelectedP);
document.getElementById("scissors-btn").addEventListener("click",pSelectedS);

// updates the scores after each game round
function render() {
    pscore.innerHTML = scores.player;
    tscore.innerHTML = scores.tie;
    cscore.innerHTML = scores.computer;
}

function pickRandom () {
   const selection = RPS[Math.floor(Math.random() * 3)];
   return selection;
}

//handle results after player selection
function manageResults () {
    results.computer = pickRandom();
    winner = findWinner();
    scores[winner]++;
    render();
}

//player selections and subsequent action
function pSelectedR () {
    results.player = "rock";
    manageResults();
}

function pSelectedP () {
    results.player = "paper";
    manageResults();
}

function pSelectedS () {
    results.player = "scissors";
    manageResults();
}

//compare selections to find winner
function findWinner() {
    results.computer = pickRandom();
    if (results.player === results.computer) {
    return 'tie';
    } 
    if (rulesRPS[results.player].beats === results.computer) {
        return 'player';
    }
    return 'computer';
}

//instantiates the state of the game
function init() {
    scores = {
      player: 0,tie: 0,computer: 0,};
    
    results = {
      player: 'rock',computer: 'rock'
    };
    winner = null;
}
  init();
* {
    Box-sizing: border-Box;
}

body {
    font-family: 'Judson',serif;
    text-align: center;
    height: 100vh;
    margin: 40px 0px;
}
   
h1,h2 {
    font-family: 'Archivo Black',sans-serif;
}

body,main,aside {
    display: flex;
    justify-content: space-evenly;
    align-items: center;
}

body,main {
    flex-direction: column;
}

table {
    width: 100%;
}

td {
    width: 33.3%;
    font-size: 2.5rem;
}

img {
    width: 50vh;
    height: 50vh;
}

aside {
    width: 75vw;
    padding: 0.5em 0 0 0;
}

button {
    width: 30vw;
    margin: 2vw;
    background-color: rgb(38,39,39);
    color: whitesmoke;
    border: rgb(113,125,126) solid 2px;
    border-radius: 3px;
    padding: 5px;
    cursor: pointer;
}

button:hover {
    background-color: rgb(112,123,124);
    color: black;
    transition: 0.5s;
}

button,#link {
    font-size: 20px;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Rock Paper Scissors</title>
    <link rel="stylesheet" href="styles.css">
    <link href="https://fonts.googleapis.com/css?family=Archivo+Black|Judson:400,700" rel="stylesheet">
    <script defer src="main.js"></script>
</head>
<body>
    <header>
        <h1>ROCK PAPER SCISSORS- FOR PASTIME</h1>
    </header>
    <main>
        <table>
            <caption>
                <h2>scores</h2>
                <p>Best of 5?</p>
            </caption>
            <tbody>
                <tr>
                    <th>Player</th>
                    <th>Tie</th>
                    <th>Computer</th>
                </tr>
                <tr>
                    <td id="player-score">0</td>
                    <td id="tie-score">0</td>
                    <td id="computer-score">0</td>
                </tr>
            </tbody>
        </table>
        <figure>
            <img src="https://res.cloudinary.com/george-swift/image/upload/v1603381143/9d966b99b233a6768b6981b83e43e0f0_hobh0x.jpg" 
            alt="rock paper scissors illustrated"/>
        </figure>
    </main>
    <aside>
        <button id="rock-btn">Rock</button>
        <button id="paper-btn">Paper</button>
        <button id="scissors-btn">Scissors</button>
    </aside>
    <nav>
        <a href="https://github.com/george-swift" id="link" target="_blank">GitHub</a>
    </nav>
</body>
</html>

P.S:在大流行之前,我是一名飞机工程师,然后失业。在我的课前学习中,我仅在5周前才开始学习Html,Css和JavaScript,所以我真的很想了解解决方案,而不仅仅是获得答案,因为我必须提交答案。另外,对于此项目和/或其他方面的任何其他相关反馈或提示,我们将不胜感激。

解决方法

从我所看到的,增量正在按预期方式工作。获胜者分数增加后,您只需设置条件即可检查5。

然后将支票添加到当前代码中。

__init__

然后,您可以将额外的功能添加到js文件中:

function manageResults () {
    results.computer = pickRandom();
    winner = findWinner();
    scores[winner]++;
    render();
    if (scores[winner] === 5) {
        renderEndGame();
        init(); // To reset the scores to 0 for a new game. 
    } 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。