Die CPU und der Benutzer bekommen wiederholt Karten. Ich habe die shuffle
Funktion sowie pop
verwendet. Gibt es eine Möglichkeit zu verhindern, dass der Benutzer und die CPU wiederholt Karten bekommen?Wie wiederhole ich Zufallswerte?
Hier ein Beispiel für die Ausführung ist:
hier Ihre Karten sind:
1) Die 10 Clubs
2) Die 4 of Diamonds
3) Die 6 von Diamanten
4) Die 7 von Clubs
5) Die 10 von ClubsUm Karten zu spielen, geben Sie einfach ihre Nummer eins nach dem anderen. Wenn Sie fertig sind, Eingang leer
Sie gespielt: Das 4 of Diamonds Die 10 Clubs Die 6 of Diamonds Die 7 von Clubs
CPU gespielt: The Jack of Spades Die Pik Jack
Wie Sie sehen können, wurde der Benutzer die 10 Clubs zweimal gegeben.
Mein Code:
import random
import math
from collections import Counter
print("Gui-less poker sucks, but it sure is addicting probably")
if 1:
deck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
random.shuffle(deck)
hcardss = [""]
hcardsc = [""]
hcardsh = [""]
ccardss = [""]
ccardsc = [""]
ccardsh = [""]
ingame = "true"
while (ingame == "true"):
undone = 5
while (undone > 0):
card = deck.pop()
# print(card)
temp = card/13
temp2 = card/4
temp = math.floor(temp)
temp2 = math.floor(temp2)
temp = temp + 1
# temp2 = temp2 + 1
#print(temp)
#print(temp2)
# undone -= 1
hcardss.append(temp)
hcardsc.append(temp2)
if (temp == 1):
temp3 = " of Spades"
elif (temp == 2):
temp3 = " of Diamonds"
elif (temp == 3):
temp3 = " of Clubs"
else:
temp3 = " of Hearts"
if (temp2 == 10):
temp4 = "Jack"
elif (temp2 == 11):
temp4 = "Queen"
elif (temp2 == 12):
temp4 = "King"
elif (temp2 == 13):
temp4 = "Ace"
else:
temp4 = str(temp2 + 1)
# print("Your card was the " + temp4 + temp3)
hcardsh.append("The " + temp4 + temp3)
undone -= 1
undone = 5
random.shuffle(deck)
while (undone > 0):
# THIS ONE IS THE COMPUTER
card = deck.pop()
# print(card)
temp = card/13
temp2 = card/4
temp = math.floor(temp)
temp2 = math.floor(temp2)
temp = temp + 1
# temp2 = temp2 + 1
#print(temp)
#print(temp2)
# undone -= 1
ccardss.append(temp)
ccardsc.append(temp2)
if (temp == 1):
temp3 = " of Spades"
elif (temp == 2):
temp3 = " of Diamonds"
elif (temp == 3):
temp3 = " of Clubs"
else:
temp3 = " of Hearts"
if (temp2 == 10):
temp4 = "Jack"
elif (temp2 == 11):
temp4 = "Queen"
elif (temp2 == 12):
temp4 = "King"
elif (temp2 == 13):
temp4 = "Ace"
temp4 = str(temp2 + 1)
# print("Your card was the " + temp4 + temp3)
ccardsh.append("The " + temp4 + temp3)
undone -= 1
print()
print()
print()
print("Here are your cards:")
print("1) " + hcardsh[1])
print("2) " + hcardsh[2])
print("3) " + hcardsh[3])
print("4) " + hcardsh[4])
print("5) " + hcardsh[5])
print("To play cards, simply type their number one at a time. When done, input blank")
instant = "true"
doneinput = "false"
hplay = [""]
while (doneinput == "false"):
latestinput = input("> ")
if (latestinput == ""):
if (instant == "true"):
print("Okay, you fold")
ingame = "false"
exit()
doneinput = "true"
else:
if (int(latestinput) in hplay):
print("You already picked that one!")
else:
hplay.append(int(latestinput))
# print("The cards you played are " + str(hplay))
doneinput = "false"
cplay = [""]
while (doneinput == "false"):
latestinput = random.randint(1,5)
if (latestinput == ""):
doneinput = "true"
else:
if (int(latestinput) in cplay):
doneinput = "true"
else:
cplay.append(int(latestinput))
#print("So you played " + str(hplay))
#print("And the cpu played " + str(cplay))
#print("So you played the " + hcardsh[hplay[1]] + hcardsh[hplay[2]]
times = len(hplay)
# times = times - 1
hplayh = [""]
cplayh = [""]
sub = 1
print()
print()
print("You played:")
while (sub < times):
hplayh.append(hcardsh[hplay[sub]])
print(hcardsh[hplay[sub]])
sub += 1
sub = 1
times = len(cplay)
print()
print()
print("CPU played:")
while (sub < times):
cplayh.append(ccardsh[cplay[sub]])
print(ccardsh[cplay[sub]])
sub += 1
#print(str(hplay)
#print(str(cplayh))
hscore = 0
cscore = 0
#checker = 1
#highnumber = 0
#quantity = [""]
#quancheck = 0
htrans = [""]
temp5 = 1
while (len(hplay) > temp5):
htrans.append(int(hcardsc[hplay]))
temp5 += 1
ctrans = [""]
temp5 = 1
while (len(cplay) > temp5):
ctrans.append(int(ccardsc[cplay]))
temp5 += 1
hoccur = Counter(htrans).most_common()
coccur = Counter(ctrans).most_common()
print(hoccur)
#while (len(hplay) > checker):
# if (hcardsc[hplay[checker]] > highnumber):
# quancheck += 1
# quantity.append(quancheck)
#checker += 1
ingame = "false"
Du einen 'Set' erstellen (oder' list' wenn Sie wirklich wollen) von Karten, ein zufälliges Element auswählen und entfernen. Dann können Sie nicht die gleiche Karte als nächstes bekommen. – byxor
Ich denke, du solltest die Deklaration von "deck" in die äußere While-Schleife verschieben. –
Ich bin mir auch ziemlich sicher, dass dies passieren könnte, wenn es zwei Zahlen wie "14" und "15" bekommt, da die Division dieser Zahlen durch "4" und "13" die gleichen Werte ergibt. –