Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413 Διδάσκων: Παύλος Εφραιμίδης 2011-2012
Περιεχόμενα: Άνοιγμα του eclipse..σελ. 3 Όνομα workspace..σελ. 3 Import ενός project...... σελ.5 Κατέβασμα του FacilityGame.. σελ.5 Import project...σελ. 9 Πρόβλημα κατά το Import του αρχείου..σελ. 13 Δημιουργία νεου.σελ. 16 Δημιουργία package.σελ. 20 Δημιουργία κλάσης..σελ. 23 Ένα απλό πρόγραμμα.σελ. 26 Εμφάνιση σφαλμάτων σελ. 29 Debug.σελ. 31 Perspective.σελ. 31 Debug του προγράμματος..σελ. 33 Διαδικασία του Debug σελ. 37 Αλλαγή στον τρόπο εμφάνισης των παραθύρων σελ. 43 Export.σελ. 46 Facility Game σελ. 49 Σημειώσεις: Πως τρέχουμε το παιχνίδι έχοντας τους δυο αντιπάλους στον ίδιο υπολογιστή..σελ. 49 Πως τρέχουμε το παιχνίδι έχοντας τους αντιπάλους σε διαφορετικό υπολογιστή.σελ. 53 Κατά την εξέταση του εργαστηρίου θα εξεταστεί η ικανότητα χειρισμού του προγράμματος eclipse καθώς και η δυνατότητα προσθήκης λίγων σειρών κώδικα στο πρόγραμμα Facility Game. Στο παρακάτω αρχείο θα βρείτε ό,τι μπορεί να ζητηθεί στο εργαστήριο και πως υλοποιείται. Δινεται επίσης και ένα απλό παράδειγμα προσθήκης κώδικα. Τέλος έχει κάποιες υποδείξεις για το πως τρέχει το Facility Game. 2
Άνοιγμα του eclipse Αρχικά θα ζητηθεί να ανοίξουμε το eclipse, το οποίο στο εργαστήριο βρίσκεται στο Έναρξη-> Όλα τα προγράμματα->προγράμματα προγραμματισμού->java->eclipse. Ανοίγοντας το eclipse θα ζητηθεί να αλλάξουμε το όνομα του workspace. Όνομα workspace Όταν ανοίγει το eclipse εμφανίζεται η παρακάτω εικόνα: Αντικάθηστούμε το workspace με ότι όνομα χρειαστεί έστω για παράδειγμα sd5000 όπως φαίνεται παρακάτω και έπειτα πατάμε οκ. 3
Όταν ανοίγει το eclipse εμφανίζεται μια καρτέλα welcome που περιέχει κάποια εισαγωγικά, παραδείγματα tutorials κτλ,πατάμε x στην καρτέλα αύτη και ανοίγει το περιβάλλον εργασίας του eclipse όπως φαίνεται παρακάτω. 4
Import ενός project: Μετά θα ζητηθεί να κάνουμε Import το πρόγραμμα Facility Games για να το επεξεργαστούμε. Αρχικά πρέπει να το κατεβάσουμε από την ιστοσελίδα του μαθήματος ως εξής: Κατέβασμα του FacilityGame Είτε απευθείας από την ιστοσελίδα του μαθήματος: http://pericles.ee.duth.gr/courses/ds 5
Είτε από τους συνδέσμους στο https://eclass.duth.gr/eclass/ όπως φαίνεται παρακάτω: 6
7
Και οι δύο τρόποι θα μας οδηγήσουν στην παρακάτω σελίδα όπου επιλέγουμε Εργαστήριο -> Facility Game v0.26: Αποθηκεύουμε το αρχείο, συνήθως αποθηκεύεται αυτόματα στην επιφάνεια εργασίας στο εργαστήριο, καλό είναι να ελέγχουμε που το αποθηκεύσαμε ώστε να μπορέσουμε να το βρούμε γρήγορα κατά την διαδικασία του Import. 8
Import project: Πως κάνουμε Import ένα αρχείο στο eclipse: Πηγαίνουμε File->Import 9
Μετά διπλό κλικ στο General και μετά Existing Projects into Workspace.Έπειτα διπλό κλικ στο Existing Projects into Workspace ή το επιλέγω και πατάω next. 10
Ανοίγει το παρακάτω παράθυρο όπου επιλέγω το select archive file και browse, όπου βρίσκω το αρχείο Facility Game εκεί όπου το έχω αποθηκεύσει. 11
Το βρίσκω και αφού το επιλέξω πρέπει να μου εμφανιστεί η παρακάτω εικόνα(στο projects επιλεγμένο το όνομα του αρχείου)όπου πατώντας Finish να έχω εισάγει σωστά το αρχείο μου στο eclipse. 12
Πρόβλημα κατά το Import του αρχείου Αν δεν εμφανιστεί η παραπάνω εικόνα ενώ έχω κάνει σωστά όλη την παραπάνω διαδικασία, σημαίνει πως υπάρχει δεύτερο project ανοιχτό στο eclipse με το ίδιο όνομα. Αν έχω αυτό το πρόβλημα, είτε κλείνω το παλιό project είτε αν το χρειάζομαι πατάω refactor και rename του παλιού όπως φαίνεται στην εικόνα. Βάζω το νέο όνομα και πατάω OK και έπειτα Finish. 13
Όταν εισάγω το project στο eclipse θα εμφανίζεται η παρακάτω εικόνα: 14
Πατώντας πάνω στο project και ανοίγοντας τα package(υποφάκελοι στους οποίους οργανώνω τις κλάσεις) που έχει παίρνω την παρακάτω εικόνα: 15
Δημιουργία νέου project: Πηγαίνω στο File->New και έπειτα είτε Java Project το οποίο θα μας δημιουργήσει κατευθείαν ένα java αρχείο είτε σκέτο Project όπου έπειτα στο παράθυρο διαλόγου που ανοίγει επιλέγω ότι θα είναι java project, όπως φαίνεται παρακάτω: 16
Αν διαλέξω java project μου ζητάτε να δώσω το όνομα το project, έστω Hello, και μετά πατάω είτε next ή κατευθείαν Finish. 17
Αν πατήσω next, δίνεται η δομή που θα έχει το project (την αποδεχόμαστε ως έχει) και πατάω Finish: Προσοχή! Σε εμάς δεν θα ζητηθεί να αλλάξουμε τίποτα σε αυτές τις καρτέλες. 18
Όταν δημιουργήσω το project θα πάρω την παρακάτω μορφή στο eclipse: 19
Δημιουργία package Τα package ουσιαστικά είναι υποφάκελοι στους οποίους τοποθετούμε κλάσεις για να τις έχουμε ομαδοποιημένες. Επιλέγω το project ->New->Package όπως φαίνεται στην εικόνα: 20
Βάζω άνομα στο package. Προσοχή το πρώτο γράμμα του ονόματος του package να είναι πεζό και μετά πατάω finish. 21
Η εικόνα στο eclipse μετά την δημιουργία του package είναι η ακόλουθη: 22
Δημιουργία κλάσης Αν θέλω να δημιουργήσω μια κλάση, επιλέγω το package στο οποίο θέλω να είναι πατάω δεξί κλικ-> New->Class 23
Και βάζω στο Νame το όνομα της κλάσης, έστω HelloJava. Αν θέλω η κλάση που δημιουργώ να είναι main, τότε δεν ξεχνάω να επιλέξω το public static void από κάτω και μετά finish. 24
Μόλις ολοκληρωθεί η δημιουργία στο περιβάλλον του eclipse ανοίγει το παρακάτω παράθυρο: 25
Ένα απλό πρόγραμμα Προσθέτω μία εντολή έστω System.out.println( Hello from Java ); Και εκτελώ το πρόγραμμα. Για να κάνω εκτέλεση του κώδικα πατάω αποθήκευση και έπειτα εκτέλεση (run) όπως φαίνεται στην εικόνα. 26
Το πρόγραμμα εκτελείται και τα αποτελέσματα του φαίνονται στην καρτέλα console κάτω κάτω. 27
Προσθήκη επανάληψης μέσω της εντολής for και εμφάνιση αποτελεσμάτων στην καρτέλα console: 28
Εμφάνιση σφαλμάτων. Έστω ότι έχουμε κάνει ένα συντακτικό λάθος, για παράδειγμα εδώ λείπει το t από το println και είναι prinln. Όταν πατήσουμε να εκτελεστεί το πρόγραμμα θα υπογραμμιστεί το λάθος και θα βγάλει ένα κόκκινο x μπροστά από την γραμμή, επίσης στο console θα δίνεται περιγραφή του λάθους. Γενικά τα αρχικά λάθη που περιγράφει στο console είναι και τα πιο σημαντικά. 29
Επίσης παίρνω περιγραφή του σφάλματος βάζοντας το βελάκι πάνω στο Χ αριστερά, όπως φαίνεται στην εικόνα,και τον αριθμό των σφαλμάτων στην καρτέλα problems. 30
Debug Perspective Με το perspective αλλάζω την διαμόρφωση του παραθύρου στο περιβάλλον του άλλον του eclipse ανάλογα με το λόγο για τον οποίο θέλω να το χρησιμοποιήσω. Τα perspective που μας ενδιαφέρουν είναι το Java(το παράθυρο με την κλασική διαμόρφωση που εμφανίζεται στο eclipse όπου γράφω τον κώδικα) και το Debug(το παράθυρο όπου κάνω Debugging, θα εξηγηθεί παρακάτω) η εναλλαγή τους φαίνεται παρακάτω και γίνεται με τα κουμπάκια πάνω δεξιά Java και Debug αντίστοιχα. 31
32
Debug του προγράμματος Γενικά χρησιμοποιείται περισσότερο όταν τα αποτελέσματα που εμφανίζονται δεν είναι σωστά, ώστε να κάνουμε έλεγχο βλέποντας τις τιμές που παράγει σταδιακά το πρόγραμμα κατά την εκτέλεση του και να εντοπίσουμε το σφάλμα. Για να κάνουμε Debug αρχικά βάζουμε στα σημεία που θέλουμε να σταματάει η εκτέλεση και να μας δίνει τις τιμές που παράγει μια μια βούλες (breakpoint) με διπλό κλικ όπως φαίνεται στην εικόνα: 33
Αφού βάλω τα breakpoints πηγαίνω στο Debug όπως δείχνει η εικόνα και το κάνω Debug as Java Application. 34
Στο παράθυρο διαλόγου που εμφανίζεται με ρωτάει αν θέλω να μου ανοίξει το Debug perspective (η διαμόρφωση του παραθύρου να είναι τέτοια ώστε να εμφανίζονται τα αποτελέσματα του Debug) πατάω Yes. 35
H νέα διαμόρφωση είναι όπως φαίνεται παρακάτω: 36
Διαδικασία του Debug Με πράσινη υπογράμμιση εμφανίζεται η εντολή που έχω κάνει breakpoint και στην οποία κάθε φορά θα σταματάει η εκτέλεση του προγράμματος. Για να κάνω την εκτέλεση της επόμενης μόνο εντολής πατάω Step over όπως φαίνεται την εικόνα: 37
Και μόλις εκτελεστεί δίνει το αποτέλεσμα της εκτέλεσης στο console. 38
Πάνω δεξιά μας δίνει τις μεταβλητές που χρησιμοποιούνται και τις τιμές τους στο στάδιο εκτέλεσης που βρισκόμαστε. 39
Έπειτα το πρόγραμμα συνεχίζει την εκτέλεση του όπου επανέρχεται σε μια εντολή όπου είναι breakpoint άρα σταματάει και για να εκτελεστεί πρέπει να πατήσουμε πάλι Step over, παρακάτω βλέπουμε πως αλλάζουν οι τιμές των μεταβλητών και τα αποτελέσματα του προγράμματος. Δηλαδή εμφανίζει το αποτέλεσμα και πηγαίνει πάλι στην for αλλάζει το i όπου το αυξάνει και σταματάει περιμένοντας ξανά Step over για να συνεχίσει. 40
Η διαδικασία αυτή επαναλαμβάνεται μέχρι το πρόγραμμά μας να βγεί από το loop. 41
Αν έχουμε πάρει τις πληροφορίες που θέλαμε και θέλουμε ο υπόλοιπος κώδικας να εκτελεστεί απευθείας και όχι κάνοντας συνέχεια Step over μπορούμε να το κάνουμε με την εντολή Resume όπως φαίνεται παρακάτω: Και το πρόγραμμα θα εκτελεστεί ολόκληρο αγνοώντας τα breakpoints. 42
Αλλαγή στον τρόπο εμφάνισης των παραθύρων Μια δυνατότητα του eclipse είναι μετακίνηση των παραθύρων όπως μας βολεύει, για παράδειγμα εδώ μετακινηθήκαν το παράθυρο variables-breakpoint: 43
Με την μετακίνηση αυτή όμως μπορεί να χάσω κάτι, ή να θέλω να τα ξαναφέρω στην αρχική τους θέση για να το κάνω αυτό μπορώ να πατήσω Window->Reset Perspective όπως φαίνεται παρακάτω: Πατάω οκ και εμφανίζεται η διαμόρφωση όπως ήταν πρίν. 44
45
Export Για να κάνω Export ενός project πηγαίνω στο project που θέλω δεξί κλικ->export. 46
Έπειτα επιλέγω General->Archive File->Next 47
Προσοχή στο παράθυρο αυτό που εμφανίζεται στα δεξιά ελέγχω αν είναι επιλεγμένα όλα τα αρχεία του project που θέλω. Έπειτα επιλέγω να αποθηκευτούν με zip μορφή βάζω όνομα στο αρχείο και επιλέγω που θα αποθηκευτεί μέσω του browse και μετά finish. Σημείωση Όταν βάζουμε όνομα στο αρχείο δεν αλλάζει το όνομα του project. Προσοχή σε αυτό γιατί όταν θέλουμε να κάνουμε import ένα αρχείο δεν γίνεται να εισάγουμε project που έχει το ίδιο όνομα με κάποιο ήδη υπάρχων. Η διαδικασία του Export δεν θα ζητηθεί κατά την εξέταση είναι απαραίτητη για τον διαγωνισμό οπού αφού γραφτεί ο κώδικας πρέπει να γίνει σωστά Export ώστε να μεταφερθεί και να τρέξει την ημέρα του διαγωνισμού. 48
Facility Game Πως τρέχουμε το παιχνίδι έχοντας τους δυο αντιπάλους στον ίδιο υπολογιστή Για να τρέξουμε το παιχνίδι FacilityGame, έχοντας και τους δύο αντίπαλους στον ίδιο υπολογιστή: Τρέχουμε το παιχνίδι ως Server, κάνοντας δεξί κλικ στο package facilitygame και επιλέγοντας μετά Run As->Java Application. 49
Στο παράθυρο που εμφανίζεται πατάμε FServer-facilityGame και στη συνέχεια OK. Κάνοντας την ίδια διαδικασία, αν πατούσαμε στο παράθυρο που εμφανίζεται FClient- facilitygame θα μπορούσαμε να το τρέξουμε ως Client. Εναλλακτικά αν πατήσουμε πάνω στο αρχείο FClient.java δεξί κλικ Run As-> Java Application θα τρέξει το παιχνίδι για τον Client. 50
Όταν τρέχω το παιχνίδι στον ίδιο υπολογιστή και θέλω να δω την οθόνη που αντιστοιχεί στον Server και στον Client, πατάω το παρακάτω κουμπί, το οποίο βρίσκεται στο κάτω δεξιά μέρος της οθόνης: Έτσι ως Server βλέπω την παρακάτω οθόνη: 51
Και πατώντας το κουμπί βλέπω την οθόνη ως Client: 52
Πως τρέχουμε το παιχνίδι έχοντας τους αντιπάλους σε διαφορετικό υπολογιστή Για να τρέξουμε το παιχνίδι FacilityGame, έχοντας τους δύο αντίπαλους σε διαφορετικό υπολογιστή: Τρέχουμε το παιχνίδι ως Server είτε με την προηγούμενη διαδικασία, είτε (εφόσον το έχουμε τρέξει μία φορα) πατώντας το βέλος δεξιά από το κουμπί Run στα δεξιά της οθόνης μας και στην συνέχεια πατάμε FServer, όπως στην εικόνα: 53
Στη συνέχεια ο παίκτης που θα συνδεθεί ως Client (σε διαφορετικό υπολογιστή), πατάει το βέλος αριστερά του Run και στη συνέχεια Run Configurations Στο παράθυρο που εμφανίζεται επιλέγουμε αριστερά Java Application-> FClient. Από την καρτέλα (x)= Arguments, γράφουμε στο κουτάκι Program arguments την γενική μορφή και πατάμε Run. Η γενική μορφή είναι: <Player Type> <verbose> <server host> <server port> <n> <seed> <Player Type>: βάζω τον παίκτη που θέλω (εδώ ο DUMMY_PLAYER_1) <verbose>: να τα τυπώνει αναλυτικά? (Αν ναι γράφω true, όπως εδώ) <server host>: το ip του υπολογιστή που είναι ο server (εδώ το 192.168.0.35) <server port>: το port (4455) <n>: πλήθος κόμβων (εδώ έχουμε 100) <seed>: αριθμός για την γεννήτρια ψευδοτυχαίων αριθμών (εδώ βάλαμε το 123) 54
Προσοχή! Εάν αφού παίξουμε με κάποιον άλλο υπολογιστή, θέλουμε να παίξουμε έχοντας Server και Client τον ίδιο υπολογιστή, πιθανόν να βγάλει «λάθος» το πρόγραμμα. Τότε σβήνουμε τα Arguments <Player Type> <verbose> <server host> <server port> <n> <seed>, ώστε να μην ψάχνει ο υπολογιστής, άλλο υπολογιστή για αντίπαλο και στη συνέχεια ακολουθούμε την γνωστή διαδικασία. 55