e-ΜΑΘΗΜΑΤΑ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό περιβάλλον

Λύσεις ασκήσεων από θέματα Πανελλαδικών εξετάσεων


ΠΡΟΓΡΑΜΜΑ ΤΡΙΛΙΖΑ
!Ε2009-Θ4
!Το παιχνίδι τρίλιζα παίζεται με διαδοχικές κινήσεις δύο παικτών σε έναν πίνακα Τ[3,3].
! Οι παίκτες συμπληρώνουν εναλλάξ μια θέση του πίνακα, τοποθετώντας ο μεν πρώτος
! το σύμβολο-χαρακτήρα ‘Χ’, ο δε δεύτερος το σύμβολο–χαρακτήρα ‘Ο’.
! Νικητής είναι ο παίκτης που θα συμπληρώσει πρώτος μια τριάδα όμοιων συμβόλων σε
! κάποια γραμμή, στήλη ή διαγώνιο του πίνακα. Αν ο πίνακας συμπληρωθεί χωρίς νικητή,
! το παιχνίδι θεωρείται ισόπαλο.
! Α. Να γράψετε πρόγραμμα στη «ΓΛΩΣΣΑ», το οποίο:
!1. Να τοποθετεί σε κάθε θέση του πίνακα Τ τον χαρακτήρα ‘-’.

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

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

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

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

ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Τ[3, 3] 
  ΑΚΕΡΑΙΕΣ: i, j, παίκτης, Γ, Σ, πλήθος_κινήσεων
  ΛΟΓΙΚΕΣ: game_over
ΑΡΧΗ


!1. Να τοποθετεί σε κάθε θέση του πίνακα Τ τον χαρακτήρα ‘-’.
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 3
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
      Τ[i, j] <- '-'
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ



  game_over <- ΨΕΥΔΗΣ
  παίκτης <- 1
  πλήθος_κινήσεων <- 0


  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

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

    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'ΠΑΙKΤΗΣ : ', παίκτης
      ΓΡΑΨΕ 'Δώστε Γραμμή (1..3) : '
      ΔΙΑΒΑΣΕ Γ
      ΓΡΑΨΕ 'Δώστε Στήλη (1..3)  : '
      ΔΙΑΒΑΣΕ Σ
    ΜΕΧΡΙΣ_ΟΤΟΥ Γ >= 1 ΚΑΙ Γ <= 3 ΚΑΙ Σ >= 1 ΚΑΙ Σ <= 3 ΚΑΙ Τ[Γ, Σ] = '-'
    ΑΝ παίκτης = 1 ΤΟΤΕ
      Τ[Γ, Σ] <- 'x'
    ΑΛΛΙΩΣ
      Τ[Γ, Σ] <- 'o'
    ΤΕΛΟΣ_ΑΝ
    πλήθος_κινήσεων <- πλήθος_κινήσεων + 1

!β. Να ελέγχει εάν με την κίνησή του ο παίκτης νίκησε. Για τον σκοπό αυτόν, να καλεί τη
!συνάρτηση ΝΙΚΗΣΕ, που περιγράφεται στο ερώτημα Β.
    ΑΝ ΝΙΚΗΣΕ (Τ, Γ, Σ) ΤΟΤΕ
!4. Να εμφανίζει με κατάλληλο μήνυμα (πρώτος παίκτης/ δεύτερος παίκτης/ισοπαλία) το
!αποτέλεσμα του παιχνιδιού.
      ΓΡΑΨΕ 'Νίκησε ο παίκτης : ', παίκτης
      game_over <- ΑΛΗΘΗΣ
    ΑΛΛΙΩΣ

!3. Να τερματίζει το παιχνίδι, εφόσον σημειωθεί ισοπαλία ή νικήσει ένας από τους δύο παίκτες.
      ΑΝ πλήθος_κινήσεων = 9 ΤΟΤΕ
        ΓΡΑΨΕ "Το παιχνίδι έληξε ισόπαλο"
        game_over <- ΑΛΗΘΗΣ
      ΑΛΛΙΩΣ
        ΑΝ παίκτης = 1 ΤΟΤΕ
          παίκτης <- 2
        ΑΛΛΙΩΣ
          παίκτης <- 1
        ΤΕΛΟΣ_ΑΝ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ

! Δεν το ζητάει η εκφώνηση, αλλά αν το κάνετε copy paste στον διερμηνευτή της ΓΛΩΣΣΑΣ
! μπορείτε να παίξετε μια παρτίδα και να βλέπετε την τρίλιζα!
    ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΕ_ΠΙΝΑΚΑ (Τ) 

  ΜΕΧΡΙΣ_ΟΤΟΥ game_over = ΑΛΗΘΗΣ



ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ



! ---------------------------------------------------------------------

ΣΥΝΑΡΤΗΣΗ ΝΙΚΗΣΕ (Τ, Γ, Σ): ΛΟΓΙΚΗ
!Β. Να κατασκευάσετε τη συνάρτηση ΝΙΚΗΣΕ, η οποία θα δέχεται τον πίνακα Τ και
! τις συντεταγμένες (Γ, Σ) μιας θέσης του πίνακα και θα επιστρέφει την τιμή ΑΛΗΘΗΣ,
! αν υπάρχει τρεις φορές το ίδιο σύμβολο, σε τουλάχιστον μια από τις παρακάτω περιπτώσεις:
!1. Στη γραμμή Γ.
!2. Στη στήλη Σ.
!3. Στην κύρια διαγώνιο (δηλαδή Γ=Σ).
!4. Στη δευτερεύουσα διαγώνιο (δηλαδή Γ+Σ=4).
!Σε κάθε άλλη περίπτωση, η συνάρτηση να επιστρέφει την τιμή ΨΕΥΔΗΣ.
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Τ[3, 3], ΣΥΜΒΟΛΟ
  ΑΚΕΡΑΙΕΣ: Γ, Σ, i, j

ΑΡΧΗ
  ΣΥΜΒΟΛΟ <- Τ[Γ, Σ] 

  ΑΝ Τ[Γ, 1] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[Γ, 2] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[Γ, 3] = ΣΥΜΒΟΛΟ ΤΟΤΕ
    ΝΙΚΗΣΕ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ_ΑΝ Τ[1, Σ] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[2, Σ] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[3, Σ] = ΣΥΜΒΟΛΟ ΤΟΤΕ
    ΝΙΚΗΣΕ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ_ΑΝ Τ[1, 1] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[2, 2] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[3, 3] = ΣΥΜΒΟΛΟ ΤΟΤΕ
    ΝΙΚΗΣΕ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ_ΑΝ Τ[1, 3] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[2, 2] = ΣΥΜΒΟΛΟ ΚΑΙ Τ[3, 1] = ΣΥΜΒΟΛΟ ΤΟΤΕ
    ΝΙΚΗΣΕ <- ΑΛΗΘΗΣ
  ΑΛΛΙΩΣ
    ΝΙΚΗΣΕ <- ΨΕΥΔΗΣ
  ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ


! ------------------------------------------------------------
! Δεν το ζητάει η εκφώνηση, αλλά αν το κάνετε copy paste στον διερμηνευτή της ΓΛΩΣΣΑΣ
! μπορείτε να παίξετε μια παρτίδα και να βλέπετε την τρίλιζα!
ΔΙΑΔΙΚΑΣΙΑ ΕΜΦΑΝΙΣΕ_ΠΙΝΑΚΑ (Τ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΧΑΡΑΚΤΗΡΕΣ: Τ[3, 3] 
  ΑΚΕΡΑΙΕΣ: i, j
ΑΡΧΗ
  ΓΡΑΨΕ Τ[1, 1], ' | ', Τ[1, 2], ' | ', Τ[1, 3] 
  ΓΡΑΨΕ '--+---+--'
  ΓΡΑΨΕ Τ[2, 1], ' | ', Τ[2, 2], ' | ', Τ[2, 3] 
  ΓΡΑΨΕ '--+---+--'
  ΓΡΑΨΕ Τ[3, 1], ' | ', Τ[3, 2], ' | ', Τ[3, 3] 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

Κεντρική Σελίδα Αλλα e-μαθήματα ΑΕΠΠ Αλλη άσκησηΕπιστροφή στην κορυφή της σελίδας
© 2014 - 2ο Γενικό Λύκειο Γέρακα - Βασίλειος Αναστόπουλος