ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΕΠΛ132 Άσκηση 3 - Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/10, 23:59

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσμία: Τετάρτη 23/11/2016, 21:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Παίζοντας Τόμπολα. Ημερομηνία Ανάρτησης: 16/03/2017 Ημερομηνία Παράδοσης: 30/03/2017, 23:59

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

Διαδικασιακός Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 4/11/2014, 22:00

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

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

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τµήµα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007


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

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Διαδικασιακός Προγραμματισμός

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Γραπτές Απολυτήριες Εξετάσεις Ιουνίου 2008 ΘΕΜΑΤΑ. ΘΕΜΑ 1 ο Σημειώστε δίπλα σε κάθε φράση (Σ) αν είναι σωστή ή (Λ) αν είναι λάθος.

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: Τρίτη 10/11/2015, 22:00

Διαδικασιακός Προγραμματισμός

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Ασκήσεις μελέτης της 6 ης διάλεξης

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Μάθηση του παιχνιδιού British square με χρήση Temporal Difference(TD) Κωνσταντάκης Γιώργος

Τιμή Τιμή. σκορ. ζωές

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

Διαγώνισμα Προσομοι ώσης στην Α.Ε.Π.Π.

ΠΕΡΙΓΡΑΦΗ KAI ΣΥΝΤΟΜΟΣ ΟΔΗΓΟΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ HOT POTATOES

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Διαδικασιακός Προγραμματισμός

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

Εργαλείο Μετατροπής Αρχείων

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

for for for for( . */

ΣΥΝΤΟΜΟΣ ΟΔΗΓΟΣ ΓΙΑ ΤΗΝ ΕΛΛΗΝΙΚΗ ΕΚΔΟΣΗ ΤΟΥ HOT POTATOES

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2-Γ3

Εκφώνηση άσκησης. Η Κρεμάλα σαν παιχνίδι. Ανάλυση. Μέρος Α Αναφoρά, ανάλυση τακτικής. Υλοποίηση του παιχνιδιού «Κρεμάλα»

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επαναληπτικό διαγώνισμα στην Α.Ε.Π.Π - 18 / Απριλίου / 2010 ΘΕΜΑ 1

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Παραδείγματα μεταβλητών

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2017 Β ΦΑΣΗ ÅÐÉËÏÃÇ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Breakdance Computer Game σε Scratch.

Σενάριο Χρήσης Moodle

Απεικόνιση Κειμένου και Γραφικών. By Sanjay and Arvind Seshan MΑΘΗΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΡΧΑΡΙΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

ΘΕΜΑ 1ο. Μονάδες 10. Β. ίνεται το παρακάτω τμήμα αλγορίθμου: Όσο Ι < 10 επανάλαβε Εμφάνισε Ι Ι Ι + 3 Τέλος_επανάληψης ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2017 A ΦΑΣΗ

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 132 Αρχές Προγραμματισμού ΙΙ ΑΣΚΗΣΗ 1 Το παιχνίδι «Οι Τρεις Σωματοφύλακες» Διδάσκων: Δημήτρης Ζεϊναλιπούρ Υπεύθυνος Άσκησης: Πύρρος Μπράτσκας Ημερομηνία Ανάθεσης: Παρασκευή 29 Ιανουαρίου 2016 Ημερομηνία Παράδοσης: 10 Φεβρουαρίου 2016 στις 13:00. (ο κώδικας να υποβληθεί σε zip μέσω του Moodle και εκτυπωμένη στο εργαστήριο) http://www.cs.ucy.ac.cy/courses/epl132 Ι. Στόχος Στην εργασία αυτή θα ασχοληθούμε με βρόγχους, ελέγχους, δισδιάστατους πίνακες, συναρτήσεις, μορφοποιημένη είσοδο/έξοδο στην οθόνη, είσοδο/έξοδο σε αρχεία. Η άσκηση αποτελείται από πολλαπλά μέρη. Υλοποιήστε όλα τα μέρη στο ίδιο αρχείο C κάνοντας χρήση συναρτήσεων. Θα ξεκινήσουμε με την περιγραφή του παιχνιδιού «Οι Τρεις Σωματοφύλακες» (Three Musketeers) και στην συνέχεια θα παρουσιάσουμε τα ζητούμενα. ΙΙ. Περιγραφή Σε αυτήν την εργασία θα χρειαστεί να υλοποιήσετε το παιχνίδι «Οι Τρεις Σωματοφύλακες». Το παιχνίδι αποτελείται από ένα πλέγμα το οποίο περιλαμβάνει 5 σειρές αποτελούμενες από 5 τετράγωνα η καθεμία. Οι σειρές ονομάζονται χρησιμοποιώντας τα γράμματα A, B, C, D, E, και οι στήλες χρησιμοποιώντας τους αριθμούς από 1 στο 5. Αρχικά, πάνω στο πλέγμα είναι τοποθετημένα 25 τεμάχια, 22 άσπρα και τρία κόκκινα. Ένα παράδειγμα ενός τέτοιου πλέγματος φαίνεται στην εικόνα 1. Εικόνα 1 Αρχικό Πλέγμα Παιχνιδιού Τα τρία κόκκινα τεμάχια συμβολίζουν τους τρεις σωματοφύλακες, ενώ τα 22 άσπρα τους στρατιώτες του καρδιναλίου Richelieu. Κάθε φορά που ξεκινά το παιχνίδι η τοποθέτηση των τεμαχίων είναι αυτή που φαίνεται στην εικόνα 1. Οι παίκτες παίζουν εκ περιτροπής μετακινώντας ένα τεμάχιο. Η πρώτη κίνηση γίνεται από έναν σωματοφύλακα. Οι κανόνες είναι οι εξής: Ο σωματοφύλακας μπορεί να κινηθεί σε οποιοδήποτε ορθογώνιο (μη-διαγώνιο) παρακείμενο κουτάκι στο οποίο βρίσκεται ένας εχθρός (στρατιώτης του καρδιναλίου Richelieu). Μετά από αυτήν την κίνηση,

ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου το τεμάχιο εχθρός αφαιρείται από το παιχνίδι. Ο εχθρός μπορεί να μετακινήσει ένα τεμάχιό σε οποιοδήποτε ορθογώνιο (μη-διαγώνιο) κουτάκι δίπλα του, το οποίο είναι κενό. Ο εχθρός κερδίζει εάν μπορεί να αναγκάσει τους τρεις σωματοφύλακες να είναι όλοι στην ίδια γραμμή ή στην ίδια στήλη. Οι σωματοφύλακες κερδίζουν αν με τη σειρά τους δεν μπορούν να μετακινηθούν λόγω του ότι δεν υπάρχουν άλλα τεμάχια του εχθρού στα γειτονικά κουτάκια του κάθε σωματοφύλακα, και δεν είναι όλοι στην ίδια γραμμή ή στην ίδια στήλη. Εφ 'όσον ένας σωματοφύλακας μπορεί να κινηθεί, το παιχνίδι δεν έχει λήξει. Το παιχνίδι των Τριών Σωματοφυλάκων είναι ένα επιτραπέζιο παιχνίδι στρατηγικής και είναι αξιοσημείωτο για το γεγονός ότι χρησιμοποιεί την αρχή των άνισων δυνάμεων. Οι δύο παίκτες δεν χρησιμοποιούν ίσο αριθμό τεμαχίων, ούτε τους ίδιους κανόνες και οι συνθήκες νίκης τους είναι διαφορετικές. ΙΙI. Ζητούμενα Άσκησης Ζητούμενο αυτής της άσκησης είναι η κατασκευή ενός προγράμματος, threemusketeers.c, στη γλώσσα προγραμματισμού C, το οποίο δοθέντος του πλέγματος του παιχνιδιού Three Musketeers, ζητά από το χρήστη του προγράμματος να παίξει το παιχνίδι σύμφωνα με τους κανόνες που περιγράφονται στο κεφάλαιο 2 της εκφώνησης. Το πρόγραμμά σας πρέπει να υλοποιεί τις ακόλουθες λειτουργίες: Λειτουργία 1 (Αρχικοποίηση Πλέγματος Παιχνιδιού): O χρήστης δίνει στην γραμμή εντολών το όνομα ενός αρχείου, π.χ., inputfile.txt το οποίο περιέχει μια αρχική διάταξη των τεμαχίων στο πλέγμα του παιχνιδιού, και το οποίο διαβάζεται στην μνήμη. Λειτουργία 2 (Παρουσίαση Πλέγματος Παιχνιδιού): Το πλέγμα παρουσιάζεται στην οθόνη στην μορφή του παραδείγματος που παρουσιάζεται στο τέλος της εκφώνησης. Λειτουργία 3 (Παίζοντας το Παιχνίδι Οι Τρεις Σωματοφύλακες): Ο χρήστης έχει την δυνατότητα να παίξει ή να τερματίσει την λειτουργία του παιχνιδιού (δείτε παράδειγμα στο τέλος της εκφώνησης). Λειτουργία 4 (Αποθήκευση Πλέγματος Παιχνιδιού): Όταν επιλεγεί η διακοπή του παιχνιδιού ή υπάρχει νικητής, τότε το πρόγραμμα δημιουργεί το αρχείο out-inputfile.txt, στο οποίο αποθηκεύεται ο πίνακας του πλέγματος του παιχνιδιού που βρίσκεται στην μνήμη τη δεδομένη στιγμή (στην μορφή που είναι και ο πίνακας στο αρχείο εισόδου). Λειτουργία 1 (Αρχικοποίηση Πλέγματος Παιχνιδιού) Εντάξετε στο πρόγραμμα σας μια συνάρτηση readboard(your_parameters) (όπου your_parameters μπορεί να είναι όσες παράμετροι θεωρείτε αναγκαίες) η οποία θα διαβάζει την αρχική διάταξη των τεμαχίων του παιχνιδιού από ένα αρχείο κειμένου σε μια δομή δεδομένων. Ένα πλέγμα παιχνιδιού αποθηκεύεται ως ακολούθως: περιλαμβάνει 5 στήλες (οι οποίες χωρίζονται μεταξύ τους με ένα κενό χαρακτήρα), και 5 γραμμές (οι οποίες χωρίζονται μεταξύ τους με '\n'). Σε κάθε σημείο αποθηκεύεται ένας συγκεκριμένος χαρακτήρας, o που αντιστοιχεί σε ένα στρατιώτη του Richelieu, M που αντιστοιχεί σε ένα σωματοφύλακα. Σημείωση: Το πρόγραμμα σας θα πρέπει να ορίζει μια σταθερά π.χ., #define N 5 η οποία θα προσδιορίζει (πριν την μεταγλώττιση) το μέγεθος του πίνακα. Ο χρήστης μπορεί να φορτώσει στη μνήμη και ένα παιχνίδι που το έχει αφήσει στη μέση, όταν προηγουμένως έχει διακόψει το παιχνίδι αυτό, και να συνεχίσει να παίζει το ίδιο παιχνίδι. Πρέπει να γίνεται έλεγχος για την ορθότητα των δεδομένων στο αρχείο εισόδου. Λειτουργία 2 (Παρουσίαση Πλέγματος Παιχνιδιού) Εντάξετε στο πρόγραμμα σας μια συνάρτηση display_board(your_parameters)η οποία εμφανίζει στην οθόνη ένα πλέγμα του παιχνιδιού με την μορφοποίηση που δίνεται πιο κάτω διαγραμματικά. 2 από 9

ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου A o o o o M B o o o o o C o o M o o D o o o o o Στην αρχική διάταξη, όλοι οι κύκλοι αντιπροσωπεύουν τους στρατιώτες του καρδιναλίου Richelieu, ενώ οι χαρακτήρες Μ τους σωματοφύλακες. Λειτουργία 3 (Παίζοντας το παιχνίδι Οι Τρεις Σωματοφύλακες) Εντάξετε στο πρόγραμμα σας μια συνάρτηση play(your_parameters)η οποία θα επιτρέπει σε ένα παίκτη να εισάγει επαναληπτικά κάποιες τιμές (εντολές), βάσει των κανονισμών του παιχνιδιού, μέχρι να επιλυθεί το παιχνίδι. Πιο συγκεκριμένα, όταν ξεκινήσει η εκτέλεση του παιχνιδιού σας τότε θα πρέπει το πρόγραμμα να εμφανίσει το μήνυμα που φαίνεται στο παράδειγμα εκτέλεσης το οποίο εξηγεί τους κανόνες του παιχνιδιού. Μετά ο χρήστης καλείται να εισάγει κάποια δεδομένα στην μορφή "i,j=value". Η τιμές των i,j αντιστοιχούν στην σειρά και την στήλη μιας συγκεκριμένης θέσης στο πλέγμα παιχνιδιού, ενώ η τιμή value αντιστοιχεί στην κατεύθυνση της κίνησης που πρέπει να κάνει το τεμάχιο που βρίσκεται στην συγκεκριμένη θέση. Α) Το παιχνίδι ξεκινά ζητώντας από το χρήστη να δώσει την κίνηση για τον σωματοφύλακα. Αν ο χρήστης δώσει ως εντολή εισαγωγής A,5=L τότε δηλώνει ότι θέλει να μετακινήσει τον σωματοφύλακα της πάνω δεξιά γωνίας αριστερά κατά μια θέση. Σημειώστε ότι οι γραμμές αριθμούνται από το A έως το E. Στη συνέχεια, γίνεται έλεγχος αν στην εντολή που έδωσε ο χρήστης έχει πρόβλημα. Εσείς πρέπει να σκεφτείτε ποια μπορεί να είναι όλα τα πιθανά προβλήματα και να δώσετε τα κατάλληλα μηνύματα λαθών. Στο παράδειγμα εκτέλεσης θα δείτε μερικά από αυτά. Στο κώδικα ο έλεγχος πρέπει να γίνει μέσω της υλοποίησης συναρτήσεων. Β) Εάν η εισαγωγή ολοκληρώνει το παιχνίδι τότε ο χρήστης πρέπει να λαμβάνει το κατάλληλο μήνυμα και να εκτυπώνεται η κατάσταση του πλέγματος στην οθόνη. Εάν δεν ολοκληρώνεται το παιχνίδι τότε απλά ξανάπαρουσιάζεται το πλέγμα στην οθόνη και ζητείται από τον χρήστη να δώσει την επόμενη του εισαγωγή (στο μέρος VI ακολουθεί ενδεικτική εκτέλεση). Η συνάρτηση play() πρέπει να δίνει τα κατάλληλα μηνύματα λάθους εάν ο χρήστης δίνει εντολή σε άλλη μορφή ή δίνει μια μη έγκυρη τιμή στο i,j=value. Γ) Διακοπή Παιχνιδιού (εντολή: 0,0=Ε): Αν ο χρήστης δώσει ως εντολή εισαγωγής 0,0=Ε τότε δηλώνει ότι θέλει να σταματήσει την εκτέλεση του παιχνιδιού. Σε αυτή την περίπτωση διακόπτεται το παιχνίδι και αποθηκεύεται ο πίνακας σε αρχείο όπως περιγράφεται στο επόμενο Θέμα 4. Δ) Και για τις τρεις παραπάνω περιπτώσεις να γίνει έλεγχος εάν δοθεί κάποιος άλλος χαρακτήρας εκτός των: A/a, B/b, C/c, D/d, E/e, για την γραμμή, 1, 2, 3, 4, 5, για την στήλη, L/l, R/r, U/u, D/d για την κατεύθυνση. Λειτουργία 4 (Αποθήκευση Πλέγματος Παιχνιδιού) Εντάξετε στο πρόγραμμα σας μια συνάρτηση writeboard(your_parameters)η οποία αποθηκεύει στο αρχείο out-inputfile.txt. το πλέγμα του παιχνιδιού που βρίσκεται στη μνήμη. Το αρχείο πρέπει να έχει την ίδια μορφή με το αρχείο εισόδου. 3 από 9

ΙV. Γενικές Οδηγίες ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου Το πρόγραμμα σας θα πρέπει να συμβαδίζει με το πρότυπο ISO C, να περιλαμβάνει εύστοχα και περιεκτικά σχόλια, να έχει καλή στοίχιση και το όνομα κάθε μεταβλητής, σταθεράς, ή συνάρτησης να είναι ενδεικτικό του ρόλου της. Να χρησιμοποιήσετε το λογισμικό τεκμηρίωσης doxygen έτσι ώστε να μπορούμε να μετατρέψουμε τα σχόλια του προγράμματός σας σε HTML αρχεία και να τα δούμε με ένα browser. Η συστηματική αντιμετώπιση της λύσης ενός προβλήματος περιλαμβάνει στο παρόν στάδιο τη διάσπαση του προβλήματος σε μικρότερα ανεξάρτητα προβλήματα που κατά κανόνα κωδικοποιούμε σε ξεχωριστές συναρτήσεις. Για αυτό τον λόγο σας καλούμε να κάνετε χρήση συναρτήσεων και άλλων τεχνικών δομημένου προγραμματισμού που διδαχτήκατε στο ΕΠΛ131. Επίσης, σας θυμίζουμε ότι κατά την διάρκεια της εκτέλεσης του προγράμματος σας αυτό θα πρέπει να δίνει τα κατάλληλα μηνύματα σε περίπτωση λάθους. Τέλος το πρόγραμμα σας θα πρέπει να μεταγλωττίζεται στις μηχανές του εργαστηρίου. Παρακαλώ όπως μελετηθούν ξανά οι κανόνες υποβολής εργασιών όπως αυτοί ορίζονται στο συμβόλαιο του μαθήματος. Επίσης να ακολουθήσετε τα πιο κάτω βήματα όταν υποβάλετε την άσκηση σας στο Moodle: 1. Δημιουργείστε ένα κατάλογο με το όνομά σας π.χ., PyrrosBratskas/ χωρίς να αφήνετε κενά στο όνομα του καταλόγου. 2. Βάλτε μέσα στον κατάλογο αυτό όλα τα αρχεία της εργασίας (κώδικας, doxygen configuration file) που πρέπει να υποβάλετε. 3. Συμπιέστε (zip) τον κατάλογο (και όχι τα αρχεία ξεχωριστά) χρησιμοποιώντας την εντολή zip c PyrrosBratskas.zip PyrrosBratskas/* 4. Βεβαιωθείτε ότι κάνατε σωστά τα τρία προηγούμενα βήματα (π.χ., αποσυμπιέζοντας το zip) 5. Ανεβάστε στο Moodle το συμπιεσμένο αρχείο π.χ., PyrrosBratskas.zip V. Κριτήρια αξιολόγησης Θέμα 1 (Ανάγνωση Αρχείου) 15 Θέμα 2 (Παρουσίαση Πλέγματος Παιχνιδιού) 15 Θέμα 3 (Παίζοντας το παιχνίδι Οι Τρεις Σωματοφύλακες) 40 Θέμα 4 (Αποθήκευση Πλέγματος Παιχνιδιού) 15 Γενική εικόνα (ευανάγνωστος κώδικας, σχολιασμός, κλπ.) 15 ΣΥΝΟΛΟ 100 4 από 9

VI. Παράδειγμα εκτέλεσης ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου Η εκτέλεση του προγράµµατος στην περίπτωση που κερδίζουν οι στρατιώτες του Richelieu: >./threemusketeers theboard.txt *** The Three Musketeers Game *** To make a move, enter the location of the piece you want to move, and the direction you want it to move. Locations are indicated as a letter (A, B, C, D, E) followed by a number (1, 2, 3, 4, or 5). Directions are indicated as left, right, up and down (L/l, R/r, U/u, D/d). For example, to move the Musketeer from the top-right corner to the row below, enter 'A,5 = L' or 'a,5=l'(without quotes). A o o o o M B o o o o o C o o M o o D o o o o o >a,5=l A o o o M. B o o o o o C o o M o o D o o o o o >C,3=d You can't move there! >B,5=u C o o M o o D o o o o o >C,3=d 5 από 9

C o o. o o D o o M o o >c,4=l D o o M o o Give the Musketeer s move >e,1=l ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου This move gets out of the board or it's a wrong move >e,1=d This move gets out of the board or it's a wrong move >e,1=r D o o M o o E. M o o o >d,1=d D. o M o o E o M o o o Give the Musketeer s move >e,2=r 6 από 9

ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου D. o M o o E o. M o o >e,1=r D. o M o o E. o M o o Give the Musketeer s move >D,3=r D. o. M o E. o M o o >b,4=r B o o o. o D. o. M o E. o M o o Give the Musketeer s move >e,3=r Cardinal Richelieu's men win! Saving out-input1...done Au revoir! 7 από 9

>./threemusketeers theboard.txt ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου Το τελευταίο κοµµάτι της εκτέλεσης στην περίπτωση που κερδίζουν οι σωµατοφύλακες: A.... M B..... C... M. D... o o E... M. >e,4=u A.... M B..... C... M. D... M o E..... >d,5=u A.... M B..... C... M o D... M. E..... >c,4=r A.... M B..... C.... M D... M. E..... The Musketeers win! Saving out-input1.txt...done Au revoir! 8 από 9

ΕΠΛ132 Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου >./threemusketeers theboard.txt Το τελευταίο κοµµάτι της εκτέλεσης για άλλη περίπτωση που κερδίζουν οι σωµατοφύλακες: A o o. M. B. o... C.... M D M.. o o E.. o o o >d,4=u A o o. M. B. o... C... o M D M... o E.. o o o >c,5=l A o o. M. B. o... C... M. D M... o E.. o o o >e,3=l A o o. M. B. o... C... M. D M... o E. o. o o The Musketeers win! Saving out-theboard.txt...done Au revoir! 9 από 9