如何在不同的场合在一个函数中传递两个参数?

axkjgtzd  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(287)

简介:
我想做一个石头剪刀的游戏。我需要在一个函数中保存2个播放器输入(优先)。所以当playerone点击“rock”和playertwo点击“paper”时,它也会保存下来。不同的变量,相同的函数。
“要求:”
无法使用库,必须是100%vanilla js。
我目前拥有的:

  1. function getPlayerOption(playerOne, playerTwo) {
  2. console.log(playerOne);
  3. console.log(playerTwo);
  4. }
  1. h1 {
  2. text-align: center;
  3. }
  4. # player_turn {
  5. color: rgb(255, 0, 0);
  6. }
  7. .container {
  8. display: flex;
  9. width: 100%;
  10. flex-direction: row;
  11. justify-content: space-around;
  12. }
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Rock, paper, scissors!</title>
  6. <link rel="stylesheet" href="styles.css">
  7. <script src="script.js"></script>
  8. </head>
  9. <body>
  10. <h1>Player <span id="player_turn">1</span> pick an option!</h1>
  11. <div class="container">
  12. <div class="box">
  13. <p onclick="getPlayerOption('rock')" id="rock">
  14. Rock
  15. </p>
  16. </div>
  17. <div class="box">
  18. <p onclick="getPlayerOption('paper')" id="paper">
  19. Paper
  20. </p>
  21. </div>
  22. <div class="box">
  23. <p onclick="getPlayerOption('scissors')" id="scissors">
  24. Scissors
  25. </p>
  26. </div>
  27. </div>
  28. </body>
  29. </html>

我想要的输出:第一次单击是“rock”,第二次单击是控制台中的一个“paper”输出将是:
安慰
->“岩石”
->“纸”
谢谢你的时间和努力。

wnvonmuf

wnvonmuf1#

您可以为游戏创建一个类,并将输入存储在成员变量中。

  1. class Game {
  2. playerOne = null;
  3. playerTwo = null;
  4. getPlayerOption(input) {
  5. if (this.playerOne) {
  6. this.playerTwo = input;
  7. this.print();
  8. this.reset();
  9. } else {
  10. this.playerOne = input;
  11. }
  12. }
  13. print() {
  14. console.log(this.playerOne);
  15. console.log(this.playerTwo);
  16. }
  17. reset() {
  18. this.playerOne = null;
  19. this.playerTwo = null;
  20. }
  21. }
  22. const game = new Game();
  1. h1 {
  2. text-align: center;
  3. }
  4. # player_turn {
  5. color: rgb(255, 0, 0);
  6. }
  7. .container {
  8. display: flex;
  9. width: 100%;
  10. flex-direction: row;
  11. justify-content: space-around;
  12. }
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Rock, paper, scissors!</title>
  6. <link rel="stylesheet" href="styles.css">
  7. <script src="script.js"></script>
  8. </head>
  9. <body>
  10. <h1>Player <span id="player_turn">1</span> pick an option!</h1>
  11. <div class="container">
  12. <div class="box">
  13. <p onclick="game.getPlayerOption('rock')" id="rock">
  14. Rock
  15. </p>
  16. </div>
  17. <div class="box">
  18. <p onclick="game.getPlayerOption('paper')" id="paper">
  19. Paper
  20. </p>
  21. </div>
  22. <div class="box">
  23. <p onclick="game.getPlayerOption('scissors')" id="scissors">
  24. Scissors
  25. </p>
  26. </div>
  27. </div>
  28. </body>
  29. </html>
展开查看全部
kd3sttzy

kd3sttzy2#

将值存储到全局范围,有一个值将保留当前玩家的值,任何调用 getPlayerOption 将自动切换到下一个玩家。

  1. // Here are all values that are cast so far. Not in function, because it would be overwritten on each function call
  2. var values = {
  3. player_1: [],
  4. player_2: []
  5. };
  6. // Current playing player
  7. var currentPlayer = '1';
  8. function getPlayerOption(value) {
  9. // Get type of player dynamically
  10. playerType = 'player_' + currentPlayer;
  11. console.log('Player ' + playerType + ' casts ' + value);
  12. // Save value of current player
  13. values[playerType].push(value);
  14. // Switch to next player
  15. currentPlayer = currentPlayer == '1' ? '2' : '1';
  16. console.log('Moves so far', values);
  17. }
  1. h1 {
  2. text-align: center;
  3. }
  4. # player_turn {
  5. color: rgb(255, 0, 0);
  6. }
  7. .container {
  8. display: flex;
  9. width: 100%;
  10. flex-direction: row;
  11. justify-content: space-around;
  12. }
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Rock, paper, scissors!</title>
  6. <link rel="stylesheet" href="styles.css">
  7. <script src="script.js"></script>
  8. </head>
  9. <body>
  10. <h1>Player <span id="player_turn">1</span> pick an option!</h1>
  11. <div class="container">
  12. <div class="box">
  13. <p onclick="getPlayerOption('rock')" id="rock">
  14. Rock
  15. </p>
  16. </div>
  17. <div class="box">
  18. <p onclick="getPlayerOption('paper')" id="paper">
  19. Paper
  20. </p>
  21. </div>
  22. <div class="box">
  23. <p onclick="getPlayerOption('scissors')" id="scissors">
  24. Scissors
  25. </p>
  26. </div>
  27. </div>
  28. </body>
  29. </html>
展开查看全部

相关问题