Υπάρχουν προβλήματα. Αν κάθε λάθος με τη σειρά τα αντιμετωπίσουμε, όπως εκεί που καλούμε διαδικασία χωρίς ορίσματα πρέπει να βάλουμε () για να κληθεί σωστά, τότε θα φτάσουμε να μην δέχεται τη συνάρτηση Ψηφίο. Δοκίμασα και την γύρισα σε κεφαλαία και πάλι είχε πρόβλημα, οπότε την μετακίνησα ακριβώς μετά τη διαδικασία ΕμφάνισεΟδηγίες και ξεκίνησε το πρόγραμμα χωρίς πρόβλημα.
Αυτό ξεκίνησε αν και δεν είχα χρόνο να το δοκιμάσω, δηλαδή δεν το είδα όλο, αν θέλει κάποιος να το δει, ας το δοκιμάσει.
ΠΡΟΓΡΑΜΜΑ MasterMind
!Το πρόγραμμα επιδεικνύει την εκτενή χρήση υποπρογραμμάτων.
!Οδηγίες για το παιχνίδι δίνονται κατά την εκτέλεσή του.
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμαΠροσπάθειας, κατάστασηΕκτέλεσης
ΑΡΧΗ
ΚΑΛΕΣΕ ΕμφάνισεΟδηγίες()
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε έναν τετραψήφιο αριθμό ή 0 (μηδέν) αν παραιτείσαι: '
ΔΙΑΒΑΣΕ προσπάθειαΧρήστη
αποτέλεσμαΠροσπάθειας <- ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη)
ΕΠΙΛΕΞΕ αποτέλεσμαΠροσπάθειας
ΠΕΡΙΠΤΩΣΗ 2222
ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι: '
ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΚΑΛΕΣΕ ΕμφάνισεΣυγχαρητήρια()
ΠΕΡΙΠΤΩΣΗ -1
ΚΑΛΕΣΕ ΕμφάνισεΜήνυμαΠαραίτησης()
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Το αποτέλεσμα της σύγκρισης με το μυστικό αριθμό είναι: '
ΚΑΛΕΣΕ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΜΕΧΡΙΣ_ΟΤΟΥ αποτέλεσμαΠροσπάθειας = 2222 Η αποτέλεσμαΠροσπάθειας = -1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΟδηγίες
ΑΡΧΗ
ΓΡΑΨΕ ' ▄ ▄ ▄ ▄▄▄ ▄▄▄ ▄▄▄ ▄▄ ▄ ▄ ▄ ▄ ▄ ▄▄▄'
ΓΡΑΨΕ ' █▀▄▀█ █▄█ ▀▄ █ █▄ █▄▀ █▀▄▀█ █ █▀▄ █ █ █'
ΓΡΑΨΕ ' █ █ █ █ █▄▄ █ █▄▄ █ █ █ █ █ █ ▀█ █▄▄▀'
ΓΡΑΨΕ 'Οδηγίες:'
ΓΡΑΨΕ 'Στο παιχνίδι αυτό ο σκοπός είναι να μαντέψουμε έναν τετραψήφιο αριθμό'
ΓΡΑΨΕ 'τον οποίο κρατάει κρυφό ο υπολογιστής. Τα ψηφία του αριθμού είναι'
ΓΡΑΨΕ 'διαφορετικά μεταξύ τους, αλλά επιτρέπεται το πρώτο ψηφίο να είναι μηδέν,'
ΓΡΑΨΕ 'για παράδειγμα ο μυστικός αριθμός μπορεί να είναι 0248.'
ΓΡΑΨΕ 'Αν προσπαθώντας να το βρούμε εισάγουμε τον αριθμό 1234,'
ΓΡΑΨΕ 'τότε ο υπολογιστής θα μας απαντήσει με το κείμενο ΟΝΟΠ.'
ΓΡΑΨΕ 'Τα γράμματα αυτά σημαίνουν:'
ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 1.'
ΓΡΑΨΕ '«Ν»αι, ο μυστικός αριθμός περιέχει το ψηφίο 2.'
ΓΡΑΨΕ '«Ο»χι, ο μυστικός αριθμός δεν περιέχει το ψηφίο 3.'
ΓΡΑΨΕ '«Π»ερίπου, υπάρχει 4 στο μυστικό αριθμό αλλά όχι σ΄ αυτή τη θέση.'
ΓΡΑΨΕ ''
ΓΡΑΨΕ 'Η εκτέλεση συνεχίζεται μέχρι να πετύχουμε τον αριθμό,'
ΓΡΑΨΕ 'ή να δώσουμε 0000, το οποίο σημαίνει ότι παραιτούμαστε.'
ΓΡΑΨΕ ''
! ΓΡΑΨΕ '...............................................................................'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΣΥΝΑΡΤΗΣΗ ΨΗΦΙΟ(αριθμός, ποιο): ΑΚΕΡΑΙΑ
!Απομονώνει το #ποιο ψηφίο του αριθμού.
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αριθμός, ποιο
ΑΡΧΗ
Ψηφίο <- αριθμός DIV Α_Μ(10^(ποιο - 1)) MOD 10
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΣΥΝΑΡΤΗΣΗ ΑξιολόγησεΠροσπάθεια(προσπάθειαΧρήστη): ΑΚΕΡΑΙΑ
!Η συνάρτηση αυτή υπολογίζει το αποτέλεσμα, π.χ. 'ΟΝΟΠ'. Αλλά επειδή η ΓΛΩΣΣΑ
!δεν υποστηρίζει χειρισμό αλφαριθμητικών, χρησιμοποιεί αριθμούς, π.χ. 0201.
!Το 2222 σημαίνει ότι ο χρήστης πέτυχε τον αριθμό,
!ενώ το -1 σημαίνει ότι παραιτείται, αφού έδωσε μηδέν σαν είσοδο.
ΣΤΑΘΕΡΕΣ
!Οι πράξεις είναι απλά για να μη φαίνεται ο μυστικός αριθμός
Μυστικός = 1234*9876 MOD 10000
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: προσπάθειαΧρήστη, αποτέλεσμα, ι, κ
ΛΟΓΙΚΕΣ: υπάρχει
ΑΡΧΗ
ΑΝ προσπάθειαΧρήστη = 0 ΤΟΤΕ
αποτέλεσμα <- -1
ΑΛΛΙΩΣ
αποτέλεσμα <- 0
ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
ΑΝ ΨΗΦΙΟ(Μυστικός, ι) = ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) ΤΟΤΕ
αποτέλεσμα <- 10*αποτέλεσμα + 2
ΑΛΛΙΩΣ
υπάρχει <- ΨΕΥΔΗΣ
ΓΙΑ κ ΑΠΟ 1 ΜΕΧΡΙ 4
ΑΝ ΨΗΦΙΟ(προσπάθειαΧρήστη, ι) = ΨΗΦΙΟ(Μυστικός, κ) ΤΟΤΕ
υπάρχει <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ υπάρχει ΤΟΤΕ
αποτέλεσμα <- 10*αποτέλεσμα + 1
ΑΛΛΙΩΣ
αποτέλεσμα <- 10*αποτέλεσμα
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΑξιολόγησεΠροσπάθεια <- αποτέλεσμα
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΣυγχαρητήρια
ΑΡΧΗ
ΓΡΑΨΕ ' ▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄ ▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄ ▄ ▄ ▄'
ΓΡΑΨΕ ' ▀▄ ▀▄▀ █ ▀▄▀ █▄█ █▄▀ █▄█ █ █▄█ █▄▀ █ █▄█ █'
ΓΡΑΨΕ ' █▄▄ █ █ ▄▀ ▀▄ █ █ █ █ █ █ █ █ █ █ █ █ ▄'
ΓΡΑΨΕ ' Είσαι ιδιοφυία, πέτυχες το μυστικό αριθμό!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΜήνυμαΠαραίτησης
ΑΡΧΗ
ΓΡΑΨΕ ' ▄▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄ ▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄ ▄ ▄ ▄'
ΓΡΑΨΕ ' ▀▄ ▀▄▀ █ ▀▄▀ █▄█ █▄▀ █▄█ █ █▄█ █▄▀ █ █▄█ █'
ΓΡΑΨΕ ' █▄▄ █ █ ▄▀ ▀▄ █ █ █ █ █ █ █ █ █ █ █ █ ▄'
ΓΡΑΨΕ ' ...θα πάρεις την επόμενη φορά αν καταφέρεις να τον πετύχεις!'
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΑποτέλεσμα(αποτέλεσμαΠροσπάθειας)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αποτέλεσμαΠροσπάθειας, ι
ΑΡΧΗ
ΓΙΑ ι ΑΠΟ 4 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
ΕΠΙΛΕΞΕ ΨΗΦΙΟ(αποτέλεσμαΠροσπάθειας, ι)
ΠΕΡΙΠΤΩΣΗ 0
ΓΡΑΨΕ 'Ο '
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Π '
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Ν '
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ''
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Προφανώς πρέπει να γίνει έλεγχος με πολλές διαδικασίες και συναρτήσεις με ανακατεμένους ορισμούς για να βρεθεί το λάθος!