0
votes

Ciseaux en papier rock avec JavaScript

J'ai récemment pris le codage avec JavaScript et j'ai décidé de faire une partie, de tester mes connaissances. Rien ne se passe lorsque j'appuie sur les objets censés démarrer le jeu et que lorsque j'envoie des informations via la console (la plupart du temps), rien ne se passe.

const paper = document.getElementById('paper');
const scissor = document.getElementById('scissor');
const result_in = document.getElementById("result")
let computer;
let computer_pick;
let result;

//Player choice
rock.onclick = play('rock');
paper.onclick = play('paper');
scissor.onclick = play('scissor');

function play(userinput) {    
    computer_pick = Math.floor(Math.random() * 3); 
    console.log(computer_pick);
    if (computer_pick === 0) { 
        computer = 'rock'
    } else if (computer_pick === 1) {
        computer = 'paper';
    } else if (computer_pick === 2) {
        computer = 'scissor';
    } else { console.log('error') };
    console.log(computer); 
    //
    if (computer == userinput) { //tie
        result = 'tie';
    } else if (computer == 'rock' && userinput == 'paper' || computer == 'paper' && userinput == 'scissor' || computer == 'scissor' && userinput == "rock") {
        console.log(win);
        result = 'win';
    } else if (computer == 'rock' && userinput == 'scissor' || computer == 'paper' && userinput == 'scissor' || computer == 'scissor' && userinput == 'paper') {
        console.log(loss);
        result = 'lost';
    }
//output
    document.getElementById('result').innerHTML = You ${result}! The computer threw ${computer}.;
}


3 commentaires

Quelle erreur obtenez-vous? Ajoutez votre code HTML aussi.


rock.onclick - mais où définissez-vous rock ?


console.log (gagnez); et console.log (perte); devrait lancer une erreur car ces variables ne sont définies nulle part.


3 Réponses :


2
votes

attendez-vous que le DOM soit chargé?

Où êtes-vous injecté ce fichier à dom? dans tête tag ou Body tag!

Si vous injectez ce code dans Tête TAG "Vous devez attendre que le DOM devenir chargé

quelque chose comme ceci: xxx


0 commentaires

0
votes

Il y a des erreurs dans votre code:

  1. rock.onclick code> n'est pas correct - rock.addeventlistener ("cliquer", fonction (E) {}) code> est correct p> li>

  2. console.log (gagnez) code> (ou perte) n'est pas correct - vous essayez de console.log () code> une variable qui n'existe pas - Pour générer une chaîne dans console.log () code> Vous devez le mettre dans des guillemets console.log ("win ') code> p> l> l>

  3. document.getElementByID ("résultat '). innerhtml = vous $ {résultat}! L'ordinateur a jeté $ {ordinateur}.; Code> n'est pas correct - vous devez utiliser des backtsks pour une interpolation de chaîne p> li>

  4. Vous n'avez pas défini rock code> comme vous l'avez fait papier code> et ciscisor code> p> l> l> li>

  5. Ce n'est pas une erreur de codage, mais un simple problème logique: vous avez trois alternatives de résultat: cravate strong>, gagnant fort>, perdu fort >. Si ce n'est pas une cravate forte> forte> et que l'utilisateur n'a pas gagnant strong> (gagné), puis utilisateur perdu fort>. Vous n'avez pas besoin du dernier sinon si code>, uniquement sinon code> p> li>

  6. La même chose est vraie pour la variable Computer_Pick forte> - il n'y a pas de place à l'erreur (la valeur aléatoire ne peut être 0, 1 ou 2), de sorte que vous n'avez pas besoin du sinon code> pour erreur forte>. Et si ordinateur_pick strud> n'est pas 0 ou 1, il doit être 2 (pas besoin de sinon si code>, uniquement pour ele code>). li> ol>

    p>

    <div id="rock" class="btn">ROCK</div><br />
    <div id="paper" class="btn">PAPER</div><br />
    <div id="scissor" class="btn">SCISSORS</div><br />
    
    <div>RESULT: <span id="result"></span></div>


0 commentaires

-2
votes

Essayez et ainsi de suite

et vous avez besoin de "" pour la ligne document.getElementByID ("résultat"). innerhtml = ""


1 commentaires

Désolé, mais " ne fonctionnera pas dans ce cas. L'interpolation de chaîne est utilisée, que nécessite backticks; onclick =" " n'est pas conseillé - Il coule le DOM avec votre code et Afaik Ça va être obsolète bientôt.