Je suis novice en Python et j'ai passé mes premières dizaines d'heures avec mes cours en ligne, mes projets de devoirs et quelques lectures de documentation bien sûr.
J'ai presque terminé un de mes cours. Mon projet final consiste à créer un jeu de cartes facile que j'ai déjà terminé (code ci-dessous). Je voudrais expliquer brièvement ce qu'est mon jeu. C'est un jeu de cartes facile à jouer pour un nombre indéfini de joueurs. Les joueurs devinent simplement si la prochaine carte sera plus basse ou plus haute que la précédente et gagnent ou perdent en pariant selon qu'ils ont eu raison ou non.
D'après ce que j'ai testé, mon code fonctionne (j'ai trouvé un bug que je n'ai pas pu résoudre jusqu'à présent - lorsque tous les joueurs ont perdu dans un tour, ils ne sont pas tous expulsés du jeu comme ils devraient l'être).
Quoi qu'il en soit, mon principal problème est que je ne sais pas comment implémenter ceci dans mon code : A n'importe quel moment du jeu, quelqu'un devrait pouvoir taper "--help" pour être amené à un écran où il peut lire les règles du jeu et les instructions pour jouer. Après avoir fini de lire, il devrait pouvoir taper "--resume" pour retourner au jeu et reprendre là où il s'est arrêté. (J'ai trouvé à peu près la même question ici : Python simple jeu de cartes - )
J'ai fait un peu de recherche et la seule chose utile que j'ai trouvée était help()
fonction. J'ai essayé de l'implémenter mais je ne suis pas sûr que ce soit le bon choix pour faire ce drapeau --help et --resume (est-ce même appelé drapeau ? Je ne suis pas sûr à 100% de la terminologie Python).
Mon code est :
from random import shuffle, randrange
def cardDeck(): # create deck of the cards
cardDeck = []
for value in range(4): # four sets of cards
for i in range(2, 11): # for number values
if value == 0:
cardDeck.append(str(i) + '')
if value == 1:
cardDeck.append(str(i) + '')
if value == 2:
cardDeck.append(str(i) + '')
if value == 3:
cardDeck.append(str(i) + '')
figures = ['J', 'Q', 'K', 'A']
for figure in figures: # for four set of figures
cardDeck.append(str(figure) + '')
cardDeck.append(str(figure) + '')
cardDeck.append(str(figure) + '')
cardDeck.append(str(figure) + '')
shuffle(cardDeck)
return cardDeck
class Player: # define player class
def __init__(self, nickname='Player', bankroll=100, value=0):
self.nick = nickname
self.bankroll = int(bankroll)
self.value = value
self.BetKind = ''
self.amount = 0
def __str__(self):
return self.nick + ' plays'
def win(self):
self.bankroll += 2 * int(self.amount)
def MassBet(self):
for i in range(1000):
self.amount = int(input('how much do you want to bet? '))
if self.amount <= self.bankroll:
break
else:
print('You can bet only your current bank!')
for i in range(1000):
self.BetKind = input('higher/lower [h/l] ')
if self.BetKind == 'h' or self.BetKind == 'l':
break
else:
print("Please enter only 'h' or 'l' ")
self.bankroll -= int(self.amount)
def GetValue(self, card):
self.value = Values[card[0:-1]]
Deck = cardDeck()
Values = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7,
'8': 8, '9': 9, '10': 10, 'J': 11, 'Q': 12, 'K': 13, 'A': 14} # define value of each card
PlayerList = []
NPlayers = int(input('How many players are going to play? ')) # Here you can define players
for i in range(NPlayers):
print('Inicialization, player ', i+1)
nickname = input('What is your nickname? ')
bankroll = input('What is your bank? ')
player = Player(nickname, bankroll)
PlayerList.append(player)
oldCardsValues = []
oldCardsValues.append(Deck[-1]) # first card that everybody see
Deck.pop()
round = 0
while True:
print('You bet againts: ', oldCardsValues[-1])
for player in PlayerList: # define kind of the bet for each player
print(player.nick+', ', end = '')
player.MassBet()
DrawCard = Deck.pop()
if NPlayers == 1:
print('You draw: ', DrawCard)
else:
print('All players bet! Draw is: ', DrawCard)
for player in PlayerList: # define if player won or lost
player.GetValue(DrawCard)
if player.BetKind == 'l':
if Values[oldCardsValues[-1][0:-1]] > player.value:
player.win()
print(player.nick,'won! New bankroll: ', player.bankroll)
elif Values[oldCardsValues[-1][0:-1]] < player.value:
print(player.nick, 'lost! New bankroll: ', player.bankroll)
else:
print('Same card', player.nick, 'lost')
elif player.BetKind == 'h':
if Values[oldCardsValues[-1][0:-1]] < player.value:
player.win()
print(player.nick,'won! New bankroll: ', player.bankroll)
elif Values[oldCardsValues[-1][0:-1]] > player.value:
print(player.nick, 'lost! New bankroll: ', player.bankroll)
else:
print('Same card', player.nick, 'lost')
print(player.bankroll)
if player.bankroll <= 0: # if player run out of cash he is out
print(player.nick, 'I am sorry, you run out of your cash. You are out.')
PlayerList.remove(player)
if len(PlayerList) == 0: # if there are no remaining players game is over
print('No more players left. Game Over!')
break
round += 1
MixCoeficcient = randrange(25, 35)
if len(Deck) < MixCoeficcient: # create new deck in random interval of the remaining cards
Deck = cardDeck()
oldCardsValues.append(DrawCard)
print('-'*40)
Pourriez-vous me conseiller sur la manière d'implémenter ces --help et --resume dans mon jeu ? Où chercher ou même me dire ce que je dois chercher ?
Par ailleurs, si vous souhaitez me faire part de vos commentaires sur le code (ce qui peut être écrit plus facilement ou ce que je dois éviter dans ma future carrière de codeur ou toute autre chose), je vous en serais très reconnaissant.