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



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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

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

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

Οδηγίες Εργασίας 1 Facility-Game

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

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

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Δ ΕΣΠΕΡΙΝΩΝ

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

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

Να το ξαναγράψετε χρησιμοποιώντας αντί για την εντολή Για Τέλος_επανάληψης: α. την εντολή Όσο Τέλος_επανάληψης

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

Περιεχόμενα. Πέτρα. Χρυσός. Βιβλίο. Τροφή. Πόντοι Νίκης. Ρίξιμο ξανά. Ανάλυση ενός πλακιδίου. Ονομασία Κόστος ( ή

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

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

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

Σχετικά με το Παιχνίδι. Περιεχόμενα. Ένα παιχνίδι στρατηγικών κατασκευών για 2 παίκτες ηλικίας 8 και άνω, από τον Arve D. Fuhler

καθώς και το παρακάτω τμήμα αλγορίθμου γραμμένο σε «ΓΛΩΣΣΑ»:

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

Jan Meyberg Εισαγωγή

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΗΜΕΡΗΣΙΩΝ

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

Το παιχνίδι όπου έχει σημασία να είστε κοντά

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

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

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Ανάπτυξη Εφαρμογών. ΑΝ Β[i] > 0 ΚΑΙ Β[i] > Α[i] ΤΟΤΕ ΜΑΧ Β[i] ΑΛΛΙΩΣ_ΑΝ Β[i] > 0 ΚΑΙ Β[i] < = Α[i] ΤΟΤΕ

20 Αρχιτέκτονες. 1 Πολεοδόμος. 65 Κάτοικοι (μπλε Πιόνια)

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

App Inventor 3ο Μάθημα (Ζάρια - επέκταση)

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

ΔΙΑΦΟΡΑ ΘΕΜΑΤΑ. Ως «γειτονικά» ορίζονται τα κελιά που συγγενεύουν οριζόντια, κάθετα και διαγώνια. Για παράδειγμα γειτονικά του Α[3,3] είναι τα:

Οδηγός Γρήγορης Παραμετροποίησης Auto Moto Cube

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

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

6. Αφού δημιουργήσετε ένα πίνακα 50 θέσεων με ονόματα μαθητών να τον ταξινομήσετε αλφαβητικά με την μέθοδο της φυσαλίδας

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ 10 ζάρια με 6 σύμβολα το κάθε ένα. 1 διπλής όψεως κεντρικό ταμπλό με 3 ή 4 φορτηγά. 1 μολύβι

Επαναληπτική δοκιμασία στην Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τεχνολογικής Κατεύθυνσης Μάιος 2013

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

Μελετήστε την θεωρία που αφορά Επαναληπτικές Μεθόδους Επίλυσης Γραμμικών Συστημάτων.

8. Οι κάρτες Πολιτισμού ανακατεύονται και τοποθετούνται

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

Γνωρίστε το Excel 2007

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015

32 κάρτες-πόλης 9 κάρτες-χαρακτήρων 5 κάρτες-αστυνομίας

Coop-in Εγχειρίδιο χρήστη

Κάρτες Κτιρίων και τα αντίστοιχα Ξύλινα Κομμάτια

ΘΕΜΑ Α Α1. Τι κάνουν οι παρακάτω εικονιζόμενες εντολές; Επιλέξτε το σωστό (μον.6)

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

ΟΔΗΓΙΕΣ ΚΕΙΜΕΝΟΓΡΑΦΟΥ 2007

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

ΕΡΓΑΣΙΑ 2 - MOODLE ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ακ. Έτος ΔΙΔΑΣΚΩΝ: Π. Εφραιμίδης. Υπεύθυνος εργαστηρίου: Α. Κουτσιαμάνης

Πίστας Αγώνα Αρχικών Στοιχημάτων Βοηθήματος Παικτών Πρώτου Παίκτη Τούρμπο Πρώτο στοίχημα: Κατασκευή της πίστας:

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Περιεχόμενα. Σκοπός του παιχνιδιού. Ένα παιχνίδι του Dirk Henn για 2-6 παίκτες

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Εισαγωγή στην Στατιστική (ΔΕ200Α-210Α)

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

ΟΔΗΓΙΕΣ. Λίγα λόγια παίκτες Διάρκεια 30 Για ηλικίες 10+

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

Διαδρομών Μέρμηγκα Μερμηγκιών Τζίτζικα Τζίτζικα Επιλογής Επιλογής Φθινόπωρο Φθινόπωρο Προμηθειών Χειμώνα Δύναμης Χειμώνα Φθινόπωρο Χειμώ- νας

Α2. α. Να αναφέρετε ένα παράδειγμα τρισδιάστατου πίνακα. (μονάδες 3)

ΕΓΧΕΙΡΙΔΙΟ ΚΑΝΟΝΩΝ ΕΝΑ ΠΑΙΧΝΙΔΙ ΑΝΤΑΓΩΝΙΣΜΟΥ ΓΙΑ 2 ΩΣ 4 ΠΑΙΚΤΕΣ

Ένα έξυπνο παιχνίδι τοποθέτησης πλακιδίων για 2-5 παίκτες, 8 ετών και άνω από τον Klaus-Jurgen Wrede

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Transcript:

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών 5 Εξάμηνο ΤΗΜΜΥ Α.Π.Θ 2015-2016 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ DS Prximity Το παιχνίδι Το Prximity είναι ένα παιχνίδι στρατηγικής, εναλλασσόμενης σειράς (turned-based strategy game). Οι δύο παίκτες (που απεικονίζονται με μπλε και κόκκινο χρώμα), τοποθετούν εναλλάξ πλακίδια σε ένα εξάγωνο ταμπλό 12x10 θέσεων. Κάθε πλακίδιο μπορεί να έχει μια ακέραια τιμή στο πεδίο [1,20], η οποία είναι είτε τυχαία, είτε προκαθορισμένη από τον παίκτη που παίζει. Κάθε φορά που ένας παίκτης τοποθετεί ένα πλακίδιο στο ταμπλό συμβαίνουν τα εξής: Όσα πλακίδια εφάπτονται στο πλακίδιο που μόλις τοποθετήθηκε και έχουν το ίδιο χρώμα (ανήκουν στο παίκτη που παίζει) αυξάνουν το σκορ τους κατά ένα. Όσα πλακίδια εφάπτονται στο πλακίδιο που μόλις τοποθετήθηκε και ανήκουν στον αντίπαλο παίκτη αλλάζουν χρώμα, αν το σκορ τους είναι μικρότερο από το νέο πλακίδιο. Το παιχνίδι τελειώνει μόλις συμπληρωθούν όλες οι θέσεις του ταμπλό. Νικητής ανακηρύσσεται ο παίκτης με το μεγαλύτερο σκορ, το οποίο υπολογίζεται ως το άθροισμα του επιμέρους σκορ των πλακιδίων. Σε περίπτωση ισοπαλίας, νικητής είναι ο παίκτης με τον μεγαλύτερο αριθμό πλακιδίων. Αν οι παίκτες ισοβαθμήσουν και σε αυτό το κριτήριο, τότε το παιχνίδι λήγει ισόπαλο. Για όσους ενδιαφέρονται, το παιχνίδι είναι διαθέσιμο σε μορφή web εδώ. Εικόνα 1: Το περιβάλλον του παιχνιδιού DS-Prximity για το μάθημα των Δομών Δεδομένων 2015-2016

Εξάγωνο Πλέγμα Το παιχνίδι μας παίζεται σε ένα ταμπλό που αποτελείται από 12x10 εξάγωνα κελιά. Η αρίθμηση των κελιών αρχίζει από το κελί πάνω αριστερά, όπως φαίνεται στην Εικόνα 2. Η συντεταγμένες των κελιών δίνονται στην μορφή [x,y]. Εικόνα 2: Συντεταγμένες του εξάγωνου πλαισίου του παιχνιδιού Γειτονικά Κελιά Για κάθε κελί, πλην αυτών που βρίσκονται στην άκρη του ταμπλό, ορίζονται 6 κελιά ως γειτονικά. Έτσι λοιπόν, ακολουθώντας ωρολογιακή φόρα, ορίζεται το ανατολικό γειτονικό κελί (East), το νοτιοανατολικό γειτονικό κελί (SuthEast), το νοτιοδυτικό γειτονικό κελί (SuthWest), το δυτικό γειτονικό κελί (West), τον το βορειοδυτικό γειτονικό κελί (NrthWest) και, τέλος, το βορειοανατολικό γειτονικό κελί (NrthEast) (Εικόνα 3). Δομές Δεδομένων 2 2015

Εικόνα 3: Ονομασία των γειτόνων του κελιού Α Αναπαράσταση εξάγωνου πλέγματος σε δισδιάστατο πίνακα Έστω η περίπτωση του εξαγωνικού πλέγματος της Εικόνα 4. Υπάρχουν πολλοί τρόποι για να αναπαραστήσουμε το συγκεκριμένο πλέγμα σε έναν δισδιάστατο πίνακα. Εικόνα 4: Εξάγωνο πλέγμα σε πίνακα Ο πιο απλός τρόπος είναι να χρησιμοποιήσουμε κενές θέσεις στον πίνακα, όπως φαίνεται Πίνακα 1. 21 24 13 14 15 25 28 Πίνακας 1: Εξάγωνο πλέγμα σε πίνακα με χρήση κενών Εύκολα γίνεται αντιληπτό πως αυτός ο τρόπος είναι αναποτελεσματικός, καθώς απαιτεί περίπου διπλάσιο χώρο σε σχέση με το μέγεθος του πλέγματος. Για να εξοικονομήσουμε χώρο μπορούμε να εξαλείψουμε τα κενά, όπως φαίνεται στον Πίνακα 2. Σε αυτή την περίπτωση δεν χρησιμοποιούμε περισσότερο χώρο από όσο πραγματικά χρειαζόμαστε, αλλά δεν μπορούμε να διαχωρίσουμε του γείτονες ενός κελιού με εύκολο τρόπο. Για να μπορέσουμε να εντοπίσουμε με σωστό τρόπο τους γείτονες του κελιού θα πρέπει να γνωρίζουμε αν το στοιχείο που αναφερόμαστε βρίσκεται σε μονή ή σε ζυγή σειρά στον πίνακα που έχουμε ορίσει. Παραδείγματος χάριν, έστω ότι το στοιχείο 14 της Εικόνας 4 βρίσκεται σε μόνη σειρά. Σε αυτή την περίπτωση οι γείτονές του θα είναι αποθηκεμένοι στον πίνακα ως εξής:... 21 (NW) 24 (NE) 13 (W) 14 15 (E)... 25 (SW) 28 (SE) Πίνακας 2: Εξάγωνο πλέγμα σε πίνακα χωρίς κενά, γείτονες κελιού σε μονή σειρά. Δομές Δεδομένων 3 2015

Αντίστοιχα, αν το στοιχείο 14 είναι σε ζυγή σειρά, τότε οι γείτονές του θα είναι αποθηκεμένοι στον πίνακα ως εξής: 21 (NW) 24 (NE) 13 (W) 14 15 (E) 25 (SW) 28 (SE) Πίνακας 2: Εξάγωνο πλέγμα σε πίνακα χωρίς κενά, γείτονες κελιού σε μονή σειρά. Για περισσότερη ανάλυση των εξάγωνων πλεγμάτων μπορείτε να δείτε εδώ. Εργασία Α Randm Mvement (0,75 βαθμοί) Στην παρούσα εργασία υπάρχουν δύο ζητούμενα. 1. Να υλοποιήσετε μια συνάρτηση που θα επιστρέφει τις συντεταγμένες των γειτονικών πλακιδίων δεδομένου ενός πλακιδίου με συντεταγμένες [x,y]. 2. Να υλοποιήσετε όλες τις αναγκαίες συναρτήσεις ώστε να δημιουργηθεί ένας παίκτης που θα μπορεί να επιλέξει τυχαία μια θέση [x,y] πάνω στο ταμπλό. Στην συνέχεια, θα πρέπει να ελέγξει αν αυτή η θέση είναι άδεια, ώστε να μπορεί να τοποθετήσει εκεί το πλακίδιο στην επόμενη κίνησή του. Σε αντίθετη περίπτωση θα πρέπει να διαλέξει μια άλλη τυχαία θέση. Στη συνέχεια παρουσιάζονται οι κύριες κλάσεις που αποτελούν τον κορμό του παιχνιδιού με τις συναρτήσεις τους (οι κλάσεις Tile και Bard), καθώς και η κλάση RandmPlayer που καλείστε να συμπληρώσετε. Κλάση Tile (package: gr.auth.dsprject.prximity.bard) Η κλάση αυτή δημιουργεί τα πλακίδια του ταμπλό του παιχνιδιού. Έχει τις εξής μεταβλητές: int id: είναι μια μεταβλητή που δείχνει το μοναδικό κωδικό ενός πλακιδίου. int x: η μεταβλητή αυτή δείχνει την θέση του πλακιδίου στον άξονα x x. int y: η μεταβλητή αυτή δείχνει την θέση του πλακιδίου στον άξονα y y. int clr: η μεταβλητή αυτή δείχνει το χρώμα του που πλακιδίου. Συγκεκριμένα έχουμε τα εξής χρώματα: 0 Gray (Υποδηλώνει κενή θέση) 1 Blue (Υποδηλώνει θέση όπου έχει τοποθετήσει πλακίδιο ο μπλε παίκτης) 2 Red (Υποδηλώνει θέση όπου έχει τοποθετήσει πλακίδιο ο κόκκινος παίκτης) int PlayerId: η μεταβλητή αυτή δείχνει αν στην θέση του συγκεκριμένου πλακιδίου έχει παίξει κάποιος από τους 2 παίκτες και αν ναι, ορίζει τον παίκτη στον οποίο ανήκει το συγκεκριμένο πλακίδιο. Συγκεκριμένα έχουμε: 0 Κενό πλακίδιο 1 Πλακίδιο του παίκτη Α 2 Πλακίδιο του παίκτη Β Δομές Δεδομένων 4 2015

ΠΡΟΣΟΧΗ!!! Αν θέλετε να διαβάσετε τις τιμές των μεταβλητών ενός αντικειμένου τύπου Tile θα πρέπει να χρησιμοποιήσετε τους αντίστοιχους getters. Κλάση Bard (package:gr.auth.dsprject.prximity.bard) Η κλάση αυτή δημιουργεί και αποτυπώνει στην οθόνη το αντικείμενο τύπου Bard. Οι συναρτήσεις που σας ενδιαφέρουν και θα σας βοηθήσουν στην υλοποίηση των εργασιών σας είναι οι εξής: Tile gettile(int x, int y): Επιστρέφει το αντικείμενο τύπου Tile που βρίσκεται στην θέση [x,y]. Tile[] getneighbrs (int x, int y): Η συνάρτηση αυτή παίρνει σαν όρισμα 2 ακεραίους (x,y) που αναπαριστούν τις συντεταγμένες ενός πλακιδίου. Με βάση τις συντεταγμένες αυτές επιστρέφει τα γειτονικά Tiles στην μορφή ενός πίνακα μεγέθους 6x1, όπου σε κάθε θέση θα περιέχει το αντικείμενο τύπου Tile που αναπαριστά τον αντίστοιχο γείτονα. Η συγκεκριμένη συνάρτηση θα λειτουργεί σωστά μόνο αφού υλοποιήσετε σωστά την συνάρτηση getneighbrscrdinates της κλασης RandmPlayer (βλέπετε παρακάτω). blean isinsidebard(int x, int y): Επιστρέφει true αν η θέση [x,y] είναι εντός των ορίων του ταμπλό. Σε διαφορετική περίπτωση επιστρέφει false. Κλάση RandmPlayer (package:gr.auth.dsprject.prximity.defplayers) Η κλάση αυτή (την οποία καλείστε να συμπληρώσετε) είναι υπεύθυνη για την δημιουργία και την ομαλή λειτουργία των παικτών της πλατφόρμας. Θα πρέπει να έχει τρεις μεταβλητές: 1. int id: είναι μια μεταβλητή που παίρνει την τιμή 1 ή 2 ανάλογα με το αν ο παίκτης είναι ο μπλε ή ο κόκκινος. Ο παίκτης σας αλλάζει από παιχνίδι σε παιχνίδι. Για τον λόγο αυτό, αν θέλετε να ελέγξετε αν ένα πλακίδιο είναι δικό σας θα πρέπει να συγκρίνεται την τιμή id του παίκτης σας με την τιμή της μεταβλητής playerid του πλακιδίου. 2. String name: η μεταβλητή αυτή δίνει το όνομα που επιθυμούμε στον παίκτη. Δομές Δεδομένων 5 2015

3. int scre: η μεταβλητή αυτή αποθηκεύει το άθροισμα των τιμών των πλακιδίων του παίκτη. 4. int numoftiles: η μεταβλητή αυτή αποθηκεύει τον αριθμό πλακιδίων του παίκτη που βρίσκονται στο ταμπλό κάθε δεδομένη στιγμή. Οι συναρτήσεις που πρέπει να υλοποιήσετε είναι οι εξής: a. Cnstructr της κλάσης: ο cnstructr θα πρέπει να παίρνει ένα όρισμα (Integer pid), το οποίο αντιστοιχεί στην μεταβλητή id του παίκτη. Προσοχή!!!! Το όρισμα μέσα στην παρένθεση είναι τύπου Integer και όχι int, σε αυτή τη συγκεκριμένη συνάρτηση μόνο. b. Cnstructr της κλάσης (2): αποτελεί τον δεύτερο cnstructr της κλάσης και παίρνει 4 ορίσματα τα οποία θα αρχικοποιούν όλες τις μεταβλητές της κλάσης. Θα πρέπει να ορίσετε σωστά τον τύπο των ορισμάτων και να τα αντιστοιχίσετε στις κατάλληλες μεταβλητές της κλάσης. Προσοχή!!!! Τα ορίσματα μεταβλητές που θα έχει ο cnstructr θα πρέπει να είναι ορισμένα με την σειρά που δίνονται παραπάνω. Επίσης και εδώ το όρισμα μέσα στη παρένθεση θα πρέπει να είναι τύπου Integer και όχι int. c. Όλες οι συναρτήσεις get και set για τις μεταβλητές της κλάσης. d. Συνάρτηση int[] getnextmve (Bard bard):η συγκεκριμένη συνάρτηση παίρνει σαν όρισμα την μεταβλητή bard η οποία είναι αντικείμενο της κλάσης Bard και επιστρέφει έναν μονοδιάστατο πίνακα ακεραίων, μεγέθους δύο (2) ο οποίος θα περιέχει την θέση [x,y] στην οποία θα τοποθετηθεί το επόμενο πλακίδιο. Η θέση (x,y) επιλέγετε με τυχαίο τρόπο και να είναι εντός των ορίων του ταμπλό. Θα πρέπει επίσης να ελέγξετε αν η θέση [x,y] είναι ήδη κατειλημμένη και αν ναι, θα πρέπει να επιλέξετε μια νέα θέση [x1,y1], με επίσης τυχαίο τρόπο. e. static int[][] getneighbrscrdinates(bard bard,int x, int y): Η συνάρτηση αυτή παίρνει σαν όρισμα την μεταβλητή bard και 2 ακεραίους (x,y) που αναπαριστούν τις συντεταγμένες ενός πλακιδίου πάνω στο ταμπλό. Με βάση τις συντεταγμένες αυτές θα πρέπει να υπολογίζει τις συντεταγμένες των γειτονικών πλακιδίων (σύμφωνα με την ανάλυση που παρουσιάστηκε στην αντίστοιχη παράγραφο) και να τις επιστρέφει στην μορφή ενός πίνακα μεγέθους 6x2. Η πρώτη γραμμή του πίνακα που θα επιστρέφεται θα περιέχει τις συντεταγμένες [x0.y0] του ανατολικού γείτονα, η δεύτερη γραμμή τις συντεταγμένες του νότιο-ανατολικού γείτονα και ούτω καθ εξής, μέχρι την 6η σειρά που θα περιέχει τις συντεταγμένες του βόρειοανατολικού γείτονα. Σε πρίπτωση που κάποιο κελί δεν έχει όλους τους γείτονες γιατί είναι στην άκρη του ταμπλό, ορίστε ως συντεταγμένες τις [-1,-1]. Η συγκεκριμένη συνάρτηση χρησιμοποιείται για να λειτουργεί σωστά η συνάρτηση getneighbrs της κλάσης Bard (βλέπε παραπάνω). Δομές Δεδομένων 6 2015

Σημείωση: Οι συναρτήσεις της κλάσης RandmPlayer που θα δημιουργήσετε, θα πρέπει να είναι ορατές από τον υπόλοιπο κώδικα του παιχνιδιού ο οποίος βρίσκετε σε διαφορετικό πακέτο. Θα πρέπει λοιπόν να χρησιμοποιήσετε τους κατάλληλους τροποποιητές. Επίσης, θα πρέπει τα ονόματα των συναρτήσεων και των μεταβλητών να είναι ακριβώς ίδια με τα ονόματα που αναφέρονται στην περιγραφή τους. Βοηθητικές Κλάσεις - Συναρτήσεις Για την υλοποίηση των παραπάνω συναρτήσεων χρειάζεται να χρησιμοποιήσετε κάποιες μεταβλητές / συναρτήσεις που υπάρχουν ήδη υλοποιημένες στην πλατφόρμα. Στατικές Μεταβλητές της κλάσης PrximityUtilities Αριθμός Γραμμών και Στηλών: NUMBER_OF_ROWS = 10; NUMBER_OF_COLUMNS = 12; Οι συγκεκριμένες μεταβλητές μπορούν να χρησιμοποιηθούν για την σάρωση του ταμπλό. Αν δεν χρησιμοποιήσετε τις μεταβλητές αλλά γράψετε στον κώδικα απευθείας τον αριθμό 12 ή 10, ίσως αντιμετωπίσετε πρόβλημα στο μέλλον π.χ. αν αποφασίσουμε να μεγαλώσουμε το ταμπλό, θα πρέπει να κάνετε αλλαγές στον κώδικά σας. Για να καλέσετε αυτές τις μεταβλητές αρκεί να γράψετε στον κώδικά σας PrximityUtilities.NUMBER_OF_ROWS ή PrximityUtilities.NUMBER_OF_COLUMNS αντίστοιχα. duble Math.randm(): Η συνάρτηση αυτή σας επιστρέφει έναν τυχαίο αριθμό τύπου duble στο διάστημα [0,1). Θα σας χρειαστεί ώστε να επιλέξετε την επόμενή σας κίνηση με τυχαίο τρόπο. Εγκατάσταση Για να εγκαταστήσετε το prject στον Eclipse, αρκεί να κάνετε unzip το αρχείο Prximity Part A.zip μέσα στον φάκελο wrkspace που έχετε ορίσει, και στη συνέχεια από το περιβάλλον του Eclipse να κάνετε: File Imprt General Existing Prjects int Wrkspace Για να τρέξετε το prject κάνετε δεξί κλικ πάνω στο prject και στη συνέχεια επιλέγετε: Run As Java Applicatin Δομές Δεδομένων 7 2015

Οδηγίες Τα προγράμματα θα πρέπει να υλοποιηθούν σε Java, με πλήρη τεκμηρίωση του κώδικα. Το πρόγραμμά σας πρέπει να περιέχει επικεφαλίδα σε μορφή σχολίων με τα στοιχεία σας (ονοματεπώνυμα, ΑΕΜ, τηλέφωνα και ηλεκτρονικές διευθύνσεις). Επίσης, πριν από κάθε κλάση ή μέθοδο θα υπάρχει επικεφαλίδα σε μορφή σχολίων με σύντομη περιγραφή της λειτουργικότητας του κώδικα. Στην περίπτωση των μεθόδων, πρέπει να περιγράφονται και οι μεταβλητές τους. Είναι δική σας ευθύνη η απόδειξη καλής λειτουργίας του προγράμματος. Παραδοτέα για κάθε μέρος της εργασίας 1. Ηλεκτρονική αναφορά που θα περιέχει: εξώφυλλο, περιγραφή του προβλήματος, του αλγορίθμου και των διαδικασιών που υλοποιήσατε και τυχόν ανάλυσή τους. Σε καμία περίπτωση να μην αντιγράφεται ολόκληρος ο κώδικας μέσα στην αναφορά (εννοείται ότι εξαιρούνται τμήματα κώδικα τα οποία έχουν ως στόχο τη διευκρίνιση του αλγορίθμου). Προσοχή: Ορθογραφικά και συντακτικά λάθη πληρώνονται. 2. Ένα αρχείο σε μορφή.zip με όνομα ΑΕΜ1_ΑΕΜ2_PartA.zip, το οποίο θα περιέχει όλο το prject σας στον eclipse καθώς και το αρχείο της γραπτής αναφοράς σε pdf (αυστηρά). Το αρχείο.zip θα γίνεται uplad στο site του μαθήματος στην ενότητα των ομαδικών εργασιών και μόνο. Τα ονόματα των αρχείων πρέπει να είναι με λατινικούς χαρακτήρες. Προθεσμία υποβολής Κώδικας και αναφορά Δευτέρα 30 Νοεμβρίου, 23:59 (ηλεκτρονικά) Δε θα υπάρξει καμία παρέκκλιση από την παραπάνω προθεσμία. Δομές Δεδομένων 8 2015