ΗΥ 252 Αντικειμενοστρεφής Προγραμματισμός Προγραμματιστική Εργασία Χειμερινού Εξαμήνου Σκάκι

Σχετικά έγγραφα
Chess Academy Free Lessons Ακαδημία Σκάκι Δωρεάν Μαθήματα. Οι κινήσεις των κομματιών Σκοπός της παρτίδας, το Ματ Πατ Επιμέλεια: Γιάννης Κατσίρης

2.2 Ειδικά Φύλλα Mahjong Phoenix - Φοίνικας Hund - Σκυλάκια Drache - Δράκος... 5

ΗΥ252 - Οντοκεντρικός Προγραµµατισµός Προγραµµατιστική Εργασία Εαρινού Εξαµήνου 2004 Περιγραφή Παραδοτέων

Ιεραρχία Οργανισµών Οι οργανισµοί που ζουν στο οικοσύστηµά µας κατατάσσονται σύµφωνα µε την παρακάτω ιεραρχία: Organisms

Chess Academy Free Lessons Ακαδημία Σκάκι Δωρεάν Μαθήματα. Ματ με δύο βαριά κομμάτια Ματ με Βασίλισσα Επιμέλεια: Γιάννης Κατσίρης

Μαθαίνοντας σκάκι. Εγχειρίδιο για προπονητές. εύτερο βήμα

Οντοκεντρικός Προγραμματισμός II C++ Project Xειμερινό Εξάμηνο Organisms

Μαθαίνοντας σκάκι. Εγχειρίδιο για προπονητές. Τρίτο βήμα


Γιώργος Γκούμας. Τα πρώτα σκακιστικά βήματα του παιδιού

ΔΙΑΝΥΣΜΑΤΑ. Ακολουθίες. Στην ενότητα αυτή θα μάθουμε: Να ορίζουμε το διάνυσμα.

PROJECT ΣΤΟ ΜΑΘΗΜΑ "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ"

Γνωριμία με τον Εξοπλισμό

αντίστοιχο γεγονός. Όταν όντως το κουμπί

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ ΣΕΡΡΩΝ ΣΧΟΛ. ΕΤΟΣ «ΚΩΝ. ΚΑΡΑΜΑΝΛΗΣ» ΠΟΙΗΜΑΤΑ ΒΑΣΙΛΙΑΣ

ΗΥ-252 Αντικειμενοστρεφής Προγραμματισμός Προγραμματιστική Εργασία Χειμερινού Εξαµήνου 2005

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

Κλιμάκιο Πληροφορικής Σεμινάρια για τα λογισμικά κλειστού τύπου Κύκλος Α

Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Value Iteration και Q- Learning για Peg Solitaire

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

1. Πάντα να μπλοκάρετε τα προωθημένα πιόνια του αντιπάλου

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

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

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

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

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ. ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning. Βόλτσης Βαγγέλης Α.Μ

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

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

1.2 Κομμάτια Μικρής Εμβέλειας Το άλογο

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

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων Σωτήρης Γυφτόπουλος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Χρήση εργαλείων Εικόνων, Εντολών και Ετικετών ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: SCRATCH. Ονοματεπώνυμο:

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά.

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

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Περιεχόμενα του Παιχνιδιού

Παιχνιδάκια με τη LOGO

Δημιουργία και επεξεργασία διανυσματικών επιπέδων στο QGIS

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

App Inventor 5ο Μάθημα (Κορώνα γράμματα - επέκταση)

Βασικές Εντολές MicroWorlds Pro.

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων

Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Σχετική κίνηση αντικειμένων

Slalom Race Computer Game on Scratch

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

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

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

Θα αναπτύξουμε μια εφαρμογή που θα λειτουργεί σαν κουμπί πανικού. Η εφαρμογή θα αποτελείται από δύο κουμπιά.

Καροτοκυνηγός. Αντικείμενα

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

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

Κεφάλαιο 5. Αλγόριθµοι Αναζήτησης σε Παίγνια ύο Αντιπάλων. Τεχνητή Νοηµοσύνη - Β' Έκδοση

3 ο εργαστήριο Scratch for NinjaCoders

Εφαρμογή δημιουργίας σεναρίων Sctatch

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Εισαγωγή ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Ράβδος Εργαλείων, σχεδόν τα ίδια εργαλεία και εικονίδια υπάρχουν όπως στα άλλα προγράμματα που έχετε μάθει μέχρι σήμερα.

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΡΓΑΝΩΣΗΣ. Ο ΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ e-university/ classweb

Αντικείμενα, συμπεριφορές, γεγονότα

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

Σχεδίαση και ανάπτυξη δραστηριοτήτων στο προγραμματιστικό περιβάλλον MicroWorlds Pro

Εισαγωγή στην επανάληψη

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

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

Ξεκινώντας με το MIT App Inventor 2 Μάθημα 4 Δημιουργώντας ένα απλό παιχνίδι (Κορώνα Γράμματα)

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

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

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

ΒΑΣΙΚΟΙ ΚΑΝΟΝΕΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ

Ας μετονομάσουμε τη γάτα που εμφανίζεται μόλις ανοίγουμε το Scratch. Επιλέγουμε το εικονίδιο Μορφή1 που βρίσκεται στη λίστα αντικειμένων.

Επεξήγηση Συμβόλων... 7 Βιβλιογραφικές Αναφορές... 9 Εισαγωγή Από τη Σκοπιά του Αναγνώστη... 13

1. Από το κεντρικό site του Ιδρύματος επιλέγουμε το σύνδεσμο "Γραμματείες Τμημάτων".

Δραστηριότητα 1 γνωριμία με το περιβάλλον Karel

Εμφανίζονται 3 επιλογές με 3 εικονίδια, η «ζωγραφική», η «εισαγωγή» και η «κάμερα».

Αντικειμενοστρεφής Προγραμματισμός

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

ΟΔΗΓΟΣ ΔΗΜΙΟΥΡΓΙΑΣ ΤΡΙΣΔΙΑΣΤΑΤΩΝ ΓΡΑΦΙΚΩΝ ΜΕ ΧΡΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ POVRAY MODELER ΣΤΟ LINUX

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

Ο ΗΓΙΕΣ DOCUMENT DESIGNER

ΑΚΑΔΗΜΑΪΚΟ PORTAL ΚΑΤΑΧΩΡΙΣΗΣ ΒΑΘΜΟΛΟΓΙΩΝ

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

του προγράμματος diagrama_rohs.zip )

Εισαγωγή στο περιβάλλον Code::Blocks

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ΠΡΟΕΤΟΙΜΑΣΙΑ ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΕΤΟΙΜΑΣΙΑΣ ΓΙΑ 4 ΠΑΙΚΤΕΣ: 1. ΠΡΟΕΤΟΙΜΑΣΙΑ ΤΩΝ ΝΗΣΙΩΝ

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Transcript:

ΗΥ 252 Αντικειμενοστρεφής Προγραμματισμός Προγραμματιστική Εργασία Χειμερινού Εξαμήνου 2008 Σκάκι Α. Εισαγωγή Το σκάκι είναι ένα επιτραπέζιο παιχνίδι με μακραίωνη ιστορία. Παίζεται από δυο παίχτες αντιπάλους σε μια τετράγωνη βάση που ονομάζεται σκακιέρα. Κάθε παίκτης ξεκινά την παρτίδα με 16 πεσσούς κάθε ένας των οποίων ανήκει σε κάποιο είδος που έχει τον δικό του ιδιαίτερο τρόπο κίνησης και αιχμαλώτισης αντίπαλων κομματιών. Ο στόχος κάθε παίχτη είναι να προστατέψει τον βασιλιά του και να αιχμαλωτίσει τον αντίπαλο βασιλιά. Β. Συστατικά Το σκάκι αποτελείται από την σκακιέρα και τους πεσσούς. 1.Σκακιέρα Η σκακιέρα είναι ένας τετράγωνος 8x8 πίνακας αποτελούμενος από άσπρα και μαύρα τετράγωνα εναλλάξ τοποθετημένα. Το κάτω αριστερά τετράγωνο είναι πάντα μαύρο. Κάθε στήλη χαρακτηρίζεται από ένα γράμμα (a-h ή α-θ) και κάθε γραμμή από έναν αριθμό (1-8). Έτσι το κάθε τετράγωνο χαρακτηρίζεται από ένα μοναδικό ζεύγος του αριθμό γραμμής και του γράμματος της στήλης. Πάνω στην σκακιέρα κινούνται οι πεσσοί.

Σκακιέρα 2.Πεσσοί Στο σκάκι υπάρχουν 2 στρατοί αποτελούμενοι από 16 πεσσούς ο καθένας ( 32 συνολικά ). Ο κάθε παίχτης έχει από έναν στρατό που χαρακτηρίζεται από το χρώμα του (άσπρο ή μαύρο). Συχνά οι πεσσοί του κάθε παίχτη αποκαλούνται «τα άσπρα» ή «τα μαύρα» αντίστοιχα. Οι πεσσοί είναι 6 διαφορετικών τύπων κάθε ένας εκ των οποίων έχει τον δικό του ιδιαίτερο τρόπο κίνησης και αιχμαλώτισης του αντίπαλου πεσσού. Κάθε στρατός αποτελείται : 1 βασιλιά 1 βασίλισσα 2 πύργους 2 αξιωματικούς 2 ίππους 8 πιόνια Β. Κανόνες 1.Σκοπός Ο σκοπός κάθε παίχτη είναι η επίτευξη ματ στον αντίπαλο βασιλιά. Αυτό συμβαίνει όταν ο βασιλιάς απειλείται (αυτό ονομάζεται «σαχ» ) και δεν υπάρχει νόμιμη κίνηση διάσωσης. Ας σημειωθεί ότι το ματ καθιστά την αιχμαλώτιση του βασιλιά περιττή καθώς αποτελεί το τέλος του παιχνιδιού. 2

2.Αρχικοποίηση Το παιχνίδι ξεκινά παραδοσιακά από συγκεκριμένη θέση όπου οι στρατοί παρατάσσονται αντικριστά. Την παρτίδα ξεκινά ο λευκός και στην υπόλοιπη παρτίδα οι παίκτες παίζουν εναλλάξ κινώντας κάποιο κομμάτι τους. Αναλυτικά, η τοποθέτηση των πεσσών πάνω στην σκακιέρα κατά την εκκίνηση του παιχνιδιού είναι : Τα 8 άσπρα πιόνια τοποθετούνται στην 2 η γραμμή. Τα μαύρα πιόνια στην 7 η. Οι λευκοί πύργοι τοποθετούνται στα a1 και h1. Τα μαύρα στα a8 και h8. Τα άλογα τοποθετούνται δίπλα από τους πύργους. Δίπλα από τα άλογα τοποθετούνται οι αξιωματικοί Δίπλα από τους αξιωματικούς τοποθετούνται ο βασιλιάς και η βασίλισσα, με την βασίλισσα να τοποθετείται σε τετράγωνο ίδιου χρώματος με το χρώμα του στρατού στον οποίο ανήκει. Οι παίχτες παίζουν εναλλάξ με τον παίχτη που έχει τον άσπρο στρατό να κάνει την πρώτη κίνηση. 3.Κίνηση Αρχική τοποθέτηση πεσσών Κάθε πεσσός έχει τον δικό του ιδιαίτερο τρόπο κίνησης. Η κίνηση του κάθε πεσσού γίνεται φυσικά εντός τον ορίων της σκακιέρας. Σε κάθε τετράγωνο υπάρχει το πολύ ένας πεσσός (δηλαδή δεν μπορεί σ ένα τετράγωνο να έχουμε δυο ή περισσότερους πεσσούς ). 3

Πιόνια(Pawns): Τα πιόνια κινούνται μόνο ένα τετραγωνάκι προς τα εμπρός δηλαδή προς την μεριά που βρίσκεται αρχικά ο αντίπαλος στρατός. Όταν το πιόνι βρίσκεται στην αρχική του θέση - και μόνο τότε μπορεί να κάνει κινηθεί προς τα εμπρός απόσταση 2 τετραγώνων. Κίνηση πιονιού Βασιλιάς(King): Ο βασιλιάς μπορεί να κινηθεί σ ένα οποιοδήποτε γειτονικό τετράγωνο (οριζόντια, κάθετα ή διαγώνια). Ο βασιλιάς δεν μπορεί να μετακινηθεί σε ένα τετράγωνο που απειλείται από κάποιον αντίπαλο πεσσό. Κίνηση βασιλιά Βασίλισσα(Queen): Η βασίλισσα μπορεί να κινείται οριζόντια, κάθετα ή διαγώνια όσα τετράγωνα απόσταση θέλει. Σε αντίθεση με τον βασιλιά που κινείται προς τις ίδιες κατευθύνσεις αλλά μόνο ένα τετράγωνο απόσταση. 4

Κίνηση βασίλισσας Πύργος(Rook): Ο πύργος κινείται οριζόντια ή κάθετα όσα τετράγωνα απόσταση θέλει. Κίνηση πύργου Αξιωματικός(Bishop): Ο αξιωματικός κινείται διαγώνια όσα τετράγωνα απόσταση θέλει. Παρατήρηση: Ένας αξιωματικός δεν πρόκειται να βρεθεί ποτέ σε ένα τετράγωνο αντίθετου χρώματος από το τετράγωνο από το οποίο ξεκίνησε. 5

Κίνηση αξιωματικού Άλογο(Knight): Το άλογο κινείται κάνοντας ένα «Γ» όρθιο ή ξαπλωτό, ορθά η ανάποδα. Δυο τετράγωνα προς την μια κατεύθυνση και ένα τετράγωνο κάθετα προς την προηγούμενη. Κίνηση αλόγου 4.Αιχμαλώτιση Ο κάθε στρατός μπορεί να αιχμαλωτίσει πεσσούς του αντίπαλου στρατού. Ο αιχμάλωτος πεσσός φεύγει από την σκακιέρα. (αιχμαλώτιση, φάγωμα, κόψιμο έχουν την ίδια ακριβώς σημασία) Όλοι οι πεσσοί εκτός από τα πιόνια, μπορούν να «φάνε»/«αιχμαλωτίσουν» έναν αντίπαλο πεσσό, εφόσον αυτός βρίσκεται σε κάποια από τα τετράγωνα που αυτοί μπορούν να κινηθούν. Ο πεσσός που «φαγώθηκε» / «αιχμαλωτίστηκε» φεύγει από την σκακιέρα. Ο πεσσός που έφαγε κάποιον αντίπαλο μετακινείτε στην θέση που βρισκόταν ο «αιχμάλωτος» πεσσός. Το πιόνι μπορεί να φάει αντιπάλους πεσσούς που βρίσκονται σε κάποιο δυο διαγωνίως μπροστά τετράγωνα (είτε μπροστά και αριστερά, είτε μπροστά και δεξιά ). Όπως και οι υπόλοιποι, το πιόνι παίρνει την θέση του πεσσού που μόλις «έφαγε». 6

5.Ειδικές κινήσεις Προαγωγή(Promotion) Όταν ένα πιόνι φτάσει στην τελευταία γραμμή μετατρέπεται σε βασίλισσα, πύργος, αξιωματικό ή άλογο. Ο παίκτης επιλέγει σε τι θέλει να μετατραπεί το πιόνι ανεξάρτητα από το ποιοι πεσσοί του έχουν φαγωθεί/αιχμαλωτιστεί. Το πιόνι φεύγει από την σκακιέρα και στην θέση του μπαίνει ο αντικαταστάτης του. Ροκέ(Castling) Μια ειδική κίνηση που συμμετέχει ο βασιλιάς και ένας πύργος είναι το ροκέ. Πραγματοποιείται με την μετακίνηση του βασιλιά δύο τετράγωνα προς τον πύργο και την μετακίνηση του πύργου στο τετράγωνο ανάμεσα στην αρχική και τελική θέση του βασιλιά. Υπάρχουν δυο είδη ροκέ. Το μικρό ροκέ που γίνεται με τον πύργο του βασιλιά και το μεγάλο ροκέ που γίνεται με τον πύργο της βασίλισσας. Το μικρό ροκέ συμβολίζεται γενικά Ο-Ο και το μεγάλο συμβολίζεται Ο-Ο-Ο. Στα διαγράμματα αριστερά παρουσιάζεται το μικρό ροκέ και δεξιά το μεγάλο ροκέ. Οι όροι για να επιτραπεί το ροκέ είναι: i. Ο βασιλιάς δεν πρέπει να έχει μετακινηθεί ποτέ από την αρχική θέση του. ii. Ο πύργος που θα συμμετάσχει επίσης δεν πρέπει να έχει μετακινηθεί ποτέ από την αρχική θέση του. iii. Ο βασιλιάς δεν πρέπει να είναι υπό την απειλή σαχ την δεδομένη στιγμή. iv. Το ενδιάμεσο τετράγωνο από το οποίο θα περάσει ο βασιλιάς δεν πρέπει να απειλείται. v. Το τελικό τετράγωνο που θα καταλήξει ο βασιλιάς βεβαίως δεν πρέπει να απειλείται. vi. Δεν πρέπει να παρεμβάλλονται κομμάτια μεταξύ του βασιλιά και του πύργου. Μεγάλο ροκέ 7

Μικρό ροκέ 6.Περιπτωσεις ισοπαλίας Το παιχνίδι μπορεί να λήξη χωρίς νικητή, με ισοπαλία. Αυτό συμβαίνει στις παρακάτω περιπτώσεις: Όταν ένας παίχτης δεν έχει νόμιμες κινήσεις και ο βασιλιάς του δεν απειλείτε (δεν είναι σαχ) Όταν η επίτευξη ματ είναι αδύνατη. Όταν δηλαδή και οι δυο παίχτες έχουν κάποιο από τους παρακάτω συνδυασμούς πεσσών (δεν χρειάζεται να έχουν τον ίδιο συνδυασμό) : o Βασιλιάς και δυο άλογα o Βασιλιάς και ένα άλογο o Βασιλιάς και ένας αξιωματικός o Βασιλιάς Γ. Ζητούμενα Προγραμματιστικής Άσκησης Στην εργασία αυτή θα πρέπει να υλοποιήσετε το σκάκι που θα παίζεται από δυο παίχτες. Θα πρέπει η φιλοσοφία της εργασίας σας να εστιάζει στην δυνατότητα επαναχρησιμοποίησης και επέκτασης της λειτουργικότητας των κλάσεων που σχεδιάζετε. Κάποιες από τις ερωτήσεις που πρέπει να έχετε στο μυαλό σας κατά την σχεδίαση της εργασίας είναι : Πόσο εύκολο θα ήταν να επεκτείνετε το σκάκι σας με επιπλέον κινήσεις (πχ en passant), πόσο εύκολο θα ήταν να φτιαχτεί μια επιπλέον διεπαφή χρήστη (πχ applet) χωρίς να αλλάξουν τα υπόλοιπα κομμάτια του παιχνιδιού. Βασικές Συνιστώσες Προγράμματος Το παραπάνω σχήμα μας δείχνει τις τρεις βασικές συνιστώσες του προγράμματος που θα αναπτύξετε στα πλαίσια της εργασίας σας. 8

1. Διεπαφή Χρήστη (User Interface - UI) Η διεπαφή χρήστη (UI) είναι υπεύθυνη για την επικοινωνία του παιχνιδιού με τους παίχτες. Απεικονίζει την σκακιέρα με τους πεσσούς. Για την εργασία θα πρέπει να σχεδιάσετε και να υλοποιήσετε δυο διαφορετικές διεπαφές χρήστη, μια γραφική διεπαφή και μια διεπαφή κονσόλας. Η επιλογή του UI θα γίνεται μέσω μιας παραμέτρου που θα δίνεται κατά την εκτέλεση του προγράμματος. Γραφική Διεπαφή Χρήστη (Graphical User Interface - GUI) Αρχικά θα πρέπει να εμφανίζεται ένα παράθυρο που θα ζητά τα ονόματα των δυο παιχτών καθώς και τον παίχτη που θα έχει τα άσπρα. Επίσης θα δίνεται η επιλογή το παιχνίδι να επιλέγει τυχαία τον παίχτη με τα άσπρα. Μόλις ο χρήστης εισάγει τις απαραίτητες πληροφορίες και πατήσει το κουμπί «play» εμφανίζεται το κύριο παράθυρο του παιχνιδιού. Το παράθυρο αυτό απεικονίζει την σκακιέρα με τους πεσσούς όπως στο παρακάτω σχήμα. 9

Στο παράθυρο αυτό θα φαίνονται τα ονόματα των παιχτών καθώς και το ποιος παίχτης έχει σειρά. Για να κουνήσει ο παίχτης τους πεσσούς του αρχικά επιλέγει τον πεσσό που θέλει και στην συνέχεια κάνει κλικ στο τετράγωνο που θέλει να πάει. Αν η κίνηση είναι νόμιμη τότε εκτελείται αλλιώς όχι (μπορείτε να εμφανίζετε και κατάλληλο μήνυμα λάθους). Εάν η κίνηση που έγινε επιφέρει σαχ ματ ή ισοπαλία τότε εμφανίζεται κατάλληλο παράθυρο που αναφέρει το γεγονός και ζητά από τους παίχτες εάν θα ξαναπαίξουν η όχι (έξοδος από το παιχνίδι). Στο παράθυρο αυτό θα εμφανίζεται και ένα menu. Οι επιλογές θα είναι File, Edit και Settings. Πατώντας στο File θα εμφανίζονται οι επιλογές New, Save, Load και Exit. To Νew ξεκινάει το παιχνίδι από την αρχή. Το save αποθηκεύει σε αρχείο την κατάσταση του παιχνιδιού ώστε πατώντας το load να μπορεί κάποιος να το επαναφέρει και να συνεχίσει. Το Exit τερματίζει το πρόγραμμα. Πατώντας το Edit εμφανίζονται οι επιλογές Previous και Next. Οι επιλογές αυτές μας επιτρέπουν να παρακολουθήσουμε ολόκληρο το ιστορικό την παρτίδας, μέχρι δηλαδή την αρχική κατάσταση. Οι δυο αυτές επιλογές θα πρέπει να απενεργοποιούνται κατάλληλα. Δηλαδή όταν είμαστε στην τελευταία κίνηση δεν πρέπει να είναι ενεργοποιημένο το Next, αντίστοιχα όταν είμαστε στην πρώτη κίνηση το previous πρέπει να απενεργοποιείται. Με τις επιλογές αυτές ο χρηστής θα μπορεί να βλέπει το ιστορικό τις παρτίδας αλλά δεν μπορεί να συνεχίσει από το παιχνίδι από κάποια προηγούμενη κατάσταση. Η παρτίδα συνεχίζεται μόνο αφού η σκακιέρα έχει επανέλθει στην τελική κατάσταση που βρισκόταν. Οπότε θα πρέπει να κρατάτε και το ιστορικό όλων των κινήσεων της παρτίδας. Τέλος στο menu πατώντας το Settings θα πρέπει να εμφανίζεται το Proposed Moves. Όταν το Proposed Moves είναι επιλεγμένο και ο παίχτης, που έχει σειρά, επιλέξει κάποιον από του δικούς του πεσσούς, στην σκακιέρα αλλάζουν χρώμα τα τετράγωνα που αντιστοιχούν σε όλες τις δυνατές κινήσεις του πεσσού. 10

Διεπαφή Κονσόλας ( Command Line Interface ) Η δεύτερη διεπαφή που πρέπει να έχει το παιχνίδι είναι η διεπαφή κονσόλας. Η επικοινωνία γίνεται μέσω εντολών που πληκτρολογεί ο χρήστης καθώς και μηνυμάτων που εμφανίζονται στην κονσόλα. Ο τρόπος που αναπαρίσταται η σκακιέρα φαίνεται στην παρακάτω εικόνα. Για την αντιστοιχία πεσσών χρησιμοποιούμε το πρώτο γράμμα της αγγλικής λέξης του πεσσού, εκτός από τον βασιλιά που το συμβολίζουμε με w. Τα κεφαλαία γράμματα αντιστοιχούν στους λευκούς πεσσούς ενώ τα μικρά στους μαύρους. Οι κινήσεις θα δίνονται με την μορφή a2 -> a3. Το menu θα είναι αντίστοιχο με την άλλη διεπαφή με την διαφορά ότι εδώ απουσιάζει η επιλογή proposed moves. Αρχικά εμφανίζονται στην κονσόλα μηνύματα που ζητούν από το χρήστη πληροφορίες για το παιχνίδι (ονόματα παιχτών, αν κάποιος παίχτης θα έχει τα άσπρα ή θα αποφασίσει το παιχνίδι γι αυτό κτλ). Στην συνέχεια θ αρχίζει το παιχνίδι. Κάθε φορά θα εμφανίζεται στην οθόνη η σκακιέρα, το όνομα του παίχτη που έχει σειρά και από κάτω το menu με τις επιλογές του χρήστη. Πχ. 1. New 2. Save 3. Load 4.Exit 5. Previous 6. Next Κίνηση με την μορφή «αρχική θέση τελική θέση» Ο χρήστης μπορεί να επιλέξει πατώντας κάποιον αριθμό την ενέργεια που θέλει να κάνει πχ 2 για να αποθηκευτεί το παιχνίδι ή να δώσει κάποια κίνηση πεσσού. Αντίστοιχα και σ αυτή της διεπαφή, θα εμφανίζονται κατάλληλα μηνύματα στο τέλος του παιχνιδιού που θα ρωτούν για νέο παιχνίδι ή για έξοδο. 11

2. GameMaster Ο GameMaster είναι ο «εγκέφαλος» του παιχνιδιού. Είναι υπεύθυνος για τους κανόνες του παιχνιδιού εκτός από τις κινήσεις των πεσσών. Ο GameMaster ύστερα από κάθε κίνηση πεσσού κάνει έλεγχο για ισοπαλία και σαχ ματ. Επίσης είναι υπεύθυνος για την δημιουργία νέου παιχνιδιού (New), για την αποθήκευση του (Save) και το φόρτωμα παιχνιδιού του(load) μόλις ο χρήστης επιλέξει κάποια από αυτές τις επιλογές του menu. Τέλος ο GameMaster είναι αυτός που εκτελεί τις απαραίτητες λειτουργίες όταν ο χρήστης επιλέξει previous και next. 3.StateHolder O StateHolder σώζει την τρέχουσα κατάσταση του παιχνιδιού. Κρατά τις θέσεις των πεσσών στην σκακιέρα. Δώστε προσοχή στο ότι όλοι οι πεσσοί έχουν κάποια κοινά χαρακτηριστικά και συμπεριφορές όπως το χρώμα του πεσσού καθώς και την μέθοδο moves που επιστρέφει όλες τις δυνατές κινήσεις ενός πεσσού. Θα χρειαστεί να φτιάξετε μια αφηγημένη κλάση όπως την παρακάτω : public abstract class Piece { private Color c;.. public abstract List<Move> moves(point p, Board b);.. } Θα πρέπει επίσης να φτιάξετε κάποιες κλάσεις για τις κινήσεις των πεσσών. Πρέπει να διακρίνεται ποια είναι τα κοινά χαρακτηριστικά και συμπεριφορές των διαφόρων κινήσεων. Αυτές οι κλάσεις θα σας βοηθήσουν και για την λειτουργία των previous και next. 12

Ε. Σχεδίαση, Υλοποίηση και Έλεγχος Φάση 1 η Ανάλυση και Σχεδίαση Σε αυτή τη φάση πρέπει να γίνει ο σχεδιασμός της εφαρμογής βάσει των ιδεών και των αρχών του αντικειμενοστραφούς προγραμματισμού που έχετε διδαχθεί. Αποτέλεσμα αυτής της φάσης είναι ο καθορισμός των αντικείμενων, των χαρακτηριστικών και της συμπεριφοράς τους που απαιτούνται για να αναπαραστήσουν την κατάσταση και τις λειτουργίες του σκακιού όπως έχουν περιγραφεί στις προηγούμενες σελίδες. Προσοχή: τα παραδείγματα που σας έχουν δοθεί στις προηγούμενες ενότητες είναι μόνο ενδεικτικά της λειτουργικότητας του παιχνιδιού και σε καμία περίπτωση δεν είναι πλήρη. Παρέχονται για να σας δώσουν μια πρώτη ιδέα ως προς το σχεδιασμό που απαιτείται. Παραδοτέα σε αυτή τη φάση είναι : Γραπτή αναφορά η οποία θα περιγράφει τα παραπάνω στοιχεία και θα παρουσιάζει το σχέδιο υλοποίησης του project έτσι ώστε να είναι έτοιμο το πέρασμα στην επόμενη φάση της υλοποίησης. Θα πρέπει να συμπεριλαμβάνονται και UML class diagrams. Πηγαίος κώδικας που περιλαμβάνει τις διεπαφές (interfaces) και το περίγραμμα των κλάσεων (class outline) Java του προγραμματός σας, συνοδευόµενες από τα απαραίτητα javadoc σχόλια, τα οποία θα καθοδηγήσουν την υλοποίηση στην επόμενη φάση. Επιγραµµατικά, οι σημαντικότερες εργασίες που πρέπει να γίνουν σε αυτή τη φάση είναι: Αναγνώριση των κλάσεων και διεπαφών για κάθε μικρή και μεγάλη συνιστώσα του παιχνιδιού. Αναγνώριση των ευθυνών κάθε κλάσης και των πιθανών σχέσεών της με άλλες. 13

Εύρεση των χαρακτηριστικών και των μεθόδων κάθε κλάσης. Εύρεση της συμπεριφοράς (behaviour) κάθε κλάσης και διεπαφής του παιχνιδιού, καθώς και της επικοινωνίας μέσω μηνυμάτων (method calls) που χρειάζεται να έχουν μεταξύ τους. Οργάνωση των κλάσεων σε ιεραρχίες με στόχο την μέγιστη δυνατή επαναχρησιμοποίηση του κώδικα σας Για κάθε κλάση που υλοποιεί μια διεπαφή δώστε τις υπογραφές (signatures) για όλες τις μεθόδους και τις εκ των προτέρων εκ των υστέρων και αμετάβλητες συνθήκες (preconditions, postconditions, invariants) που τις διέπουν σε μορφή javadoc σχολίων. Σημειώστε ότι όσο περισσότερη και αναλυτικότερη δουλειά κάνετε στην σχεδίαση τόσο πιο σωστή και εύκολη θα είναι η υλοποίηση. Φάση 2 η Υλοποίηση και Έλεγχος ορθότητας Σε αυτή τη φάση πρέπει να γίνει η κυρίως υλοποίηση της εφαρμογής, βάσει της σχεδίασης που έχει προηγηθεί (φάση 1). Μολονότι δεν επιβάλλεται να χρησιμοποιηθεί αυτούσια η σχεδίαση της 1ης φάσης, καθότι κάποιες σχεδιαστικές επιλογές αποδεικνύονται στην πορεία άκυρες και χρειάζονται αναθεώρηση, εντούτοις η τελική βαθμολογία θα εξαρτηθεί από την συνέπεια της τελικής υλοποίησης ως προς την αρχική σχεδίαση. Σε αυτή τη φάση, παραδοτέα είναι : ο πηγαίος κώδικας που υλοποιεί το σκάκι αναλυτικές οδηγίες για το πώς μεταγλωττίζεται και πώς τρέχει το πρόγραµµά σας (README, Makefile κ.λ.π.). αναφορά, στην οποία θα αναλύεται : o η -τελική- σχεδίαση της εφαρμογής, o ποιες αλλαγές έγιναν σε σχέση µε τη σχεδίαση της 1ης φάσης (και γιατί), o οι αλγόριθμοι που χρησιμοποιηθήκαν, o τα προβλήματα που αντιμετωπίστηκαν, o Τα junit tests που φτιάχτηκαν για τον έλεγχο της ορθότητας των κινήσεων των πεσσών, καθώς και αρχεία εισόδου για τα tests αυτά, o οι σχεδιαστικές ή προγραµµατιστικές αποφάσεις που ελήφθησαν και πώς αυτό αντανακλάται στον τελικό χρήστη (π.χ. ευκολία/δυσκολία χειρισμού), o... γενικά ό,τι άλλο κρίνετε απαραίτητο να αναφερθεί. Βαθμολογία εργασίας Για την βαθμολογία της εργασίας θα συνεκτιμηθούν εάν (και πόσο) η σχεδίαση της εφαρμογής εφαρμόζει τις έννοιες και τεχνικές του αντικειμενοστραφούς προγραµµατισµού που διδαχτήκατε στο μάθημα εάν (και πόσο) υλοποιήθηκαν οι ζητούμενες λειτουργίες της εφαρμογής εάν (και κατά πόσο) υλοποιήθηκαν οι υποχρεωτικές λειτουργίες του παιχνιδιού. Οι προαιρετικές λειτουργίες (σημειωμένες με αστερίσκο στην ενότητα 1) θα πάρουν επιπλέον βαθμούς (bonus). 14

η πληρότητα της τελικής αναφοράς, η οποία θα καταγράφει και θα τεκμηριώνει την σχεδίαση και υλοποίηση της εφαρμογής Υπόδειξη: Για την διευκόλυνση της εργασίας σας συνίσταται η σχεδίαση και υλοποίηση του σκακιού βήμα προς βήμα: μπορείτε να ξεκινήσετε από τον StateHolder υλοποιώντας τις κλάσεις των πεσσών και των κινήσεων τους. Στην συνέχεια θα πρέπει να κάνετε έλεγχο της ορθότητας των δυνατών κινήσεων των πεσσών φτιάχνοντας κατάλληλα junit tests καθώς και αρχεία εισόδου. Στην συνέχεια υλοποιείστε τις κυριότερες λειτουργίες του GameMaster και προχωρήστε στις διεπαφές χρήστη. Τέλος προσθέστε τις επιπλέον λειτουργίες του παιχνιδιού όπως save, load, previous, next κτλ. Για διευκρινήσεις σχετικά µε την παραπάνω εργασία, μπορείτε να στέλνετε ηλεκτρονικά μηνύματα µε απορίες στη λίστα του μαθήματος hy252-list. Θα παρακαλούσαμε τα mails να έχουν ως subject κείμενο που να χαρακτηρίζει τις απορίες σας αντί για «απορία», «απορία στο project» κτλ. Πιστεύουμε ότι κάτι τέτοιο θα μας βοηθήσει όλους. Τα ηλεκτρονικά μηνύματα που αποστέλλονται στην λίστα του μαθήματος τόσο από τους βοηθούς όσο και από τους φοιτητές αποτελούν μέρος της διδασκαλίας και γι αυτό συνιστάται θερμά η ανάγνωση τους. Bonus: 1) Η διεπαφή της κονσόλας 2) Η κίνηση του ροκέ 3) Λειτουργίες save και load Τα παραπάνω θα βαθμολογηθούν με επιπλέον 10 % στον βαθμό της εργασίας και δεν αποτελούν υποχρεωτικό μέρος της. Όλες οι άλλες λειτουργίες που περιγράφονται στις προηγούμενες ενότητες είναι υποχρεωτικές. E. Βοηθητικό υλικό Κανόνες σκακιού: http://el.wikipedia.org/wiki/κανόνες_του_σκακιού JUnit: http://junit.sourceforge.net/ Δημιουργία menu: http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html 15