Jogo de números 21 em Python
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():
(
"\n\nYOU LOSE !"
)
(
"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
:
(
"Enter 'F' to take the first chance."
)
(
"Enter 'S' to take the second chance."
)
chance
=
input
(
'> '
)
if
chance
=
=
"F"
:
while
True
:
if
last
=
=
20
:
lose1()
else
:
(
"\nYour Turn."
)
(
"\nHow many numbers do you wish to enter?"
)
inp
=
int
(
input
(
'> '
))
if
inp >
0
and
inp <
=
3
:
comp
=
4
-
inp
else
:
(
"Wrong input. You are disqualified from the game."
)
lose1()
i, j
=
1
,
1
(
"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
(
"Order of inputs after computer's turn is: "
)
(xyz)
last
=
xyz[
-
1
]
else
:
(
"\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
(
"Order of inputs after computer's turn is:"
)
(xyz)
if
xyz[
-
1
]
=
=
20
:
lose1()
else
:
(
"\nYour turn."
)
(
"\nHow many numbers do you wish to enter?"
)
inp
=
input
(
'> '
)
inp
=
int
(inp)
i
=
1
(
"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
:
(
"\nYou did not input consecutive integers."
)
lose1()
(
"\n\nCONGRATULATIONS !!!"
)
(
"YOU WON !"
)
exit(
0
)
else
:
(
"wrong choice"
)
game
=
True
while
game
=
=
True
:
(
"Player 2 is Computer."
)
(
"Do you want to play the 21 number game? (Yes / No)"
)
ans
=
input
(
'> '
)
if
ans
=
=
'Yes'
:
start1()
else
:
(
"Do you want quit the game?(yes / no)"
)
nex
=
input
(
'> '
)
if
nex
=
=
"yes"
:
(
"You are quitting the game..."
)
exit(
0
)
elif
nex
=
=
"no"
:
(
"Continuing..."
)
else
:
(
"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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva