Schere Stein Papier / Rock Paper Scissors

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
__blackjack__
User
Beiträge: 1580
Registriert: Samstag 2. Juni 2018, 10:21

Samstag 3. November 2018, 17:55

@pythonstarter1: Mal als Versuch zu illustrieren das die Python-Aufgabe gar nicht wirklich Python-spezifisch ist und das dort gelernte auch in den folgenden JavaScript-Lektionen gebraucht werden kann, hier mal der Starter-Code in JavaScript:

Code: Alles auswählen

#!/usr/bin/env node
'use strict';

const MOVES = ['rock', 'paper', 'scissors'];


class Player {
    move() {
        return 'rock';
    }
    
    learn(myMove, otherMove) {}
}


function beats(move, counterMove) {
    return move === 'rock' && counterMove === 'scissors' ||
           move === 'scissors' && counterMove === 'paper' ||
           move === 'paper' && counterMove === 'rock';
}


class Game {
    constructor(playerA, playerB) {
        this.playerA = playerA;
        this.playerB = playerB;
    }
    
    playRound() {
        const moveA = this.playerA.move();
        const moveB = this.playerB.move();
        console.log('Player 1: ' + moveA + '  Player 2: ' + moveB);
        this.playerA.learn(moveA, moveB);
        this.playerB.learn(moveB, moveA);
    }
    
    playGame() {
        console.log('Game start!');
        for (var i = 0; i < 3; i++) {
            console.log('Round ' + i + ':');
            this.playRound();
        }
        console.log('Game over!');
    }
}


function main() {
    const game = new Game(new Player(), new Player());
    game.playGame();
};


if (require.main === module) {
    main();
}
Das sieht nicht zufällig sehr ähnlich aus und auch in JavaScript kann man die Aufgabe gut so umsetzen wie sie formuliert wurde. Auch das generelle Vorgehen, wie es ja schon beschrieben wurde, ist gleich. In kleinere, lös- und testbare Teilprobleme aufteilen, und die schrittweise implementieren und testen. Da kommt am Ende in JavaScript fast das gleiche heraus wie in Python, nur mit anderer Syntax. Und bei JavaScript wahrscheinlich dann noch einen Tick komplizierter wegen der asynchronen Architektur mit Callbacks, die jetzt in dem Starter-Code noch nicht sichtbar wird, aber die spätestens dann grundlegend wird, wenn man das dann auf den Webbrowser überträgt.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
Antworten