Dada la familiaridad de la generación actual con los juegos y su tecnología altamente demandada, muchos aspiran a perseguir la idea de desarrollarla y hacerla avanzar aún más. Eventualmente, todos comienzan desde el principio. Mastermind es un viejo juego de descifrado de códigos jugado por dos jugadores. El juego se remonta al siglo XIX y se puede jugar con papel y lápiz.
Requisito previo:
números aleatorios en Python
Reglas del juego
Dos jugadores juegan el juego uno contra el otro; supongamos que el jugador 1 y el jugador 2.
- El jugador 1 juega primero estableciendo un número de varios dígitos.
- El jugador 2 ahora hace su primer intento de adivinar el número.
- Si el jugador 2 tiene éxito en su primer intento (a pesar de que las probabilidades son muy poco probables), ¡gana el juego y es coronado como Mastermind! Si no, entonces el jugador 1 da pistas al revelar qué dígitos o números acertó el jugador 2.
- El juego continúa hasta que el jugador 2 finalmente puede adivinar el número por completo.
- Ahora, el jugador 2 puede establecer el número y el jugador 1 juega el papel de adivinar el número.
- Si el jugador 1 puede adivinar el número en un número menor de intentos que el jugador 2, entonces el jugador 1 gana el juego y es coronado como Mastermind.
- Si no, entonces el jugador 2 gana el juego.
- El juego real, sin embargo, ha demostrado ser estético ya que los números están representados por botones codificados por colores.
Por ejemplo:
Entrada:
Player 1, set the number: 5672 Player 2, guess the number: 1472
Producción:
Not quite the number. You did get 2 digits correct. X X 7 2 Enter your next choice of numbers:
No usaremos ninguna de las Pygame
bibliotecas para ayudarnos con gráficos adicionales y, por lo tanto, solo trataremos con el marco y el concepto. Además, vamos a jugar contra la computadora, es decir, la computadora generará el número que se va a adivinar.
A continuación se muestra la implementación de la idea anterior.
import random # the .randrange() function generates a # random number within the specified range. num = random.randrange(1000, 10000) n = int(input("Guess the 4 digit number:")) # condition to test equality of the # guess made. Program terminates if true. if (n == num): print("Great! You guessed the number in just 1 try! You're a Mastermind!") else: # ctr variable initialized. It will keep count of # the number of tries the Player takes to guess the number. ctr = 0 # while loop repeats as long as the # Player fails to guess the number correctly. while (n != num): # variable increments every time the loop # is executed, giving an idea of how many # guesses were made. ctr += 1 count = 0 # explicit type conversion of an integer to # a string in order to ease extraction of digits n = str(n) # explicit type conversion of a string to an integer num = str(num) # correct[] list stores digits which are correct correct = ['X']*4 # for loop runs 4 times since the number has 4 digits. for i in range(0, 4): # checking for equality of digits if (n[i] == num[i]): # number of digits guessed correctly increments count += 1 # hence, the digit is stored in correct[]. correct[i] = n[i] else: continue # when not all the digits are guessed correctly. if (count < 4) and (count != 0): print("Not quite the number. But you did get ", count, " digit(s) correct!") print("Also these numbers in your input were correct.") for k in correct: print(k, end=' ') print('\n') print('\n') n = int(input("Enter your next choice of numbers: ")) # when none of the digits are guessed correctly. elif (count == 0): print("None of the numbers in your input match.") n = int(input("Enter your next choice of numbers: ")) # condition for equality. if n == num: print("You've become a Mastermind!") print("It took you only", ctr, "tries.")
Supongamos que el número establecido por computadora es 1564
Producción:
Guess the 4 digit number: 1564 Great! You guessed the number in just 1 try! You're a Mastermind!
Si el número no se adivina en una oportunidad.
Producción:
Guess the 4 digit number: 2164 Not quite the number. But you did get 2 digit(s) correct! Also these numbers in your input were correct. X X 6 4 Enter your next choice of numbers: 3564 Not quite the number. But you did get 2 digit(s) correct! Also these numbers in your input were correct. X 5 6 4 Enter your next choice of numbers: 1564 You've become a Mastermind. It took you only 3 tries.
Puede hacer que el juego sea más difícil aumentando el número de dígitos de la entrada o no revelando qué números de la entrada se colocaron correctamente.
Esto se ha explicado en el siguiente código.
import random #the .randrange() function generates # a random number within the specified range. num = random.randrange(1000,10000) n = int(input("Guess the 4 digit number:")) # condition to test equality of the # guess made. Program terminates if true. if(n == num): print("Great! You guessed the number in just 1 try! You're a Mastermind!") else: # ctr variable initialized. It will keep count of # the number of tries the Player takes to guess the number. ctr = 0 # while loop repeats as long as the Player # fails to guess the number correctly. while(n!=num): # variable increments every time the loop # is executed, giving an idea of how many # guesses were made. ctr += 1 count = 0 # explicit type conversion of an integer to # a string in order to ease extraction of digits n = str(n) # explicit type conversion of a string to an integer num = str(num) # correct[] list stores digits which are correct correct=[] # for loop runs 4 times since the number has 4 digits. for i in range(0,4): # checking for equality of digits if(n[i] == num[i]): # number of digits guessed correctly increments count += 1 # hence, the digit is stored in correct[]. correct.append(n[i]) else: continue # when not all the digits are guessed correctly. if (count < 4) and (count != 0): print("Not quite the number. But you did get ",count," digit(s) correct!") print("Also these numbers in your input were correct.") for k in correct: print(k, end=' ') print('\n') print('\n') n = int(input("Enter your next choice of numbers: ")) # when none of the digits are guessed correctly. elif(count == 0): print("None of the numbers in your input match.") n=int(input("Enter your next choice of numbers: ")) if n==num: print("You've become a Mastermind!") print("It took you only",ctr,"tries.")
Supongamos que el número establecido por computadora es 54876.
Producción:
Guess the 5 digit number: 38476 Not quite the number. But you did get 2 digit(s) correct! Enter your next choice of numbers: 41876 Not quite the number. But you did get 4 digit(s) correct! Enter the next choice of numbers: 54876 Great you've become a Mastermind! It took you only 3 tries!
El alcance completo de la modificación de este código es enorme. La idea aquí es tener una idea de lo que es el concepto. Hay muchos juegos como este que se basan en un código básico similar.
Al utilizar este código, desarrollándolo aún más mientras se incorporan bibliotecas de Pygame, lo haría más como el verdadero negocio, ¡sin mencionar mucho más envolvente!
Publicación traducida automáticamente
Artículo escrito por siddhant_baroth y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA