21, Bagram ou Vinte mais um é um jogo que avança contando de 1 a 21, com o jogador que chama “21” é eliminado. Pode ser jogado entre qualquer número de jogadores.

Implementação
Este é um jogo simples de 21 números usando a linguagem de programação Python. O jogo ilustrado aqui é entre o jogador e o computador. Pode haver muitas variações no jogo.

  • O jogador pode escolher começar primeiro ou segundo.
  • A lista de números é mostrada antes de o jogador jogar, para que se torne conveniente.
  • Se os números consecutivos não forem dados na entrada, o jogador é automaticamente desqualificado.
  • O jogador perde se tiver a chance de pagar 21 e ganha caso contrário.

Ganhar contra o computador pode ser possível escolhendo jogar em segundo lugar. A estratégia é ligar para números até o múltiplo de 4, o que acabaria levando a 21 no computador, tornando o jogador o vencedor.

  
def nearestMultiple(num): 
    if num >= 4: 
        near = num + (4 - (num % 4)) 
    else: 
        near = 4
    return near 
  
def lose1(): 
    print ("\n\nYOU LOSE !") 
    print("Better luck next time !") 
    exit(0) 
      
def check(xyz): 
    i = 1
    while i<len(xyz): 
        if (xyz[i]-xyz[i-1])!= 1: 
            return False
        i = i + 1
    return True
def start1(): 
    xyz = [] 
    last = 0
    while True: 
        print ("Enter 'F' to take the first chance.") 
        print("Enter 'S' to take the second chance.") 
        chance = input('> ') 
        
        if chance == "F": 
            while True: 
                if last == 20: 
                    lose1() 
                else: 
                    print ("\nYour Turn.") 
                    print ("\nHow many numbers do you wish to enter?") 
                    inp = int(input('> ')) 
                                if inp > 0 and inp <= 3: 
                        comp = 4 - inp 
                    else: 
                        print ("Wrong input. You are disqualified from the game.") 
                        lose1() 
                        i, j = 1, 1
            print ("Now enter the values") 
                    while i <= inp: 
                        a = input('> ') 
                        a = int(a) 
                        xyz.append(a) 
                        i = i + 1
                                          last = xyz[-1
                                                    if check(xyz) == True
                        if last == 21: 
                            lose1() 
                                            else: 
                                              while j <= comp: 
                                xyz.append(last + j) 
                                j = j + 1
                            print ("Order of inputs after computer's turn is: ") 
                            print (xyz) 
                            last = xyz[-1] 
                    else: 
                        print ("\nYou did not input consecutive integers.") 
                        lose1() 
                        
        elif chance == "S": 
            comp = 1
            last = 0
            while last < 20: 
                      j = 1
                while j <= comp: 
                    xyz.append(last + j) 
                    j = j + 1
                print ("Order of inputs after computer's turn is:") 
                print (xyz) 
                if xyz[-1] == 20: 
                    lose1() 
                            else: 
                    print ("\nYour turn.") 
                    print ("\nHow many numbers do you wish to enter?") 
                    inp = input('> ') 
                    inp = int(inp) 
                    i = 1
                    print ("Enter your values") 
                    while i <= inp: 
                        xyz.append(int(input('> '))) 
                        i = i + 1
                    last = xyz[-1] 
                    if check(xyz) == True: 
                                      near = nearestMultiple(last) 
                        comp = near - last 
                        if comp == 4: 
                            comp = 3
                        else: 
                            comp = comp 
                    else: 
                                                    print ("\nYou did not input consecutive integers.") 
                                      lose1() 
            print ("\n\nCONGRATULATIONS !!!") 
            print ("YOU WON !") 
            exit(0) 
            else: 
            print ("wrong choice") 
                          
game = True    
while game == True: 
        print ("Player 2 is Computer.") 
        print("Do you want to play the 21 number game? (Yes / No)") 
        ans = input('> ') 
        if ans =='Yes': 
            start1() 
        else: 
            print ("Do you want quit the game?(yes / no)") 
            nex = input('> ') 
            if nex == "yes": 
                print ("You are quitting the game...") 
                exit(0) 
            elif nex == "no": 
                print ("Continuing...") 
            else: 
                print ("Wrong choice") 
                 

Resultado:

O jogador 2 é o computador.
Você quer começar o jogo? (Sim não)
> Sim
Digite 'F' para ter a primeira chance.
Digite 'S' para ter a segunda chance.
> S
A ordem das entradas após a vez do computador é:
[1]
Sua vez.
Quantos números você deseja inserir?
> 3
Insira seus valores
> 2
> 3
> 4
A ordem das entradas após a vez do computador é:
[1, 2, 3, 4, 5, 6, 7]
Sua vez.
Quantos números você deseja inserir?
> 1
Insira seus valores
> 8
A ordem das entradas após a vez do computador é:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Sua vez.
Quantos números você deseja inserir?
> 1
Insira seus valores
> 12
A ordem das entradas após a vez do computador é:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Sua vez.
Quantos números você deseja inserir?
> 1
Insira seus valores
> 16
A ordem das entradas após a vez do computador é:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Sua vez.
Quantos números você deseja inserir?
> 1
Insira seus valores
> 20
PARABÉNS!!!
VOCÊ GANHOU! 

Experimente você mesmo como exercício:

  • Você pode aprimorar ainda mais o programa aumentando o número de jogadores.
  • Você também pode usar apenas números pares / ímpares.
  • Você pode substituir os números pelo sistema numérico binário.
  • Você pode adicionar níveis com variações no jogo.