Neu
Hallo Leute,
ich wollte das Schere, Stein, Papier mal zeigen. Nachdem Lichtjaeger mich auf async und await gebracht hat habe ich das alles meinem Kumpel gezeigt und der hat dann die anderen wesentlichen Teile gebaut. Ist längst noch nicht fertig!
Alles anzeigen
Ich hör jetzt erstmal damit auf und mach andere Sachen. Aber ich werde dieses Programm immer mal wieder anschauen und durchdenken. Hoffe es ist auch für andere ein Beispiel wie man Sachen schreiben kann.
Grüße
ich wollte das Schere, Stein, Papier mal zeigen. Nachdem Lichtjaeger mich auf async und await gebracht hat habe ich das alles meinem Kumpel gezeigt und der hat dann die anderen wesentlichen Teile gebaut. Ist längst noch nicht fertig!
JavaScript-Quellcode
- const readline = require('readline')
- const rl = readline.createInterface({
- input: process.stdin,
- output: process.stdout
- })
- const possibilitys = new Array('Schere', 'Stein', 'Papier')
- //const points = new Array(0,0)
- module.exports = {
- play: play
- }
- async function play() {
- rl.write('Herzlich Willkommen zu Schere Stein Papier\nDrücken Sie Enter um zu Starten\n')
- await waitForEnter()
- //displaypoints()
- //rl.write('ready!!\n')
- /*let answer = await asyncQuestion('What do you think of Node.js? ')
- console.log(`Thank you for your valuable feedback: ${answer}`)
- rl.close()*/
- Array.from({length: 1})
- .reduce((acc) => acc.then((res) =>
- round().then((result) => {
- res.push(result);
- return res;
- })
- ), Promise.resolve([]))
- .then((results) => results.map((winner, round) => {
- if (winner == 0) {
- console.log(`Runde ${round+1} hat keiner gewonnen`);
- } else {
- console.log(`Runde ${round+1} hat Spieler ${winner} gewonnen`);
- }
- return (winner == 2) ? -1 : winner;
- }))
- .then((results) => results.reduce((acc, cur) => acc + cur))
- .then((result) => {
- if (result == 0)
- console.log('Es gab keinen Gewinner');
- else
- console.log(`Spieler ${((result>0)?1:2) == 1 ? 1 : 'Computer'} hat gewonnen!`);
- process.exit(0);
- });
- }
- var round = () => new Promise(async (resolve) => {
- let p1 = (await zug(1)).name;
- let p2 = (await computermove()).name;
- resolve((p1 - p2 == 0) ? 0 : ((p1 - p2 == 1 || p1 - p2 == -2) ? 1 : 2));
- });
- function zug(spieler) {
- return new Promise(resolve => {
- rl.write(`Spieler ${spieler}, treffe deine Wahl: 1) Schere 2) Stein 3) Papier\n`);
- process.stdin.on('keypress', function onKeypress(letter, key) {
- if (key && "123".indexOf(key.name) !== -1) {
- process.stdin.removeListener('keypress', onKeypress);
- rl.write('\n');
- resolve(key);
- }
- });
- });
- }
- function asyncQuestion(question) {
- return new Promise(resolve => rl.question(question, resolve))
- }
- function waitForEnter() {
- return new Promise(resolve => {
- process.stdin.on('keypress', function onKeypress(letter, key) {
- readline.moveCursor(process.stdout, -1, 0)
- readline.clearLine(process.stdout, 1)
- if (key && key.name === 'return') {
- process.stdin.removeListener('keypress', onKeypress)
- resolve()
- }
- })
- })
- }
- function displaypossibilitys(){
- possibilitys.forEach(function(input){
- console.log(input)
- })
- }
- function displaypoints(){
- console.log(`Aktueller Spielstand:\nMensch ${points[0]} Computer ${points[1]}\n`)
- }
- function randomchoice(){
- return possibilitys[Math.floor(Math.random() * 3)]
- }
- /*function computermove(){
- setTimeout(() => console.log('"Ching"'), 1000)
- setTimeout(() => console.log('"Chang"'), 2000)
- setTimeout(() => console.log('"Chong"'), 3000)
- setTimeout(() => console.log(`\nComputer hat: ${randomchoice()}`), 4000)
- }*/
- var computermove = () => new Promise((resolve) => {
- setTimeout(() => console.log('"Ching"'), 1000);
- setTimeout(() => console.log('"Chang"'), 2000);
- setTimeout(() => console.log('"Chong"'), 3000);
- setTimeout(() => {
- let wahl = randomchoice();
- console.log(`\nComputer hat: ${wahl}`);
- resolve(wahl);
- }, 4000);
- });
- /*function getchoice(input){
- console.log("Triff eine Wahl:")
- if( possibilitys.includes(input) ){
- return console.log(input)
- } else {
- return console.log("Willst du spielen oder nicht?")
- }
- }*/
Grüße