ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ. Εργαστήριο Λογισµικού (Γλώσσα C++) Ακαδ. Έτος: Εργασία (40%) Το Μπουντρούµι

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

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

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

18.ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 Δραστηριότητα 1

Σενάριο 16: Ο κόσμος του Robby

Scratch 2.0 Προκλήσεις

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

ΠΡΟΣΟΜΟΙΩΣΗ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γʹ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΤΡΙΤΗ 18 ΑΠΡΙΛΙΟΥ 2017 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ (7)

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

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

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

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

Τα Φύλλα Εργασίας αφορά την εκμάθηση της εκτέλεσης της δομής επιλογής μέσα από το περιβάλλον του SCRATCH.

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

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

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

2 ο Εργαστήριο Αλληλεπίδραση και Animation

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

Φτιάξε ένα απλό παιχνίδι

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

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

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

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

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

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

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

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

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

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

Breakdance Computer Game σε Scratch.

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

Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού

Tank Rescue Computer Game σε Scratch

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

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

Slalom Race Computer Game on Scratch

Γ-ΓΥΜΝΑΣΙΟΥ (1) ΣΕΛ 1 / 6

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Απρίλιος 2014

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

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

Γεωμετρία, Αριθμοί και Μέτρηση Μαθαίνω Γεωμετρία και Μετρώ Παίζω με τους αριθμούς Βρίσκω τα πολλαπλάσια

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

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

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

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

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

Μαθήματα Scratch -Δραστηριότητα 1 Παλέτα Κίνηση

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

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

Μάθημα 8 ο Η εντολή ανδιαφορετικά

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

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

Αρχιτεκτονική Υπολογιστών

Σενάριο 13: Προγραμματίζοντας ένα Ρομπότ

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

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

Παλέτα Κίνηση. Καλό είναι πριν ξεκινήσετε το παρακάτω φυλλάδιο να έχετε παρακολουθήσει τα παρακάτω δύο videos: a) Εισαγωγή στο περιβάλλον του Scratch

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

Τ και τιµή του Β θετική µετατρέπεται ισοδύναµα στην εντολή Όσο ως εξής:

για τις διαφορές µεταξύ των δύο επαναληπτικών δοµών «Όσο... Επανέλαβε» και «Αρχή_επανάληψης.. Μέχρις_οτου» 1 η Εργασία

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

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

Πώς να ανοίξω το τερματικό στους υπολογιστές της σχολής

Ένα παιχνίδι του Stefan Feld ΣΧΕΤΙΚΑ ΜΕ ΤΟ ΠΑΙΧΝΙΔΙ ΠΕΡΙΕΧΟΜΕΝΑ

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 2. Σύνταξη μπλοκ εντολών. Δραστηριότητα 1

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

ΠΕΡΙΕΧΟΜΕΝΑ ΕΓΧΕΙΡΙΔΙΟΥ

Τα Βασικά. Τι είναι όλα αυτά που βλέπω;

ΙΔΕΟΚΑΤΑΣΚΕΥΕΣ: ΣΚΕΦΤΟΜΑΙ ΚΑΙ ΓΡΑΦΩ

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

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Πλάνο Παρουσίασης. Στο δεύτερο μέρος θα μελετήσουμε τον σχεδιασμό και κώδικα πίσω από την εφαρμογή.

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

turnin Lab2.hs

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

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Ασκήσεις στα κύματα. α) Να βρεθούν οι εξισώσεις των δύο κυμάτων που δημιουργούνται.

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

3 Αλληλεπίδραση Αντικειμένων

Το τρίτο παιχνίδι ΛΑΒΥΡΙΝΘΟΣ ΜΕ ΕΜΠΟΔΙΑ

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Σειρά Προβλημάτων 5 Λύσεις

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

ιαγώνισµα Α Τάξης Ενιαίου Λυκείου Κινηµατική Υλικού Σηµείου

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

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

Προγραµµατισµός Ι (ΗΥ120)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

Εισαγωγή στη Ρομποτική και τον Προγραμματισμό με τη χρήση του ρομπότ Thymio & του λογισμικού Aseba

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ Εργαστήριο Λογισµικού (Γλώσσα C++) Ακαδ. Έτος: 2005-2006 Εργασία (40%) Το Μπουντρούµι Το πρόγραµµα που καλείστε να υλοποιήσετε είναι ένα απλό παιχνίδι. Στις µέρες πριν το Doom, το Age of Empires και το Final Fantasy, τα παιχνίδια που παίζονταν ήταν εξαιρετικά πιο απλά. Οι βασικές ιδέες βέβαια παρέµεναν ίδιες, όπως ότι οι παίκτες έπρεπε να εξερευνήσουν λαβύριθνους, να βρουν αντικείµενα καθώς και να αποφεύγουν ή να εξουδετερώνουν τους εχθρούς (τέρατα) που κατοικούσαν στον λαβύρινθο. Η κύρια διαφορά ήταν ότι τα γραφικά καθώς και η αλληλεπίδραση ήταν πολύ περιορισµένη. Κατά αυτόν τον τρόπο ένας λαβύρινθος θα αναπαριστούνταν ως ένας πίνακας από χαρακτήρες στην οθόνη (DOS) (οι τοίχοι αναπαρίστανται από τον χαρακτήρα #, οι σκάλες µεταξύ επιπέδων από τον χαρακτήρα < κοκ). Απλές εντολές επέτρεπαν στον παίκτη να κινείται µέσα στο λαβύρινθο (ή µπουντρούµι dungeon). Σε αυτήν την εργασία καλείστε να σχεδιάσετε και να υλοποιήσετε ένα τέτοιο παιχνίδι. Παρακάτω θα δοθεί µία περιγραφή του παιχνιδιού µε τις ελάχιστες προτεινόµενες απαιτήσεις. Προσέξτε ότι ο τελικός σχεδιασµός του παιχνιδιού καθώς και οι προδιαγραφές του θα πρέπει να καθορισθούν από εσάς. Εποµένως υπάρχει µεγάλη ελευθερία όσον αφορά τη σχεδίαση του παιχνιδιού. Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 1

Περιγραφή Προβλήµατος Το παιχνίδι µπορεί να έχει πολλά επίπεδα από µπουντρούµια (απαιτούνται τουλάχιστον δύο). Κάθε επίπεδο είναι ένας λαβύρινθος, ο οποίος καταλαµβάνει όλη την οθόνη (σε ένα MS-DOS παράθυρο). Ένα παράδειγµα µίας τέτοιας οθόνης φαίνεται στην Εικόνα 1. Ο λαβύρινθος θα πρέπει να χωράει στην οθόνη (πιο προχωρηµένες υλοποιήσεις µπορεί να περιλαµβάνουν και κύλιση scrolling). Ο λαβύρινθος αναπαρίσταται από χαρακτήρες, καθώς και όλα τα υπόλοιπα αντικείµενα που βρίσκονται σε αυτόν. Όλη η πληροφορία για το χάρτη του λαβύρινθου, τα αντικείµενα µέσα σε αυτόν και τα τέρατα αποθηκεύονται σε ένα.txt αρχείο. Αυτό σηµαίνει ότι ο λαβύρινθος είναι στατικός (κάποιος θα µπορούσε να παράγει τυχαία έγκυρους χάρτες ώστε να υπάρχει ποικιλία). Ο µηχανισµός ελέγχου του παχνιδιού είναι πολύ περιορισµένος και απλός. Ο χρήστης προτρέπεται να δώσει µία εντολή. Όταν αυτή η εντολή εκτελεστεί τότε κάθε αντικείµενο ή εχθρός έχει τη δυνατότητα να εκτελέσει µία ενέργεια. Εποµένως, το παιχνίδι δεν θα είναι πραγµατικού χρόνου αλλά ο παίκτης θα κάνει µία κίνηση και έπειτα κάθε τέρας ή αντικείµενο θα κάνει κίνηση όταν έρθει η σειρά του. Προσέξτε, ότι υπάρχουν αντικείµενα που δεν εκτελούν κάποια ενέργεια (χρήµατα) αλλά µπορεί να υπάρχουν κινούµενα µπαούλα. Κάθε ένα από αυτά έχει τη δικιά του λογική. Τα τέρατα µέσω µίας συνάρτησης Monster::Run() προσπαθούν να πιάσουν τον παίκτη ή το αντικείµενο µέσω µίας συνάρτησης Obj::Run() προσπαθεί να τον αποφύγει. Ένα τέτοιο παιχνίδι περιέχει πολλά αντικείµενα (κλάσεις) τα τέρατα, τα αντικείµενα που πρέπει ο παίκτης να µαζέψει, ο παίκτης και το µπουντρούµι (λαβύρινθος). Θα πρέπει να υπάρχουν τουλάχιστον τρεις τύποι τεράτων και τρεις τύποι αντικειµένων και εποµένως θα πρέπει να ορίσετε ανάλογα τις κλάσεις. Θα υπάρχουν δύο ξεχωριστές ιεραρχίες κλάσεων καθώς και αρκετές ανεξάρτητες κλάσεις. Θα υπάρχει µία βασική κλάση για την αναπαράσταση πληροφορίας στην οθόνη καθώς και κάποιες εξειδικεύσεις της για την εξαγωγή αποτελεσµάτων στην οθόνη (π.χ. η «ζωή» του παίκτη) καθώς και ένα παράθυρο για είσοδο. Προσέξτε ότι µε τον όρο παράθυρα εννοούµε ένα συγκεκριµένο τµήµα της οθόνης και όχι τα κλασσικά παράθυρα από το λειτουργικό σύστηµα Windows. Θα υπάρχει επίσης µία ιεραρχία που αφορά ότι βρίσκεται µέσα στο µπουντρούµι. Μερικά από αυτά, όπως τα περισσότερα αντικείµενα αν όχι όλα θα είναι παθητικά από την άποψη ότι δεν κάνουν τίποτα µέχρι ο παίκτης να αλληλεπιδράσει µαζί τους. Άλλα, όπως ο παίκτης και τα τέρατα είναι ενεργητικά, µιας και σε κάθε κύκλο του παιχνιδιού εκτελούν µία ενέργεια. Λογικά, θα υπάρχουν διάφορα είδη τεράτων που έχουν ξεχωριστή στρατηγική για την επίτευξη του στόχου της εξάλειψης του παίκτη. Σε αυτό το σηµείο θα πρέπει να χρησιµοποιήσετε πολυµορφισµό. Η κλάση dungeon θα λειτουργεί µε µία συλλογή από τέρατα. Μόλις είναι η σειρά ενός τέρατος να ενεργήσει, τότε ο κώδικας θα έχει έναν βρόγχο όπου επιτρέπει σε κάθε τέρας να κάνει την ενέργειά του (Monster *m; m Run();). Ο δείκτης m είναι πολυµορφικός δείχνει προς διαφορετικά είδη τεράτων κάθε φορά. Κάθε ένα τέτοιο είδος έχει το δικό του τρόπο να εκτελεί την εντολή Run(). Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 2

Εικόνα 1. Ένα δείγµα της οθόνης. Ο τοίχος αναπαρίσταται από #. Η κατεύθυνση καθορίζει προς τα που κινείται ο παίκτης (σύνολο τέσσερις). Το συγκεκριµένο παιχνίδι πρέπει να ακολουθεί κατά το δυνατόν τις παρακάτω οδηγίες: Να διαβάζει τις λεπτοµέρεις του παιχνιδιού από ένα αρχείο.txt. Σε αυτές τις λεπτοµέρειες περιλαµβάνονται ο λαβύρινθος (τοίχος), οι αρχικές θέσεις τεράτων και παίκτη, καθώς και επιπλέον πληροφορία που αφορά τον παίκτη, τα αντικείµενα και τα τέρατα (π.χ. ζωή, µαγεία, µονοπάτια περιπολίας, αξία,...). Αν κάποιος θέλει να κάνει τυχαίο χάρτη (πιο δύσκολο) τότε ενδεχοµένως να µη χρειάζεται να αποθηκεύσει τόσες πληροφορίες. Να παρέχει ένα περιβάλλον διεπαφής παρόµοιο µε αυτό της Εικόνας 1. Σε αυτό θα πρέπει να περιέχονται ο λαβύρινθος και ότι αυτός περιέχει (τοίχους, θέση αντικειµένων,...) καθώς και πληροφορίες που αφορούν την κατάσταση του παίκτη. Το παιχνίδι θα τερµατίζει είτε όταν ο παίκτης µαζέψει όλα τα αντικείµενα, είτε όταν η ζωή του φτάσει στο 0. Εσείς βέβαια µπορείτε να ορίσετε επιπλέον συνθήκες τερµατισµού (εξάλειψη όλων των τεράτων, άφιξη σε ένα συγκεκριµένο σηµείο του χάρτη κοκ). Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 3

Θα υπάρχει ένα κύκλος εκτέλεσης. Ο χρήστης θα µπορεί να δώσει µία εντολή κίνησης ή επίθεσης µε σπαθί ή επίθεσης µε µαγεία και αφού εκτελεστεί τότε κάθε ενεργό αντικείµενο µέσα στο λαβύρινθο έχει τη δυνατότητα να µετακινηθεί µε µία προγραµµατισµένη λογική. Ο παίκτης θα µπορεί να αποκτά αντικείµενα µετακινώντας τον πάνω από τη θέση του συγκεκριµένου αντικειµένου. Η απόκτηση αυτών των αντικειµένων µπορεί ν α αλλάζει κάποια από τα χαρακτηριστικά του παίκτη (π.χ. µαγεία, δύναµη επίθεσης µε σπαθί,...). Όταν ένα αντικείµενο αποκτηθεί τότε παύει να υπάρχει µέσα στον λαβύρινθο. Καθορισµός των κινήσεων του παίκτη ώστε απλές εντολές να αλλάζουν τη διεύθυνσή του ή να του επιτρέπουν να εκτελέσει µαγικά. Να χειρίζεται επιθέσεις τεράτων στον παίκτη. Ένα τέρας που βρίσκεται γειτονικά σε έναν παίκτη θα του προκαλεί ζηµιά ίση µε τη δύναµή του. Αυτή η ζηµιά αφαιρείται από τη ζωή του παίκτη. Επίσης κάποια τέρατα θα µπορούν να χρησιµοποιούν επιθέσεις από απόσταση και έτσι να προκαλούν ζηµιά στον παίκτη ενώ δεν είναι δίπλα (αλλά προφανώς θα πρέπει να υπάρχει οπτική επαφή καθώς και περιορισµοί απόστασης). Αν η ζωή του παίκτη φτάσει το 0 µετά από µία τέτοια επίθεση τότε game over. Να χειρίζεται τις επιθέσεις του παίκτη σε ένα τέρας. Μία κίνηση του παίκτη που θα τον έβαζε στην θέση που καταλαµβάνεται από ένα τέρας θα πρέπει να µεταφραστεί σαν επίθεση σε αυτό το τέρας. Ισχύουν τα ίδια όπως και στην παραπάνω περίπτωση. Όταν η ζωή ενός τέρατος φτάσει στο 0 τότε αυτό εξαλείφεται από το χάρτη. Να χειρίζεται τις κινήσεις των ενεργών αντικειµένων (παίκτης και τέρατα και ενδεχοµένως αντικείµενα). Ο παίκτης καθώς και τα περισσότερα τέρατα περιορίζονται όσον αφορά τις κινήσεις τους, όπως δεν µπορούν να περνούν µέσα από τοίχους ή να βγουν εκτός οθόνης. Περισσότερα από ένα τέρατα µπορεί να καταλαµβάνουν την ίδια θέση ενώ µπορούν να καταλαµβάνουν την ίδια θέση µε ένα αντικείµενο. Όταν σε ένα σηµείο βρίσκονται πολλά τέρατα και αντικείµενα στην οθόνη φαίνεται µόνο ένα. Καθώς ο παίκτης κινείται, η ζωή του και η µαγεία του αυξάνονται. Να υποστηρίζονται µαγικές επιθέσεις από απόσταση. Οι µαγικές αυτές επιθέσεις µπορεί να κάνουν αδύνατο ή να προκαλούν ζηµιά σε ένα τέρας. Όταν ακτελούνται θα πρέπει να έχουν ορισµένη κατεύθυνση. Μία µαγική επίθεση προκαλεί ένα συγκεκριµένο ποσό ζηµιάς σε ένα τέρας που είναι στη γειτονική περιοχή (πάνω, κάτω, δεξιά και αριστερά), το µισό για ένα τέρας που είναι ένα τετράγωνο µακρυά, το ένα τρίτο για κάποιο τέρας που είναι δύο τετράγωνα µακρυά κοκ. Οι µαγικές επιθέσεις δεν µπορούν να διαπεράσουν τοίχους. Η χρησηµοποίηση τέτοιων επιθέσεων καταναλώνει τους βαθµούς µαγείας που έχει ο παίκτης. Αν οι βαθµοί µαγείας δεν φτάνουν για την επίθεση τότε η επίθεση γίνεται κανονικά αλλά ο παίκτης χάνει ζωή ίση µε το διπλάσιο της διαφοράς (π.χ. αν το κόστος της επίθεσης είναι 8 και ο παίκτης έχει 4 βαθµούς µαγείας τότε χάνει 8 βαθµούς ζωής µετά τη µαγική επίθεση). Θα πρέπει τα τέρατα να έχουν καθορισµένες και προγραµµατισµένες συµπεριφορές. Ένα τέρας θα επιτεθεί στον παίκτη αν είναι σε διπλανό τετράγωνο. Αν ο παίκτης δεν Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 4

είναι σε γειτονικό τετράγωνο τότε κάποια τέρατα µπορεί να κοιτούν τριγύρω (λαµβάνουµε υπόψη και τους τοίχους) σε κάποια προκαθορισµένη απόσταση για τον παίκτη. Αν τον «δουν» τότε είτε κινούνται προς το µέρος του είτε επιτίθενται από απόσταση (ενδεχοµένως µε τους ίδιους περιορισµούς όπως και ο παίκτης). Αν δεν µπορούν να εντοπίσουν τον παίκτη τότε το τέρας θα εκτελέσει την κανονική του κίνηση. Αυτό µπορεί να σηµαίνει τυχαία κίνηση, προκαθορισµένη κίνηση (περιπολία) ή σκοπός σε ένα σηµείο (ακίνητο έως ότου δει τον παίκτη). Τα τέρατα δεν αλληλεπιδρούν µε τα αντικείµενα στο λαβύρινθο καθώς επίσης δεν αλληλεπιδρούν µε άλλα τέρατα (εκτός και αν θέλετε εσείς να προγραµµατίσετε µε τέτοιο τρόπο το παιχνίδι). ιάσπαρτες στον χάρτη υπάρχουν παγίδες που µειώνουν τους βαθµούς ζωής του παίκτη, τους βαθµούς µαγείας, τη δύναµη του παίκτη για έναν αριθµό από γύρους ή τον ακινητοποιούν για κάποιους γύρους,... Αποσαφήνιση Θα πρέπει ήδη να έχετε καταλάβει ότι η παραπάνω περιγραφή του προβλήµατος είναι ελλειπής. Έχετε την ελευθερία να προσθέσετε ή να αφαιρέσετε οτιδήποτε από αυτά που ειπώθηκαν στην περιγραφή του προβλήµατος δεδοµένου ότι δεν αλλάζει το πνεύµα του παιχνιδιού και το στόχο της άσκησης. Για παράδειγµα, η µη ύπαρξη τεράτων και αντικειµένων µέσα στο µπουντρούµι δεν είναι αποδεκτή. εν θέλουµε να φτιάξετε έναν απλό λαβύρινθο µέσα στον οποίο να µετακινείται ένας παίκτης. Εποµένως, µπορείτε να κάνετε διάφορες επιλογές ως προς το παιχνίδι που θα φτιάξετε στο τέλος. Αναφέρουµε µερικές: 1. Πολλά είδη τεράτων. Μπορεί να υπάρχουν φαντάσµατα που να περνούν µέσα από τοίχους. Προκαλούν λίγη ζηµιά στον παίκτη ενώ αυτός µπορεί να τα καταστρέψει µόνο µε µαγικές επιθέσεις. Τα φαντάσµατα νιώθουν την παρουσία του παίχτη σε κάποια απόσταση και κατευθύνονται προς τα εκεί σε αυτήν την περίπτωση αλλιώς κάνουν την προκαθορισµένη τους κίνηση (περιπολία σε συγκεκριµένα τετράγωνα, τυχαία κίνηση, στάσιµα). Η τυχαία κίνηση για τέρατα που δεν περνούν µέσα από τοίχους µπορεί να γίνει ως εξής: το τέρας επιλέγει τυχαία µία από τις τέσσερις κατευθύνσεις και προχωράει συνεχώς προς τα εκεί εκτός και αν δει τον παίκτη. Όταν συναντήσει τοίχο τότε επιλέγει τυχαία µία από τίς υπόλοιπες κατευθύνσεις (που δεν είναι σε τοίχο πάλι) και συνεχίζει προς τα εκεί. 2. Ο παίκτης όσο και τα τέρατα να έχουν πολλά χαρακτηριστικά. Για παράδειγµα, πόσα τετράγωνα µπορούν να µετακινηθούν σε ένα γύρο, πόσο δυνατά είναι, αν µπορούν να επιτεθούν από απόσταση, αν έχουν βαθµούς άµυνας, αν κυνηγούν τον παίκτη µέχρι µία συγκεκριµένη απόσταση από το προκαθορισµένο µονοπάτι περιπολίας ή από τη σκοπιά τους όταν τον δουν, αν έχουν πολλές µαγικές επιθέσεις κοκ. Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 5

3. Να υπάρχουν πόρτες που ανοίγουν ανά τακτά χρονικά διαστήµατα (κάθε 5 γύρους για παράδειγµα) και να επιτρέπουν στον παίκτη να κινείται πιο εύκολα µέσα στο λαβύρινθο (ή πιο δύσκολα). 4. Να µετακινείσαι µεταξύ διάφορων επιπέδων µέσω σκαλοπατιών. 5. Να παίζουν δύο παίκτες (ίσως και αντίπαλοι). 6. Να παίζεις ενάντια στο χρόνο. 7. Τα αντικείµενα µπορεί να είναι κινούµενα και να προσπαθούν να αποφύγουν τον παίκτη. Γενικά, οι δυνατότητες όσον αφορά τον καθορισµό του παιχνιδιού περιορίζεται µόνο από τη δικιά σας φαντασία (καθώς και προγραµµατιστικό κόπο). Ζητούµενα Επιτρέπονται οµάδες 2 ή 3 το πολύ ατόµων. Τα παραδοτέα της εργασίας θα είναι τα ακόλουθα: 1. Ηλεκτρονικά σε CDROM ή σε δισκέττα a. Ένα εκτελέσιµο αρχείο (.exe) που θα τρέχει το πρόγραµµα b. Ο πηγαίος κώδικας του προγράµµατος κατάλληλα τεκµηριωµένος (µε σχόλια, τα οποία θα αποσαφηνίζουν τον κώδικα) c. Η αναφορά της εργασίας (σε.doc ή pdf µορφή) η οποία θα περιέχει τεκµηρίωση της εργασίας, δηλ. i. Τον ακριβή καθορισµό του παιχνιδιού. Μία περιγραφή των χαρακτηριστικών του παιχνιδιού. (για παράδειγµα ότι περιέχει 5 είδη τεράτων µε κάποια συγκεκριµένα χαρακτηριστικά κοκ.) ii. Τη σχεδίαση του προγράµµατος. Σε αυτό το σηµείο θα αναφερθείτε εκτενώς στις κλάσεις που έχετε ορίσει καθώς και σε όλα τα εργαλεία-έννοιες που χρησιµοποιήσατε στο πρόγραµµα (ιεραρχία κλάσεων, κληρονοµικότητα, overloading, πολυµορφισµός κοκ). iii. οδηγίες χρήσης του προγράµµατος. iv. Screenshots από την εκτέλεση του προγράµµατος και επεξήγησή τους. 2. Επίσης, θα παραδίδονται εκτυπωµένα ο παραπάνω πηγαίος κώδικας και η αναφορά της εργασίας. Η παράδοση θα γίνεται στο χρονικό διάστηµα 11-12 την Πέµπτη 13 Απριλίου 2006 στο γραφείο του κ. Χριστοδούλου (Β Κτίριο, 2ος όροφος, εργαστήριο κ. Παπαθεοδώρου). Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 6

Για τον τελικό βαθµό ισχύουν τα ακόλουθα: 1) Η βαθµολογία του project έχει βάρος 40% και του γραπτού 60%. 2) Για να περάσει το µάθηµα ο φοιτητής θα πρέπει να έχει γράψει τουλάχιστον 4. 3) Ο βαθµός της εργασίας µπορεί να κρατηθεί µέχρι αυτόν τον Σεπτέµβριο. Αν ο φοιτητής δεν γράψει τουλάχιστον 4 και τον Σεπτέµβριο, τότε του χρόνου θα πρέπει να ξαναπαραδόσει project. Κατά τη διάρκεια της διόρθωσης των project οι διδάσκοντες µπορεί, αν αυτό κριθεί απαραίτητο, να ζητήσουν από κάποιες οµάδες προφορική εξέταση. ιδάσκοντες ρ. Σιούτας Σπύρος ρ. Τσίχλας Κώστας ρ. Χριστοδούλου Σωτήρης Τµήµα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήµιο Πάτρας 7