e-ΜΑΘΗΜΑΤΑ |
Δημιουργία παιχνιδιού : Mastermind |
ΠΡΟΓΡΑΜΜΑ Mastermind
! Ο ένας θα δημιουργήσει ένα μυστικό κωδικό τον οποίο ο άλλος θα προσπαθήσει να σπάσει.
! επιλέγοντας ένα τετραψήφιο αριθμό με ψηφία από 1 μέχρι 6.
! Ο άλλος παίκτης προσπαθεί να μαντέψει ποιος είναι ο κωδικός
! δίνοντας έναν τετραψήφιο αριθμό κάθε φορά.
! Για κάθε πρόβλεψη εμφανίζεται ο αριθμός για τα σωστά ψηφία στη σωστή θέση (ΜΑΥΡΑ)
! και ο αριθμός για τα σωστά ψηφία σε λάθος θέση (ΛΕΥΚΑ) .
! Για ψηφία που δεν υπάρχουν , δεν εμφανίζεται κάποια ένδειξη.
! Το παιχνίδι τερματίζεται αν ο δεύτερος παίχτης βρει τον κωδικό
! ή όταν κάνει 10 προσπάθειες χωρίς να βρει τον κωδικό.
!
! Να γραφεί πρόγραμμα σε ΓΛΩΣΣΑ
! α. Να καλεί διαδικασία διαβάσματος τετραψήφιου μυστικού αριθμού
! β. Να καλεί διαδικασία που εμφανίζει πίνακα 10 θέσεων με τους αριθμούς
! που έχουν δoθεί και τα σωστά/λάθος ψηφία κάθε φοράς.
! γ. Να διαβάζει επαναληπτικά τους αριθμούς που μαντεύει ο 2ος παίκτης
! μέχρι να βρει τον μυστικό ή να κάνει 10 προσπάθειες.
! Σε κάθε διάβασμα εμφανίζει τον πίνακα με όλες τις "μαντεψιές" καλώντας
! τη διαδικασία εμφάνισης πίνακα.
!
! 2ο ΓΕΛ Γέρακα - Βασίλης Αναστόπουλος - 2022
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Μυστικός, πίνακας[10], αριθμός, i, ΜΑΥΡΑ, ΛΕΥΚΑ
ΑΡΧΗ
ΚΑΛΕΣΕ διάβασμα_τετραψήφιου ('Δώστε τον μυστικό αριθμό:', Μυστικός, ΨΕΥΔΗΣ)
ΚΑΛΕΣΕ Καθάρισε_οθόνη
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
πίνακας[i] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ εμφάνισε_πίνακα (πίνακας, Μυστικός)
i <- 1
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ διάβασμα_τετραψήφιου ('Μαντέψτε τον αριθμό:', αριθμός, ΑΛΗΘΗΣ)
πίνακας[i] <- αριθμός
ΚΑΛΕΣΕ εμφάνισε_πίνακα (πίνακας, Μυστικός)
ΚΑΛΕΣΕ βρες_μαυρα_λευκά ( αριθμός, Μυστικός, ΜΑΥΡΑ, ΛΕΥΚΑ)
i <- i + 1
ΜΕΧΡΙΣ_ΟΤΟΥ ΜΑΥΡΑ = 4 Η i = 11
ΑΝ ΜΑΥΡΑ = 4 ΤΟΤΕ
ΓΡΑΨΕ 'Μπράβο! Βρήκατε τον αριθμό σε ', i - 1, ' κινήσεις'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δυστυχώς δεν βρήκατε τον αριθμό!'
ΓΡΑΨΕ 'Ο μυστικός αριθμός ήταν: ', Μυστικός
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ διάβασμα_τετραψήφιου (μήνυμα, αριθμός, Επιτρέπεται_ιδιο)
!-------------------
! Αρχικά εμφανίζει το μήνυμα που δέχεται
! Διαβάζει και επιστρέφει ένα τετραψήφιο αριθμό για το
! παιχνίδι masterMind.
! Ελέγχει να έχει 4 ψηφία με τιμές για το καθένα από 1 μέχρι 6
! Αν η μεταβλητή "Επιτρέπεται_ιδιο" είναι ψευδής τότε
! τα ψηφία πρέπει να είναι διαφορετικά μεταξύ τους
! αλλιώς μπορούμε να έχουμε ίδιες τιμές.
! Την καλούμε με ΨΕΥΔΗΣ στο διάβασμα του μυστικού
! ενώ με ΑΛΗΘΗΣ στο διάβασμα των προσπαθειών.
! Σε περίπτωση λάθους εμφανίζει κατάλληλο μήνυμα.
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: μήνυμα
ΑΚΕΡΑΙΕΣ: αριθμός
ΛΟΓΙΚΕΣ: Επιτρέπεται_ιδιο, ΟΚ, υπάρχει
ΑΚΕΡΑΙΕΣ: πλ, i, j, χ, ψ
ΑΡΧΗ
ΓΡΑΨΕ μήνυμα
ΟΚ <- ΨΕΥΔΗΣ
ΟΣΟ ΟΚ = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
υπάρχει <- ΨΕΥΔΗΣ
ΔΙΑΒΑΣΕ αριθμός
ΑΝ αριθμός >= 1111 ΚΑΙ αριθμός <= 6666 ΤΟΤΕ
πλ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
ψ <- ψηφίο (αριθμός, i)
! μετράμε τα ψηφία να είναι από 1 μέχρι 6
ΑΝ ψ >= 1 ΚΑΙ ψ <= 6 ΤΟΤΕ
πλ <- πλ + 1
! έλεγχος να μην έχει ξαναδοθεί το ψηφίο
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ i - 1
χ <- ψηφίο (αριθμός, j)
ΑΝ χ = ψ ΤΟΤΕ
υπάρχει <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πλ = 4 ΤΟΤΕ
ΑΝ Επιτρέπεται_ιδιο = ΑΛΗΘΗΣ ΤΟΤΕ
ΟΚ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΑΝ υπάρχει = ΨΕΥΔΗΣ ΤΟΤΕ
ΟΚ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΟΚ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΝ ΟΚ = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Δώστε ένα τετραψήφιο αριθμό με ψηφία από 1 μέχρι 6'
ΑΝ Επιτρέπεται_ιδιο = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Δεν επιτρέπονται ίδια ψηφία'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΣΥΝΑΡΤΗΣΗ ψηφίο (ΑΡΙΘΜΟΣ, ΘΕΣΗ): ΑΚΕΡΑΙΑ
!-------------------
! επιστρέφει το ψηφίο του αριθμού ΑΡΙΘΜΟΣ, που βρίσκεται στη θέση ΘΕΣΗ
! π.χ αν καλέσουμε : ψηφίο ( 7890, 1) θα επιστρέψει τις μονάδες δηλαδή 0
! ψηφίο ( 7890, 4) θα επιστρέψει 7
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΑΡΙΘΜΟΣ, ΘΕΣΗ, χ, i
ΑΡΧΗ
ψηφίο <- 0
χ <- ΑΡΙΘΜΟΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ ΘΕΣΗ
ψηφίο <- χ mod 10
χ <- χ div 10
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΔΙΑΔΙΚΑΣΙΑ εμφάνισε_πίνακα (πίνακας, μυστικός)
!-------------------
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πίνακας[10], μυστικός
ΑΚΕΡΑΙΕΣ: i, j, ψ, ΜΑΥΡΑ, ΛΕΥΚΑ
ΑΡΧΗ
ΓΡΑΨΕ '+-----+---+---+---+---+-----+---+---+'
ΓΡΑΨΕ '| | | | | | | Μ | Λ |'
ΓΡΑΨΕ '+-----+---+---+---+---+-----+---+---+'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
! '| 1. | 5 | 5 | 5 | 5 | | 0 | 0 |
ΑΝ i < 10 ΤΟΤΕ
ΓΡΑΨΕ '| ', i, '. | '
ΑΛΛΙΩΣ
ΓΡΑΨΕ '| ', i, '. | '
ΤΕΛΟΣ_ΑΝ
ΑΝ πίνακας[i] = 0 ΤΟΤΕ
ΓΡΑΨΕ ' | | | | | | |'
ΑΛΛΙΩΣ
ΓΙΑ j ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
ΓΡΑΨΕ ' ', ψηφίο (πίνακας[i], j), ' | '
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ' | '
ΚΑΛΕΣΕ βρες_μαυρα_λευκά ( πίνακας[i], μυστικός, ΜΑΥΡΑ, ΛΕΥΚΑ)
ΓΡΑΨΕ ' ', ΜΑΥΡΑ, ' | ', ΛΕΥΚΑ, ' |'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ '+-----+---+---+---+---+-----+---+---+'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ βρες_μαυρα_λευκά ( χ, μυστικός, ΜΑΥΡΑ, ΛΕΥΚΑ)
!-------------------
! Μετράει και για κάθε σωστό ψηφιο σε σωστή θέση επιστρέφει την τιμή στο ΜΑΥΡΑ
! Μετράει και για κάθε σωστό ψηφίο σε λάθος θέση επιστρέφει την τιμή στο ΛΕΥΚΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: χ, μυστικός, ΜΑΥΡΑ, ΛΕΥΚΑ, i, j
ΑΡΧΗ
ΜΑΥΡΑ <- 0
ΛΕΥΚΑ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4
ΑΝ ψηφίο (μυστικός, i) = ψηφίο (χ, i) ΤΟΤΕ
ΜΑΥΡΑ <- ΜΑΥΡΑ + 1
ΑΛΛΙΩΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 4
ΑΝ i <> j ΤΟΤΕ
ΑΝ ψηφίο (μυστικός, i) = ψηφίο (χ, j) ΤΟΤΕ
ΛΕΥΚΑ <- ΛΕΥΚΑ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Καθάρισε_οθόνη
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
ΓΡΑΨΕ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
|