Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
73 lines (63 sloc) 4.83 KB
''' άσκηση από το http://pythonies.mysch.gr/chapters/craps.pdf
Το «Ανάμεσα» ή «Acey Ducey» είναι ένα παιχνίδι με χαρτιά. Ο ένας παί-
κτης (η «μάνα») τραβάει δύο χαρτιά από την τράπουλα και τα δείχνει
στο δεύτερο παίκτη. Εκείνος με την σειρά του στοιχηματίζει ένα ποσό
και νικάει όταν το τρίτο χαρτί είναι ανάμεσα στα δύο πρώτα. Όσο πιο
απίθανο είναι να νικήσει ένας παίκτης, τόσο μεγαλύτερο είναι το ποσό
που θα κερδίσει. Συγκεκριμένα, αν υπάρχουν d χαρτιά ανάμεσα στα δύο
πρώτα, τότε το ποσό που κερδίζει ο παίκτης σε περίπτωση νίκης θα είναι
12/d φορές το ποσό που στοιχημάτισε.
Για παράδειγμα, αν τα δύο πρώτα χαρτιά είναι το 5 και το 8, τότε ο δεύτε-
ρος παίκτης θα νικήσει αν το επόμενο χαρτί είναι το 6 ή το 7 (d=2). Στην
περίπτωση αυτή θα κερδίσει 6 φορές το ποσό που στοιχημάτισε.
Θεωρήστε ότι τα χαρτιά που χρησιμοποιούνται είναι από το 1 μέχρι και
το 13 (τα τρία τελευταία αντιστοιχούν στον βαλέ, τη ντάμα και τον ρήγα).
Αναπτύξτε πρόγραμμα το οποίο παράγει τυχαία τα δύο πρώτα χαρτιά της
μάνας. Αυτά θα πρέπει να διαφέρουν αριθμητικά τουλάχιστον κατά δύο
μονάδες, ώστε να υπάρχει περιθώριο για τουλάχιστον ένα χαρτί ανάμεσά
τους (d≥1), αλλιώς η μάνα θα πρέπει να μοιράσει δύο νέα χαρτιά. Στη
συνέχεια, το πρόγραμμα ρωτά τον παίκτη το ποσό που επιθυμεί να στοι-
χηματίσει και παράγει το τρίτο χαρτί, εμφανίζοντας κατάλληλο μήνυμα
με το ποσό που κέρδισε ή έχασε ο δεύτερος παίκτης.
'''
import random
# επανάληψη μέχρι τα δύο πρώτα χαρτιά να είναι έγκυρα
# (οπότε και η valid θα γίνει True)
valid = False
while not valid:
# παραγωγή δύο τυχαίων χαρτιών από το 1 μέχρι το 13
card1 = random.randint(1,13)
card2 = random.randint(1,13)
# φροντίζουμε στο πρώτο χαρτί ν' αντιστοιχεί ο μικρότερος αριθμός και στο δεύτερο ο μεγαλύτερος
# αν τα πράγματα δεν είναι έτσι τότε ανταλλάσουμε τις τιμές των δύο χαρτιών
if card1 > card2:
card2, card1 = card1, card2
# εναλλακτικά θα μπορούσαμε να ανταλλάξουμε τα περιεχόμενα των 2 μεταβλητών
# χρησιμοποιώντας μια τρίτη, βοηθητική μεταβλητή, όπως φαίνεται παρακάτω.
'''
if card1 > card2:
temp = card1
card1 = card2
card2 = temp
'''
print("Τα χαρτιά είναι το", card1, "και το", card2)
# υπολογισμός διαφοράς των δύο χαρτιών, για να βρούμε πόσα χαρτιά είναι ανάμεσά τους
d = card2 - card1 - 1
# αν η διαφορά των δύο χαρτιών είναι επαρκής
if d >= 1:
# τα χαρτιά είναι έγκυρα
valid = True
else:
print("Θα πρέπει να ξανατραβήξω.")
# ερώτηση στον παίκτη για το ποσό που θα στοιχηματίσει
print("Δώσε το ποσό που θα στοιχηματίσεις:", end=" ")
amount = int(input())
# παράγουμε και το τρίτο χαρτί κι ενημερώνουμε κατάλληλα τον παίκτη για το ποσό που χάνει ή κερδίζει
card3 = random.randint(1,13)
print("Το τρίτο χαρτί είναι το", card3)
if card3 > card1 and card3 < card2:
# υπολογισμός του ποσού που κέρδισε, αφαιρώντας το ποσό πονταρίσματος
gain = int((12 / d) * amount) - amount
print("Κέρδισες", gain, "ευρώ")
else:
print("Κρίμα, έχασες", amount, "ευρώ")