1edmundo09947689Puntos6 mesesSolución con js<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>classjugador{ constructor(id, eleccion, resultado){ this.id = id, this.eleccion = eleccion this.resultado = resultado } } let numJugadores = parseInt(prompt('Bienvenido a Rock Paper Scissors Multiplayer, indica cuantos jugadores habrán en el torneo.')) alert('Los jugadores empiezan desde 0, o sea jugador 0, jugador 1, jugador 2, etc etc') alert('Los jugadores deberan escoger entre pi -> piedra, pa -> papel, ti -> tijera, por favor, escoga correctamente!') alert('Si la cantidad de contendientes es impar, el último jugará en la siguiente ronda como el primer participante!') let jugadores = [] let sobrante = [] // Se crean mis jugadoresfor (let i = 0; i < numJugadores; i++){ jugadores.push(new jugador(i)) } juego() functionjuego(partida) { if (jugadores.length % 2 !== 0){ sobrante = jugadores.pop() } let contador = 0while (contador < jugadores.length){ jugadores[contador].eleccion = prompt(`Indique que escogera el jugador ${jugadores[contador].id}`) jugadores[contador + 1].eleccion = prompt(`Indique que escogera el jugador ${jugadores[contador + 1].id}`) if ((jugadores[contador].eleccion === 'pi' && jugadores[contador + 1].eleccion === 'ti') || (jugadores[contador].eleccion === 'ti' && jugadores[contador + 1].eleccion === 'pa') || (jugadores[contador].eleccion === 'pa' && jugadores[contador + 1].eleccion === 'pi')) { jugadores[contador].resultado = 1 jugadores[contador + 1].resultado = 0 } elseif ((jugadores[contador].eleccion === 'pi' && jugadores[contador + 1].eleccion === 'pa') || (jugadores[contador].eleccion === 'ti' && jugadores[contador + 1].eleccion === 'pi') || (jugadores[contador].eleccion === 'pa' && jugadores[contador + 1].eleccion === 'ti')) { jugadores[contador].resultado = 0 jugadores[contador + 1].resultado = 1 } if (jugadores[contador].resultado === 1){ alert(`Gano el jugador ${jugadores[contador].id}`) contador = contador + 2 } elseif (jugadores[contador + 1].resultado === 1){ alert(`Gano el jugador ${jugadores[contador + 1].id}`) contador = contador + 2 } else { alert('Empate se vuelve a jugar') } } for (let i = 0; i < jugadores.length; i++){ if (jugadores[i].resultado === 0){ alert(`El jugador ${jugadores[i].id} es eliminado del torneo`) jugadores.splice(i, 1) } } if (sobrante.length !== 0){ jugadores.unshift(sobrante) sobrante = [] } if (jugadores.length === 1){ alert(`El ganador del torneo es el jugador ${jugadores[0].id}`) } else { jugadores.forEach(jugador => { alert(`El jugador ${jugador.id} sigue en el torneo`) }); juego() } } </script></body></html>Recuerdo que el código se encuentra en https://github.com/Edmundo0994/PlatziCodeChallenge
1fernandojerez28285Puntos6 mesesimport getpass scores = {'pa-pi','pi-ti', 'ti-pa'} defwho_won(player1, player2, player1_id, player2_id ):if f'{player1}-{player2}'in scores: return player1_id if f'{player2}-{player1}'in scores: return player2_id return"tie"defto_int(val, msg):try: return int(val) except: print(msg) defget_selection(player): result = getpass.getpass(f"Player {player} select an option:\n" \ "1. Stone\n" \ "2. Paper\n" \ "3. Scissors\n: ").strip() if result == '1': return"pi"if result == '2': return"pa"if result == '3': return"ti"returnNonedefto_value(code):if code == 'pi': return"Stone"if code == 'pa': return"Paper"return"Scissors"defgame(multiplayer): def_msg = "No players today. It's OK!" print("Welcome to Stone - Paper - Scissors!") players = 2if multiplayer: print("""This is a multiplayer game.""") players = to_int(input("Number of Players? "), def_msg) if players == 0: print(def_msg) returnNoneif players == 1: print("\u001b[32mPlayer 1 won by default\u001b[0m") returnNone p1 = 1 p2 = 2 matches = players - 1whileTrue: if matches == 0: break print(f"Player {p1} vs {p2}") p1_value = get_selection(p1) if p1_value == None: print(f"\u001b[32mPlayer {p2} win\u001b[0m") p1 = 2 p2 += 1#next player matches -= 1continue p2_value = get_selection(p2) if p2_value == None: print(f"\u001b[32mPlayer {p1} win\u001b[0m") p2 += 1#next player matches -= 1continue match_winner = who_won(p1_value, p2_value, p1, p2) if match_winner == 'tie': print(f"\u001b[33m{to_value(p1_value)} vs {to_value(p2_value)} we have a tie lets go to a rematch\u001b[0m") continue p1 = match_winner p2 += 1 matches -= 1 print(f"\u001b[32m{to_value(p1_value)} vs {to_value(p2_value)} the winner is Player {p1}\u001b[0m") if __name__ == "__main__": game(True)
1cristianiniguez19943Puntos6 mesesReto 60 en JavaScript// Real Multiplayer en JavaScriptconst PIEDRA = 1const PAPEL = 2const TIJERAS = 3classPPT_Multiplayer{ constructor(numPlayers) { this.initPlayers(numPlayers) // Se crean los jugadoresthis.currentGame = 0while (this.players.length > 1) { // Se toman turnos mientras hayan más de 1 jugadorthis.currentGame++ alert('Juego ' + this.currentGame) this.getChoices() // Se obtienen las elecciones de los jugadoreslet losers = this.getLosers() // Se obtienen los jugadores que perdieron (los perdedores se eliminan)if (losers.length > 0) { alert(`Perdieron: ${losers.map(p => p.name).join(', ')}`) } else { alert(`No perdió nadie`) } } alert('Gana ' + this.players[0].name) // Se dice quien ganó } initPlayers(numPlayers) { this.players = newArray() for (let p = 0; p < numPlayers; p++) { this.players.push({ name: 'Jugador ' + (p + 1) }) } } getChoices() { this.players.forEach(p => { let choice do { choice = parseInt(prompt(`${p.name}: ¿Piedra(1) Papel(2) o Tijera(3)`)) if (choice < 1 || choice > 3 || isNaN(choice)) { alert(`${p.name}: Debe escoger un número entre 1 y 3`) } } while (choice < 1 || choice > 3 || isNaN(choice)); p.choice = choice }) } getLosers() { let losers = newArray() // Se obtienen las opciones escogidas entre todoslet choices = Array.from(newSet(this.players.map(player => player.choice))) if (choices.length === 2) { // Si se escogieron entre 2 opcioneslet winnerChoice = this.getWinnerChoice(choices) // Se busca la opción ganadora (Reto 58)this.players.forEach(p => { // Se buscan los jugadores que perdieronif(p.choice !== winnerChoice) { losers.push(p) } }) losers.forEach(p => { // Se eliminan los perdedoresthis.players.splice(this.players.indexOf(p), 1) }) } return losers } getWinnerChoice(choices) { // Reto 58 (no permite empates)switch (choices[0]) { case PIEDRA: switch (choices[1]) { case PAPEL: return choices[1] case TIJERAS: return choices[0] } case PAPEL: switch (choices[1]) { case PIEDRA: return choices[0] case TIJERAS: return choices[1] } case TIJERAS: switch (choices[1]) { case PIEDRA: return choices[1] case PAPEL: return choices[0] } } } } const Juego = new PPT_Multiplayer(3)
Solución con js
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>classjugador{ constructor(id, eleccion, resultado){ this.id = id, this.eleccion = eleccion this.resultado = resultado } } let numJugadores = parseInt(prompt('Bienvenido a Rock Paper Scissors Multiplayer, indica cuantos jugadores habrán en el torneo.')) alert('Los jugadores empiezan desde 0, o sea jugador 0, jugador 1, jugador 2, etc etc') alert('Los jugadores deberan escoger entre pi -> piedra, pa -> papel, ti -> tijera, por favor, escoga correctamente!') alert('Si la cantidad de contendientes es impar, el último jugará en la siguiente ronda como el primer participante!') let jugadores = [] let sobrante = [] // Se crean mis jugadoresfor (let i = 0; i < numJugadores; i++){ jugadores.push(new jugador(i)) } juego() functionjuego(partida) { if (jugadores.length % 2 !== 0){ sobrante = jugadores.pop() } let contador = 0while (contador < jugadores.length){ jugadores[contador].eleccion = prompt(`Indique que escogera el jugador ${jugadores[contador].id}`) jugadores[contador + 1].eleccion = prompt(`Indique que escogera el jugador ${jugadores[contador + 1].id}`) if ((jugadores[contador].eleccion === 'pi' && jugadores[contador + 1].eleccion === 'ti') || (jugadores[contador].eleccion === 'ti' && jugadores[contador + 1].eleccion === 'pa') || (jugadores[contador].eleccion === 'pa' && jugadores[contador + 1].eleccion === 'pi')) { jugadores[contador].resultado = 1 jugadores[contador + 1].resultado = 0 } elseif ((jugadores[contador].eleccion === 'pi' && jugadores[contador + 1].eleccion === 'pa') || (jugadores[contador].eleccion === 'ti' && jugadores[contador + 1].eleccion === 'pi') || (jugadores[contador].eleccion === 'pa' && jugadores[contador + 1].eleccion === 'ti')) { jugadores[contador].resultado = 0 jugadores[contador + 1].resultado = 1 } if (jugadores[contador].resultado === 1){ alert(`Gano el jugador ${jugadores[contador].id}`) contador = contador + 2 } elseif (jugadores[contador + 1].resultado === 1){ alert(`Gano el jugador ${jugadores[contador + 1].id}`) contador = contador + 2 } else { alert('Empate se vuelve a jugar') } } for (let i = 0; i < jugadores.length; i++){ if (jugadores[i].resultado === 0){ alert(`El jugador ${jugadores[i].id} es eliminado del torneo`) jugadores.splice(i, 1) } } if (sobrante.length !== 0){ jugadores.unshift(sobrante) sobrante = [] } if (jugadores.length === 1){ alert(`El ganador del torneo es el jugador ${jugadores[0].id}`) } else { jugadores.forEach(jugador => { alert(`El jugador ${jugador.id} sigue en el torneo`) }); juego() } } </script></body></html>
Recuerdo que el código se encuentra en https://github.com/Edmundo0994/PlatziCodeChallenge
import getpass scores = {'pa-pi','pi-ti', 'ti-pa'} defwho_won(player1, player2, player1_id, player2_id ):if f'{player1}-{player2}'in scores: return player1_id if f'{player2}-{player1}'in scores: return player2_id return"tie"defto_int(val, msg):try: return int(val) except: print(msg) defget_selection(player): result = getpass.getpass(f"Player {player} select an option:\n" \ "1. Stone\n" \ "2. Paper\n" \ "3. Scissors\n: ").strip() if result == '1': return"pi"if result == '2': return"pa"if result == '3': return"ti"returnNonedefto_value(code):if code == 'pi': return"Stone"if code == 'pa': return"Paper"return"Scissors"defgame(multiplayer): def_msg = "No players today. It's OK!" print("Welcome to Stone - Paper - Scissors!") players = 2if multiplayer: print("""This is a multiplayer game.""") players = to_int(input("Number of Players? "), def_msg) if players == 0: print(def_msg) returnNoneif players == 1: print("\u001b[32mPlayer 1 won by default\u001b[0m") returnNone p1 = 1 p2 = 2 matches = players - 1whileTrue: if matches == 0: break print(f"Player {p1} vs {p2}") p1_value = get_selection(p1) if p1_value == None: print(f"\u001b[32mPlayer {p2} win\u001b[0m") p1 = 2 p2 += 1#next player matches -= 1continue p2_value = get_selection(p2) if p2_value == None: print(f"\u001b[32mPlayer {p1} win\u001b[0m") p2 += 1#next player matches -= 1continue match_winner = who_won(p1_value, p2_value, p1, p2) if match_winner == 'tie': print(f"\u001b[33m{to_value(p1_value)} vs {to_value(p2_value)} we have a tie lets go to a rematch\u001b[0m") continue p1 = match_winner p2 += 1 matches -= 1 print(f"\u001b[32m{to_value(p1_value)} vs {to_value(p2_value)} the winner is Player {p1}\u001b[0m") if __name__ == "__main__": game(True)
Reto 60 en JavaScript
// Real Multiplayer en JavaScriptconst PIEDRA = 1const PAPEL = 2const TIJERAS = 3classPPT_Multiplayer{ constructor(numPlayers) { this.initPlayers(numPlayers) // Se crean los jugadoresthis.currentGame = 0while (this.players.length > 1) { // Se toman turnos mientras hayan más de 1 jugadorthis.currentGame++ alert('Juego ' + this.currentGame) this.getChoices() // Se obtienen las elecciones de los jugadoreslet losers = this.getLosers() // Se obtienen los jugadores que perdieron (los perdedores se eliminan)if (losers.length > 0) { alert(`Perdieron: ${losers.map(p => p.name).join(', ')}`) } else { alert(`No perdió nadie`) } } alert('Gana ' + this.players[0].name) // Se dice quien ganó } initPlayers(numPlayers) { this.players = newArray() for (let p = 0; p < numPlayers; p++) { this.players.push({ name: 'Jugador ' + (p + 1) }) } } getChoices() { this.players.forEach(p => { let choice do { choice = parseInt(prompt(`${p.name}: ¿Piedra(1) Papel(2) o Tijera(3)`)) if (choice < 1 || choice > 3 || isNaN(choice)) { alert(`${p.name}: Debe escoger un número entre 1 y 3`) } } while (choice < 1 || choice > 3 || isNaN(choice)); p.choice = choice }) } getLosers() { let losers = newArray() // Se obtienen las opciones escogidas entre todoslet choices = Array.from(newSet(this.players.map(player => player.choice))) if (choices.length === 2) { // Si se escogieron entre 2 opcioneslet winnerChoice = this.getWinnerChoice(choices) // Se busca la opción ganadora (Reto 58)this.players.forEach(p => { // Se buscan los jugadores que perdieronif(p.choice !== winnerChoice) { losers.push(p) } }) losers.forEach(p => { // Se eliminan los perdedoresthis.players.splice(this.players.indexOf(p), 1) }) } return losers } getWinnerChoice(choices) { // Reto 58 (no permite empates)switch (choices[0]) { case PIEDRA: switch (choices[1]) { case PAPEL: return choices[1] case TIJERAS: return choices[0] } case PAPEL: switch (choices[1]) { case PIEDRA: return choices[0] case TIJERAS: return choices[1] } case TIJERAS: switch (choices[1]) { case PIEDRA: return choices[1] case PAPEL: return choices[0] } } } } const Juego = new PPT_Multiplayer(3)