Εργασία 1 - FacilityGame [2012-13]

Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό pefraimi » 28 Νοέμ 2012, 10:42

Εδώ μπορούν να υποβληθούν απορίες και παρατηρήσεις για την εργασία 1 των Δομών Δεδομένων 2012-13,
Παύλος.-
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό blackbird » 28 Νοέμ 2012, 13:17

Έχει ανακοινωθεί ποιος είναι ο αριθμός των κόμβων (n) και ποιο το seed;
Ο 4457 είναι ο παίχτης που πρέπει να νικήσουμε αρχικά;
Without Heart We Would Be Mere Machines
Alfa Romeo
Άβαταρ μέλους
blackbird
Full Member
 
Δημοσιεύσεις: 163
Εγγραφή: 16 Οκτ 2010, 01:51
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό pefraimi » 29 Νοέμ 2012, 22:58

Καταρχήν, να αναφέρω και εδώ ότι έχει δοθεί παράταση για την εργασία 1 λόγω των τεχνικών προβλημάτων που αντιμετωπίζει η υπηρεσία e-mail του ΔΠΘ. Η νέα ημερομηνία παράδοσης είναι 10/12/2012.

Ο αλγόριθμος/παίκτης τον οποίο θα πρέπει να νικήσετε είναι ο SIMPLE_PLAYER_1 (port 4455).

Οι τιμές για τις παραμέτρους n και seed για την επίσημη εκτέλεση κατά πάσα πιθανότητα θα είναι:
n = 1012 και seed οι τιμές 3690, 3691, 3692, 3693 kai 3694. Θα πρέπει δηλαδή ο παίκτης σας
να κερδίζει τον SIMPLE_PLAYER_1 στις πέντε παρτίδες που καθορίζονται από τις παραπάνω παραμέτρους.

Θα έχουμε την ευκαιρία να συζητήσουμε την εργασία και αύριο στο μάθημα,

Παύλος.-
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό stelmitr » 04 Δεκ 2012, 22:23

Βάζω τους παίκτες SimpleFPlayer1 (server) και SlowFPlayer (client) να παίξουν και δεν ξεκινάει το παιχνίδι (όλοι οι κόμβοι είναι FREE και το finish είναι false) . Γιατί συμβαίνει αυτό;
stelmitr
Newbie
 
Δημοσιεύσεις: 11
Εγγραφή: 30 Οκτ 2009, 16:12

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό drosatosgr » 05 Δεκ 2012, 10:14

stelmitr έγραψε:Βάζω τους παίκτες SimpleFPlayer1 (server) και SlowFPlayer (client) να παίξουν και δεν ξεκινάει το παιχνίδι (όλοι οι κόμβοι είναι FREE και το finish είναι false) . Γιατί συμβαίνει αυτό;


Εάν πραγματικά δεν ξεκινάει και δεν κάνει τίποτα χώρις να βγάζει μηνύματα π.χ.

Monitor Warning in round 1, player in state WAITING_FOR_ME since 2735 msec!!

τότε σημαίνει ότι ο server σε είχε βάλει σε κατάσταση αναμονής μέχρι να βρεθεί ελεύθερο thread για να τρέξεις τον παίχτη σου. Όπως έχω πεί και στις ασκήσεις, o server μπορεί να εξυπηρετεί ταυτόχρονα ανά παίχτη (Simple, Stable, Weak) μέχρι 20 παιχνίδια.

Από την άλλη, εάν δούμε την default υλοποίηση του SlowFPlayer, έχει ένα Sleep Thread που σταματάει το παιχνίδι στην πλευρά την δική σου (client) για 7.5 sec (κατά μέσο όρο). Αυτό σημαίνει χοντρικά για ένα n = 1000 απαιτούνται χοντρικά 336 κινήσεις όπου από τις οποίες οι μισές είναι δικιές σου, άρα για να τελειώσει το παιχνίδι θα χρειαζόταν τουλάχιστον 336/2 * 7.5 = 1260 sec = 21 min. Κοινός δηλαδή δεν πρόκειται να περιμένεις.
Τελευταία επεξεργασία από drosatosgr και 05 Δεκ 2012, 12:12, έχει επεξεργασθεί 1 φορά/ες συνολικά
drosatosgr
Newbie
 
Δημοσιεύσεις: 14
Εγγραφή: 19 Σεπ 2008, 15:26
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό g1wrg0s » 05 Δεκ 2012, 11:59

Για να παίξουμε με τον server του εργαστηρίου, θα πρέπει από τα arguments να αλλάξουμε τα Program Arguments ή τα VM Arguments?Και αν ναι τότε ποία ακριβώς στοιχεία πρέπει να συμπληρώσουμε;
g1wrg0s
Newbie
 
Δημοσιεύσεις: 7
Εγγραφή: 27 Ιουν 2012, 19:53

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό drosatosgr » 05 Δεκ 2012, 12:20

g1wrg0s έγραψε:Για να παίξουμε με τον server του εργαστηρίου, θα πρέπει από τα arguments να αλλάξουμε τα Program Arguments ή τα VM Arguments?Και αν ναι τότε ποία ακριβώς στοιχεία πρέπει να συμπληρώσουμε;


Τα arguments που πρέπει να πηράξετε είναι τα Program Arguments του FClient**. Όλοι οι πιθανοί συνδιασμοί παραμέτρων είναι:

X_Player false polis.ee.duth.gr 4455 1012 369X (Για τον SIMPLE_PLAYER_1 στον server)
X_Player false polis.ee.duth.gr 4456 1012 369X (Για τον STABLE_PLAYER στον server)
X_Player false polis.ee.duth.gr 4457 1012 369X (Για τον WEAK_PLAYER στον server)

και όπου X ή X_Player είναι αυτό που πρέπει να αλλάζετε.

** (Menu) Run -> Run Configuration ... -> Java Application -> FClient -> (Tab) Arguments -> Program Arguments
Με την προυπόθεση ότι έχετε κάνει run έστω για μια φορά τον FClient (χωρίς παραμέτρους).
Τελευταία επεξεργασία από drosatosgr και 05 Δεκ 2012, 12:45, έχει επεξεργασθεί 1 φορά/ες συνολικά
drosatosgr
Newbie
 
Δημοσιεύσεις: 14
Εγγραφή: 19 Σεπ 2008, 15:26
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό g1wrg0s » 05 Δεκ 2012, 12:38

drosatosgr έγραψε:
g1wrg0s έγραψε:Για να παίξουμε με τον server του εργαστηρίου, θα πρέπει από τα arguments να αλλάξουμε τα Program Arguments ή τα VM Arguments?Και αν ναι τότε ποία ακριβώς στοιχεία πρέπει να συμπληρώσουμε;


Τα arguments που πρέπει να πηράξετε είναι τα Program Arguments. Όλοι οι πιθανοί συνδιασμοί παραμέτρων είναι:

X_Player false polis.ee.duth.gr 4455 1012 369X (Για τον SIMPLE_PLAYER_1 στον server)
X_Player false polis.ee.duth.gr 4456 1012 369X (Για τον STABLE_PLAYER στον server)
X_Player false polis.ee.duth.gr 4457 1012 369X (Για τον WEAK_PLAYER στον server)

και όπου X ή X_Player είναι αυτό που πρέπει να αλλάζετε.

Εννοείτε στο JavaApplication/FServer ή στο FClient?
g1wrg0s
Newbie
 
Δημοσιεύσεις: 7
Εγγραφή: 27 Ιουν 2012, 19:53

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό drosatosgr » 05 Δεκ 2012, 12:49

Φίλε g1wrg0s, έκανα edit το προηγούμενο post και πλέον απαντάει στην ερώτηση σου!
drosatosgr
Newbie
 
Δημοσιεύσεις: 14
Εγγραφή: 19 Σεπ 2008, 15:26
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό g1wrg0s » 05 Δεκ 2012, 12:53

drosatosgr έγραψε:Φίλε g1wrg0s, έκανα edit το προηγούμενο post και πλέον απαντάει στην ερώτηση σου!

Το είδα μόλις!Ευχαριστώ!
g1wrg0s
Newbie
 
Δημοσιεύσεις: 7
Εγγραφή: 27 Ιουν 2012, 19:53

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό pefraimi » 05 Δεκ 2012, 20:22

... τρεχω τον κώδικα μου και δεν μου ειναι σε καμια περιπτωση εμφανες ο τροπος με τον οποιο μαζευονται οι ποντοι.
Η απορία μου είναι το αν οταν διαλεγω ενα κομβο παιρνω τους πόντους του κομβου μόνο ή τους ποντους του κομβου που διάλεξα συν τα γειτονικά
διότι τρέχοντας ενα κωδικα με ν=20 ενάντια στον κωδικα stable και εγώ να είμαι ο Player B βλεπω πως εμενα με δινει τους ποντους μονο απο τους κομβους που εχω διαλεξει ενω ο αντίπαλος έχει 162 ποντους απο τους κομβους που εχει επιλεξει συν 300 ποντους (162+300) ...


Οι κανόνες είναι απλοί και τους έχουμε συζητήσει επανειλημμένα στο μάθημα:

Κάθε παίκτης παίρνει τους πόντους για τους κόμβους/τοποθεσίες που επιλέγει.

Επιπλέον, εάν καταφέρει ένας παίκτης να δεσμεύσει τρεις ή περισσότερες τοποθεσίες στη σειρά (λαμβάνοντας υπόψη και τα απαραίτητα blocked κενά) τότε τριπλασιάζει τους βαθμούς αυτών των κόμβων.

Δηλαδή, για A (παίκτης A), B (παίκτης Β), x (blocked), - (free)
AxAxxΑx: ο παίκτης A τριπλασιάζει τους βαθμούς για τους κόμβους αυτούς.
Άλλα παραδείγματα με τρεις ή περισσότερους διαδοχικούς κόμβους:
xAxxAxxAxAxAx
xAxAxAx

Αντίθετα, στις παρακάτω περιπτώσεις δεν υπάρχει ο απαιτούμενος αριθμός διαδοχικών κόμβων:
xAxBxAxAx: Δεν υπάρχει διαδοχική τριάδα γιατί μεσολαβεί ένας κόμβος B
xAx-xAxAx: Δεν υπάρχει διαδοχική τριάδα γιατί μεσολαβεί ελεύθερη θέση

Παύλος.-
pefraimi
Sr. Member
 
Δημοσιεύσεις: 333
Εγγραφή: 01 Νοέμ 2008, 14:59

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό g1wrg0s » 06 Δεκ 2012, 20:26

Η public Vector<Integer> getMoveLocation(); τι τύπο δεδομένων επιστρέφει και πως καλείται?
g1wrg0s
Newbie
 
Δημοσιεύσεις: 7
Εγγραφή: 27 Ιουν 2012, 19:53

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό drosatosgr » 06 Δεκ 2012, 20:50

g1wrg0s έγραψε:Η public Vector<Integer> getMoveLocation(); τι τύπο δεδομένων επιστρέφει και πως καλείται?


Ο κώδικας που ακολουθεί δείχνει ένα παράδειγμα προσπέλασης:

Κώδικας: Επιλογή όλων
      Vector<Integer> moveLocation = game.getMoveLocation();
      Enumeration<Integer> en = moveLocation.elements();
      while(en.hasMoreElements()){
         System.out.print(en.nextElement()+" ");
      }
      System.out.println();


ή

Κώδικας: Επιλογή όλων
      Vector<Integer> moveLocation = game.getMoveLocation();
      for (int j=0;j<moveLocation.size();j++){
         System.out.print(moveLocation.get(j)+" ");
      }
      System.out.println();


Είναι απλά μια λίστα στην οποία καταγράφονται όλες οι κινήσεις. Το παράνω παράδειγμα, για n=10, με Simple Players και ύστερα από 3 κινήσεις, απλά τυπώνει τα εξής:

Κώδικας: Επιλογή όλων
 0 2 4 null null null null null null null
drosatosgr
Newbie
 
Δημοσιεύσεις: 14
Εγγραφή: 19 Σεπ 2008, 15:26
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό personGR » 07 Δεκ 2012, 13:07

drosatosgr έγραψε:
Ο κώδικας που ακολουθεί δείχνει ένα παράδειγμα προσπέλασης:


Κώδικας: Επιλογή όλων
      Vector<Integer> moveLocation = game.getMoveLocation();
      for (int j=0;j<moveLocation.size();j++){
         System.out.print(moveLocation.get(j)+" ");
      }
      System.out.println();


Είναι απλά μια λίστα στην οποία καταγράφονται όλες οι κινήσεις.


Καλημέρα!

Έχω δημιουργήσει μια νέα κλάση που αφορά την επόμενη κίνηση μου (ελέγχει διάφορες περιπτώσεις) και θέλω να περάσω το

Κώδικας: Επιλογή όλων
Vector<Integer> moveLocation = game.getMoveLocation()


στη νέα κλάση.

Πως το κάνω;

Στον constructor της κλάσης μαζί με το αντικείμενο game του FacilityGameAPI, περνάω και τον Vector και το αναθέτω σε ένα κενό Vector που δημιούργησα στην κλάση;
personGR
Newbie
 
Δημοσιεύσεις: 40
Εγγραφή: 06 Οκτ 2010, 18:32
Τοποθεσία: Έλα ντε!
Φοιτητής ΗΜΜΥ: Ναι

Re: Εργασία 1 - FacilityGame [2012-13]

Δημοσίευσηαπό helena » 07 Δεκ 2012, 14:12

Μου εμφανίζει κάποιες φορές το παρακάτω μήνυμα

Monitor Warning in round XXX, player in state WAITING_FOR_OPPONENT since XXXX msec!!

Για ποιο λόγο?? Οφείλεται σε κάποιο λάθος του κώδικα??
Τελευταία επεξεργασία από Seitjo90 και 07 Δεκ 2012, 19:44, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Μετατροπή σε ελληνικά
helena
Newbie
 
Δημοσιεύσεις: 1
Εγγραφή: 27 Αύγ 2012, 19:47

Επόμενο

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 8 επισκέπτες