Το παιχνίδι τρίλιζα παίζεται με διαδοχικές κινήσεις δύο παικτών σε έναν πίνακα Τ[3,3]. Οι παίκτες συμπληρώνουν εναλλάξ μια θέση του πίνακα, τοποθετώντας ο μεν πρώτος το σύμβολοχαρακτήρα ‘Χ’, ο δε δεύτερος το σύμβολο–χαρακτήρα ‘Ο’.
Νικητής είναι ο παίκτης που θα συμπληρώσει πρώτος μια τριάδα όμοιων συμβόλων σε κάποια γραμμή, στήλη ή διαγώνιο του πίνακα. Αν ο πίνακας συμπληρωθεί χωρίς νικητή, το παιχνίδι θεωρείται ισόπαλο.
Α. Να γράψετε πρόγραμμα στη «ΓΛΩΣΣΑ», το οποίο:
- Να τοποθετεί σε κάθε θέση του πίνακα Τ τον χαρακτήρα ‘-’.
Μονάδες 2
- Για κάθε κίνηση:
α. Να δέχεται τις συντεταγμένες μιας θέσης του πίνακα Τ και να τοποθετεί στην αντίστοιχη θέση το σύμβολο του παίκτη. Να θεωρήσετε ότι οι τιμές των συντεταγμένων είναι πάντοτε σωστές (1 έως 3) είναι όμως αποδεκτές, μόνον αν η θέση που προσδιορίζουν δεν περιέχει ήδη ένα σύμβολο παίκτη.
Μονάδες 4
β. Να ελέγχει εάν με την κίνησή του ο παίκτης νίκησε. Για τον σκοπό αυτόν, να καλεί τη συνάρτηση ΝΙΚΗΣΕ, που περιγράφεται στο ερώτημα Β.
Μονάδες 2
- Να τερματίζει το παιχνίδι, εφόσον σημειωθεί ισοπαλία ή νικήσει ένας από τους δύο παίκτες.
Μονάδες 2
- Να εμφανίζει με κατάλληλο μήνυμα (πρώτος παίκτης/ δεύτερος παίκτης/ισοπαλία) το αποτέλεσμα του παιχνιδιού.
Μονάδες 2
Β. Να κατασκευάσετε τη συνάρτηση ΝΙΚΗΣΕ, η οποία θα δέχεται τον πίνακα Τ και τις συντεταγμένες (Γ, Σ) μιας θέσης του πίνακα και θα επιστρέφει την τιμή ΑΛΗΘΗΣ, αν υπάρχει τρεις φορές το ίδιο σύμβολο, σε τουλάχιστον μια από τις παρακάτω περιπτώσεις:
- Στη γραμμή Γ.
- Στη στήλη Σ.
- Στην κύρια διαγώνιο (δηλαδή Γ=Σ).
- Στη δευτερεύουσα διαγώνιο (δηλαδή Γ+Σ=4).
Σε κάθε άλλη περίπτωση, η συνάρτηση να επιστρέφει την τιμή ΨΕΥΔΗΣ.
Μονάδες 8
Τα θέματα σε pdf, 2009, Επαναληπτικές, Ημερήσια
ΛΥΣΗ
ΠΡΟΓΡΑΜΜΑ ΤΡΙΛΙΖΑ
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: Τ[3, 3]
ΑΚΕΡΑΙΕΣ: Γ, Σ, Ι, J, ΚΙΝΗΣΕΙΣ
ΛΟΓΙΚΕΣ: ΝΙΚΗ, ΠΑΙΖΕΙ_Ο_1ΟΣ
ΑΡΧΗ
!Α1
ΓΙΑ Γ ΑΠΟ 1 ΜΕΧΡΙ 3
ΓΙΑ Σ ΑΠΟ 1 ΜΕΧΡΙ 3
Τ[Γ, Σ] <- '-'
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Α2
ΚΙΝΗΣΕΙΣ <- 0
ΝΙΚΗ <- ΨΕΥΔΗΣ ! ΤΙΜΗ ΦΡΟΥΡΟΣ
ΟΣΟ ( ΝΙΚΗ = ΨΕΥΔΗΣ ΚΑΙ ΚΙΝΗΣΕΙΣ < 9) ΕΠΑΝΑΛΑΒΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Γ, Σ
ΜΕΧΡΙΣ_ΟΤΟΥ Τ[Γ, Σ] = '-'
ΑΝ ΚΙΝΗΣΕΙΣ mod 2 = 1 ΤΟΤΕ
Τ[Γ, Σ] <- 'Χ'
ΑΛΛΙΩΣ
Τ[Γ, Σ] <- 'Ο'
ΤΕΛΟΣ_ΑΝ
ΚΙΝΗΣΕΙΣ <- ΚΙΝΗΣΕΙΣ + 1
ΝΙΚΗ <- ΝΙΚΗΣΕ(Τ, Γ, Σ)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΕΞΟΔΟΣ
ΑΝ ΝΙΚΗ = ΑΛΗΘΗΣ ΤΟΤΕ ! ΕΧΟΥΜΕ ΝΙΚΗ
ΑΝ ΚΙΝΗΣΕΙΣ mod 2 = 1 ΤΟΤΕ
ΓΡΑΨΕ 'ΝΙΚΗΣΕ Ο 1ΟΣ ΠΑΙΚΤΗΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΝΙΚΗΣΕ Ο 2ΟΣ ΠΑΙΚΤΗΣ'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ ! ΕΧΟΥΜΕ ΙΣΟΠΑΛΙΑ
ΓΡΑΨΕ 'ΙΣΟΠΑΛΙΑ'
ΤΕΛΟΣ_ΑΝ
! Α2 Β ΤΡΟΠΟΣ
! ΚΙΝΗΣΕΙΣ <- 0
! ΠΑΙΖΕΙ_Ο_1ΟΣ <- ΑΛΗΘΗΣ
! ΝΙΚΗ <- ΨΕΥΔΗΣ ! ΤΙΜΗ ΦΡΟΥΡΟΣ
! ΟΣΟ ( ΝΙΚΗ = ΨΕΥΔΗΣ ΚΑΙ ΚΙΝΗΣΕΙΣ < 9) ΕΠΑΝΑΛΑΒΕ
! ΚΙΝΗΣΕΙΣ <- ΚΙΝΗΣΕΙΣ + 1
! ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
! ΜΕΧΡΙΣ_ΟΤΟΥ Τ[Γ, Σ] = '-'
! ΑΝ ΠΑΙΖΕΙ_Ο_1ΟΣ = ΑΛΗΘΗΣ ΤΟΤΕ
! Τ[Γ, Σ] <- 'Χ'
! ΑΛΛΙΩΣ
! Τ[Γ, Σ] <- 'Ο'
! ΤΕΛΟΣ_ΑΝ
! ΝΙΚΗ <- ΝΙΚΗΣΕ(Τ, Γ, Σ)
! ΑΝ ΠΑΙΖΕΙ_Ο_1ΟΣ = ΑΛΗΘΗΣ ΤΟΤΕ
! ΠΑΙΖΕΙ_Ο_1ΟΣ <- ΨΕΥΔΗΣ
! ΑΛΛΙΩΣ
! ΠΑΙΖΕΙ_Ο_1ΟΣ <- ΑΛΗΘΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!ΕΞΟΔΟΣ
! ΑΝ ΝΙΚΗ = ΑΛΗΘΗΣ ΤΟΤΕ ! ΕΧΟΥΜΕ ΝΙΚΗ
! ΑΝ ΠΑΙΖΕΙ_Ο_1ΟΣ = ΨΕΥΔΗΣ ΤΟΤΕ ! ΑΝΑΠΟΔΑ ΓΙΑΤΙ ΑΛΛΑΖΕΙ ΣΤΟ ΤΕΛΟΣ Ο ΠΑΙΚΤΗΣ
! ΓΡΑΨΕ 'ΝΙΚΗΣΕ Ο 1ΟΣ ΠΑΙΚΤΗΣ'
! ΑΛΛΙΩΣ
! ΓΡΑΨΕ 'ΝΙΚΗΣΕ Ο 2ΟΣ ΠΑΙΚΤΗΣ'
! ΤΕΛΟΣ_ΑΝ
! ΑΛΛΙΩΣ ! ΕΧΟΥΜΕ ΙΣΟΠΑΛΙΑ
! ΓΡΑΨΕ 'ΙΣΟΠΑΛΙΑ'
! ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ ΝΙΚΗΣΕ(Τ, Γ, Σ): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Γ, Σ, Ι, J
ΛΟΓΙΚΕΣ: ΤΡΙΛΙΖΑ
ΧΑΡΑΚΤΗΡΕΣ: Τ[3, 3]
ΑΡΧΗ
! Α ΤΡΟΠΟΣ
!ΕΛΕΓΧΩ ΑΝ Η ΓΡΑΜΜΗ ΕΧΕΙ ΤΡΙΛΙΖΑ
! ΤΡΙΛΙΖΑ <- ΑΛΗΘΗΣ
! ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
! ΑΝ Τ[Γ, Σ] <> Τ[Γ, J] ΤΟΤΕ
! ΤΡΙΛΙΖΑ <- ΨΕΥΔΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΑΝ ΤΡΙΛΙΖΑ = ΨΕΥΔΗΣ ΤΟΤΕ
!ΕΛΕΓΧΩ ΑΝ Η ΣΤΗΛΗ ΕΧΕΙ ΤΡΙΛΙΖΑ
! ΤΡΙΛΙΖΑ <- ΑΛΗΘΗΣ
! ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 3
! ΑΝ Τ[Γ, Σ] <> Τ[Ι, Σ] ΤΟΤΕ
! ΤΡΙΛΙΖΑ <- ΨΕΥΔΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΑΝ ΤΡΙΛΙΖΑ = ΨΕΥΔΗΣ ΚΑΙ Γ = Σ ΤΟΤΕ
!ΕΛΕΓΧΩ ΑΝ Η ΔΙΑΓΩΝΙΟΣ ΕΧΕΙ ΤΡΙΛΙΖΑ
! ΤΡΙΛΙΖΑ <- ΑΛΗΘΗΣ
! ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 3
! ΑΝ Τ[Γ, Σ] <> Τ[Ι, Ι] ΤΟΤΕ
! ΤΡΙΛΙΖΑ <- ΨΕΥΔΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΑΝ ΤΡΙΛΙΖΑ = ΨΕΥΔΗΣ ΚΑΙ Γ + Σ = 4 ΤΟΤΕ
!ΕΛΕΓΧΩ ΑΝ Η ΔΙΑΓΩΝΙΟΣ ΕΧΕΙ ΤΡΙΛΙΖΑ
! ΤΡΙΛΙΖΑ <- ΑΛΗΘΗΣ
! ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 3
! ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 3
! ΑΝ Ι + J = 4 ΤΟΤΕ
! ΑΝ Τ[Γ, Σ] <> Τ[Ι, J] ΤΟΤΕ
! ΤΡΙΛΙΖΑ <- ΨΕΥΔΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΑΝ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! ΤΕΛΟΣ_ΑΝ
! ΝΙΚΗΣΕ <- ΤΡΙΛΙΖΑ
! Β ΤΡΟΠΟΣ
ΑΝ (Τ[Γ, 1] = Τ[Γ, 2] ΚΑΙ Τ[Γ, 1] = Τ[Γ, 3]) Η
(Τ[1, Σ] = Τ[2, Σ] ΚΑΙ Τ[1, Σ] = Τ[3, Σ]) Η
((Τ[1, 1] = Τ[2, 2] ΚΑΙ Τ[1, 1] = Τ[3, 3]) ΚΑΙ Γ = Σ) Η
((Τ[3, 1] = Τ[2, 2] ΚΑΙ Τ[3, 1] = Τ[1, 3]) ΚΑΙ Γ + Σ = 4) ΤΟΤΕ
ΝΙΚΗΣΕ <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΝΙΚΗΣΕ <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
</code class="language-javascript">
Πρόσφατα σχόλια