Επιλογή Σελίδας

Το παιχνίδι τρίλιζα παίζεται με διαδοχικές κινήσεις δύο παικτών σε έναν πίνακα Τ[3,3]. Οι παίκτες συμπληρώνουν εναλλάξ μια θέση του πίνακα, τοποθετώντας ο μεν πρώτος το σύμβολοχαρακτήρα ‘Χ’, ο δε δεύτερος το σύμβολο–χαρακτήρα ‘Ο’.

Νικητής είναι ο παίκτης που θα συμπληρώσει πρώτος μια τριάδα όμοιων συμβόλων σε κάποια γραμμή, στήλη ή διαγώνιο του πίνακα. Αν ο πίνακας συμπληρωθεί χωρίς νικητή, το παιχνίδι θεωρείται ισόπαλο.

Α. Να γράψετε πρόγραμμα στη «ΓΛΩΣΣΑ», το οποίο:

  1. Να τοποθετεί σε κάθε θέση του πίνακα Τ τον χαρακτήρα ‘-’.

Μονάδες 2

  1. Για κάθε κίνηση:

α. Να δέχεται τις συντεταγμένες μιας θέσης του πίνακα Τ και να τοποθετεί στην αντίστοιχη θέση το σύμβολο του παίκτη. Να θεωρήσετε ότι οι τιμές των συντεταγμένων είναι πάντοτε σωστές (1 έως 3) είναι όμως αποδεκτές, μόνον αν η θέση που προσδιορίζουν δεν περιέχει ήδη ένα σύμβολο παίκτη.

Μονάδες 4

β. Να ελέγχει εάν με την κίνησή του ο παίκτης νίκησε. Για τον σκοπό αυτόν, να καλεί τη συνάρτηση ΝΙΚΗΣΕ, που περιγράφεται στο ερώτημα Β.

Μονάδες 2

  1. Να τερματίζει το παιχνίδι, εφόσον σημειωθεί ισοπαλία ή νικήσει ένας από τους δύο παίκτες.

Μονάδες 2

  1. Να εμφανίζει με κατάλληλο μήνυμα (πρώτος παίκτης/ δεύτερος παίκτης/ισοπαλία) το αποτέλεσμα του παιχνιδιού.

Μονάδες 2

Β. Να κατασκευάσετε τη συνάρτηση ΝΙΚΗΣΕ, η οποία θα δέχεται τον πίνακα Τ και τις συντεταγμένες (Γ, Σ) μιας θέσης του πίνακα και θα επιστρέφει την τιμή ΑΛΗΘΗΣ, αν υπάρχει τρεις φορές το ίδιο σύμβολο, σε τουλάχιστον μια από τις παρακάτω περιπτώσεις:

  1. Στη γραμμή Γ.
  2. Στη στήλη Σ.
  3. Στην κύρια διαγώνιο (δηλαδή Γ=Σ).
  4. Στη δευτερεύουσα διαγώνιο (δηλαδή Γ+Σ=4).

Σε κάθε άλλη περίπτωση, η συνάρτηση να επιστρέφει την τιμή ΨΕΥΔΗΣ.

Μονάδες 8

Τα θέματα σε pdf, 2009, Επαναληπτικές, Ημερήσια

ΛΥΣΗ


ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ_Γ_2009_ΕΠΑΝ_ΗΜΕΡ
ΜΕΤΑΒΛΗΤΕΣ 
 ΑΚΕΡΑΙΕΣ: κίνηση, γραμμή, στήλη, i, j
 ΧΑΡΑΚΤΗΡΕΣ: Τ[9,9]
 ΛΟΓΙΚΕΣ: βρέθηκε_νικητής
ΑΡΧΗ 
 ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
     ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
         Τ[i,j] <-- '-'
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 βρέθηκε_νικητής <-- ΨΕΥΔΗΣ
 κίνηση <-- 1
 ΟΣΟ κίνηση <= 9 ΚΑΙ βρέθηκε_νικητής = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
     ΓΡΑΨΕ 'Δώσε τις συντεταγμένες: Γραμμή(1-3), Στήλη(1-3)'
     ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
        ΔΙΑΒΑΣΕ γραμμή, στήλη
     ΜΕΧΡΙΣ_ΟΤΟΥ Τ[γραμμή,στήλη] = '-'
     ΑΝ κίνηση MOD 2 = 1 ΤΟΤΕ
        Τ[γραμμή,στήλη] <-- 'X'
        ΓΡΑΨΕ 'Καταχωρήθηκε η κίνηση του παίκτη 1'
     ΑΛΛΙΩΣ
        Τ[γραμμή,στήλη] <-- 'Ο'
        ΓΡΑΨΕ 'Καταχωρήθηκε η κίνηση του παίκτη 2'
    ΤΕΛΟΣ_ΑΝ
    βρέθηκε_νικητής <-- ΝΙΚΗΣΕ(Τ, γραμμή, στήλη)
    ΑΝ (βρέθηκε_νικητής = ΨΕΥΔΗΣ) ΤΟΤΕ
        κίνηση <-- κίνηση + 1
    ΤΕΛΟΣ_ΑΝ
 ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 ΑΝ κίνηση > 9 ΤΟΤΕ
    ΓΡΑΨΕ 'Ισοπαλία'
 ΑΛΛΙΩΣ_ΑΝ κίνηση MOD 2 = 1 ΤΟΤΕ 
    ΓΡΑΨΕ 'Νίκησε ο πρώτος παίκτης'
 ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Νίκησε ο δεύτερος παίκτης'
 ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΣΥΝΑΡΤΗΣΗ ΝΙΚΗΣΕ(Τ, Γ, Σ): ΛΟΓΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
 ΑΚΕΡΑΙΕΣ : Γ, Σ
 ΧΑΡΑΚΤΗΡΕΣ: Τ[9,9]
ΑΡΧΗ
 ΑΝ (Τ[Γ,1] = Τ[Γ,2] ΚΑΙ Τ[Γ,2] = Τ[Γ,3]) 
    Ή (Τ[1,Σ] = Τ[2,Σ] ΚΑΙ Τ[2,Σ]= Τ[3,Σ]) 
    Ή (Γ = Σ ΚΑΙ Τ[1,1] = Τ[2,2] ΚΑΙ Τ[2,2] = Τ[3,3]) 
    Ή (Γ + Σ = 4 ΚΑΙ Τ[1,3] = Τ[2,2] ΚΑΙ Τ[2,2] = Τ[3,1]) ΤΟΤΕ
 ΝΙΚΗΣΕ <-- ΑΛΗΘΗΣ
 ΑΛΛΙΩΣ
 ΝΙΚΗΣΕ <-- ΨΕΥΔΗΣ
 ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Share This