THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομές Δεδομένων => Topic started by: MARIOS on November 14, 2008, 13:55:43 pm



Title: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 14, 2008, 13:55:43 pm
Να σας ρωτήσω κάτι??

Την εργασία την έχει δουλέψει κανένας???

Εάν ναι μπορεί κάποιος να βοηθήσει???


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: fpsom on November 15, 2008, 18:44:08 pm
Νομίζω ότι θα είναι πιό πρακτικό απλά να θέσεις κάποια ερωτήματα. Και οι τρεις ερωτήσεις σου μου μοιάζουν περισσότερο ... ρητορικές παρά συγκεκριμένες απορίες.  ;)


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 15, 2008, 19:10:05 pm
εχω γραψει τον κωδικα μου και εχω τα εξης προβληματα:

κανουν την πρωτη κινηση ολοι οι παιχτες και σταματαει στον τελευταιο που εκανε την πρωτη κινηση και δεν ξεκιναει η δευτερη

παρολαυτα εσβησα τον κωδικα στην checkfirstmove και παλι μου συμβαινει αυτο

καμια πρόταση??


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 15, 2008, 19:25:35 pm
Μήπως δεν έχεις επιστρέψει σωστή τιμή στο τέλος; Αρχικά η μέθοδος είχε μόνο μια γραμμή κώδικα: return true; Για αυτό ό,τι κινήσεις έκανες τις δεχόταν.


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 15, 2008, 19:41:31 pm
ξερει κανεις πως φορτωνουμε το αρχειο βλοκους.zip?
μετα πρεπει να γραψουμε μονο την main δλδ που θα χρησιομοποιει τις αλλες κλασεις ετοιμες?


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 15, 2008, 19:46:23 pm
Η αρίθμηση για τα κουτάκια του ταμπλώ ξεκινάει από το (0,0) έτσι;


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 15, 2008, 19:48:51 pm
προφανως!


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 15, 2008, 19:50:20 pm
Χεχ, τίποτα δεν είναι προφανές σε αυτή τη ζωή :P


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: fpsom on November 15, 2008, 19:54:25 pm
@ M1TS()S:

Αντιγράφω από την εκφώνηση που δόθηκε: Στόχος της πρώτης εργασίας είναι να υλοποιηθεί η μέθοδος isValidMove και οι βοηθητικές μέθοδοι fitsTheBoard, checkFirstMove, hasOverlaps,  isTouchingEdges και isTouchingCorners της κλάσης Board.

Επομένως το μόνο που πρέπει να κάνετε είναι να υλοποιήσετε αυτές τις 6 συναρτήσεις. Main ΔΕΝ χρειάζεται να κάνετε, καθώς υπάρχει ήδη μια έτοιμη στην κλάση Platform (την οποία και μπορείτε να χρησιμοποιήσετε για να τρέξετε και εσείς το παιχνίδι).

Για να φορτώσετε το αρχείο Blokus.zip, έχετε δύο επιλογές:
1. Ή να χρησιμοποιήσετε τον οδηγό New Project του eclipse και να εισάγετε το zip αρχείο ως existing project,
2. Ή να φτιάξετε μόνοι σας ένα νέο project και να αντιγράψετε τον κατάλογο src που βρίσκεται στο zip, στον αντίστοιχο κατάλογο που θα δημιουργήσετε.


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 15, 2008, 20:01:40 pm
Η αρίθμηση για τα κουτάκια του ταμπλώ ξεκινάει από το (0,0) έτσι;

:P


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 15, 2008, 20:05:10 pm
δλδ μεσα στην main της platform θα γραψουμε τον κωδικα μας?


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 15, 2008, 20:11:52 pm
Όχι, η main είναι έτοιμη (edit: και ολοκληρωμένη), ακόμα και οι συναρτήσεις που πρέπει να υλοποιήσουμε είναι έτοιμες μέσα στην κλάσση Board --απλά επιστρέφουν πάντα τιμή που δείχνει ότι ο έλεγχος δεν βρήκε λάθος κίνηση, δηλαδή ένα return μόνο--.

Αν ψάξεις στην κλάσση Board θα τις βρεις μέσα όλες. Αυτό που πρέπει να κάνεις είναι να συμπληρώσεις τον κώδικα μέσα τους έτσι ώστε να επιστρέφουν κατάλληλη τιμή true/false αν δεν παραβιάζεται ο κανόνας που ελέγχουν. Το τί αντίκρυσμα έχει η τιμή που επιστρέφουν είναι ήδη υλοποιημένο δεν χρειάζεται να το φτιάξεις εσύ.

Για παράδειγμα: η checkfirstmove επιστρέφει πάντα τιμή true αυτή τη στιγμή. Αν την αλλάξεις και την κάνεις να επιστρέφει πάντα τιμή false, αυτομάτως όταν τρέξεις το πρόγραμμα θα δεις ότι όπου και να τοποθετήσεις το κομμάτι θα φαίνεται μαύρο στην προεπιστκόπιση.


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 15, 2008, 20:15:01 pm
Η αρίθμηση για τα κουτάκια του ταμπλώ ξεκινάει από το (0,0) έτσι;

:P

Το κουτάκι 0,0 αντιστοιχεί στο πάνω-αριστερά


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 15, 2008, 20:49:51 pm
για να ελεγξουμε το χρωμα στην check first move χρησιμοποιουμε την Colour colour απο την piece στη συνθηκη¨?
Και πως ειναι η συνθηκη?
px if(x=0 & y=0 & Color color=color.blue)???


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 15, 2008, 22:14:25 pm
Πρέπει να βάλεις == και όχι =, επειδή κάνεις σύγκιρση

Η color είναι private στην κλάσση piece, μπορείς όμως να χρησιμοποιήσεις τη μέθοδο getColor()

(To Color Color που γράφεις είναι τελείως λάθος. Είναι σαν να δηλώνεις ένα καινούργιο αντικείμενο (που δεν το δημιουργείς καν με το τελεστή new), και καμία σχέση δεν έχει με το αντικείμενο p τύπου Piece).


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: radio on November 16, 2008, 03:16:58 am
Σε ολες τις μεθοδους μου βγαζει την εξης προειδοποιηση? σφαλμα?  >:(
this method ....(piece int int) from the type board is never used locally....ξερει κανεις τι ειναι??


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on November 16, 2008, 05:21:01 am
Καμια ιδεα για την υλοποιηση της isTouchingEdges? Την εχω παιδεψει πολύ και αυτο που ποαιρνω ειναι μονο σφαλματα. και ναι εχω ελεγξει τα παντα. Πως σκεφτεστε να την υλοποιησετε εσεις?


Title: Re: Blokus 2008 συζήτηση και απορίες
Post by: Wade on November 16, 2008, 10:31:19 am
Σε ολες τις μεθοδους μου βγαζει την εξης προειδοποιηση? σφαλμα?  >:(
this method ....(piece int int) from the type board is never used locally....ξερει κανεις τι ειναι??

Σαν warning ακούγεται...  Καλείς αυτές τις μεθόδους μέσα στην isValidMove();


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: !!DUO!!(Αγγίζοντας την τελειότητα..) on November 16, 2008, 12:04:42 pm
Σε ολες τις μεθοδους μου βγαζει την εξης προειδοποιηση? σφαλμα?  >:(
this method ....(piece int int) from the type board is never used locally....ξερει κανεις τι ειναι??

Και εμένα αυτό βγάζει....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on November 16, 2008, 13:50:18 pm
Σε ολες τις μεθοδους μου βγαζει την εξης προειδοποιηση? σφαλμα?  >:(
this method ....(piece int int) from the type board is never used locally....ξερει κανεις τι ειναι??

ναι, εμένα μου το έβγαζε αυτό όταν είχα άχρηστες μεταβλητές από προηγούμενες υλοποιήσεις που ξεχνούσα να σβήσω.

Υποθέτω ότι απλά δεν έχεις βάλει τις συναρτήσεις που έγραψες μέσα στην isValidMove() και σου πετάει το μήνυμα επειδή το πρόγραμμά σου δεν τις χρησιμοποιεί ποτέ.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: !!DUO!!(Αγγίζοντας την τελειότητα..) on November 16, 2008, 21:41:42 pm
Παιδιά να κάνω και εγώ μία ερώτηση..

Πώς κάνουμε προσπέλαση τα στοιχεία του μεγάλου πίνακα? με ποιά εντολή? πχ με το board[2][3] κάνουμε προσπέλαση στο στοιχείο 2,3??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 17, 2008, 00:19:52 am
Με τα events θα χρειαστεί να ασχοληθούμε για την ώρα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 17, 2008, 00:40:14 am
Παιδιά να κάνω και εγώ μία ερώτηση..

Πώς κάνουμε προσπέλαση τα στοιχεία του μεγάλου πίνακα? με ποιά εντολή? πχ με το board[2][3] κάνουμε προσπέλαση στο στοιχείο 2,3??
Ε σαν τη C++.. από μόνο του το board[2][3] θαρρώ πως είναι κάτι σαν pointer, αφού η board είναι πίνακας αντικειμένων τύπου Box.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on November 17, 2008, 06:28:37 am
Το board[2][3] θα σου επιστρέψει αντικείμενο τύπου Box όπως σωστά είπε ο γουόντερερ από πάνω. Αν θέλεις να μάθεις πχ το χρώμα από το συγκεκριμένο τετραγωνάκι του board θα το κάνεις με την εντολή board[2][3].getColor();


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on November 18, 2008, 18:44:49 pm
δεν εχω καταλαβει πως θα παρω το χρωμα το τρεχοντος κομματιου , p τυπου piece ,ενω βρισκομαι μεσα στην κλαση board....
καμια ιδεα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: igoutas on November 18, 2008, 19:52:17 pm
p.getcolor()
kai gia sygrish p.getcolor()==Color.blue;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on November 19, 2008, 04:02:29 am
Παιδιά,απορία επειδή δεν παρακολουθώ το μάθημα και δεν είδα να αναγράφεται κάπου ρητά: Πέραν των αρχείων,που υποθέτω είναι όλο το Blokus.zip με τις συμπληρωμένες κλάσεις,πρέπει να παραδόσουμε και αναφορά ? Ή έστω κάποιο Readme ? Ρωτάω γιατί η εκφώνηση δεν γράφει κάτι,ενώ πιο παλιά ζητούνταν απόσο ξέρω.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 19, 2008, 18:55:07 pm
Απλώς πρέπει στις μεθόδους που θα γράψουμε να περιέχονται και σχόλια πάνω στον κώδικά μας.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 19, 2008, 22:54:33 pm
Ρωτάω γιατί η εκφώνηση δεν γράφει κάτι,ενώ πιο παλιά ζητούνταν απόσο ξέρω.
Από ό,τι θυμάμαι μας είχε πει ότι στις επόμενες εργασίες έτσι θα είναι, αλλά για την πρώτη δεν χρειάζεται -μόνο σχόλια θέλει όπως είπε ο stefos--.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 19, 2008, 23:17:53 pm
Παιδιά στο εργαστήριο γίνονται οι δύο πρώτες μέθοδοι.

Και δε χρειάζεται να παλέψουμε με τα events κ τα utils ακόμα!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 20, 2008, 12:55:31 pm
Εμεις τον κωδικα τον γραφουμε μεσα στο αρχειο blokus που κατεβαζουμε, στις κλασεις που ηδη υπαρχουν μεσα δηλαδη, απλα ειναι ατελεις, και θα ανεβασουμε το αρχειο αυτο αφου σωσουμε τις αλλαγες που καναμε?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on November 20, 2008, 14:51:49 pm
Ναι, θα συμπληρώσεις ας πούμε τις συναρτήσεις που ζητάει.  Αν τροποποιήσεις μόνο μία κλάση, μπορείς να ανεβάσεις μόνο αυτήν χωρίς την υπόλοιπη πλατφόρμα, αρκεί όμως να έχεις βάλει σε μορφή comment τα στοιχεία των μελών της ομάδας σου.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 20, 2008, 16:38:40 pm
Ξέρω ότι στην παρούσα φάση δεν έχει σημασία, αλλά ποια διάσταση είναι το width κ ποια το length?  >:(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 20, 2008, 19:24:42 pm
Ρε παιδια μια απλη ερωτηση. Ειμαι π.χ. μεσα στην hasOverlaps και θελω να καλεσω τη shape και τη getColor. Ειναι και οι 2 public μεθοδοι. Πως ακριβως τις καλω??? Γιατι καπου κανω λαθος...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 20, 2008, 19:32:26 pm
Για το αντικείμενο της κλάσης Piece p που δέχεται η μέθοδος σαν όρισμα, μπορείς να τις καλέσεις γράφοντας:
p.getColor(); και p.getShape()[ i ][ j ]; όπου i,j οι συντεταγμένες του κουτιού που θες να επιστρέψεις το περιεχόμενο(true ή false).


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 20, 2008, 19:39:34 pm
Και αν θελω να καλεσω μια μεθοδο απο την κλαση box ή player??? Και κατι ακομα, τον ελεγχο που πρεπει να κανουμε στην checkFisrtMove μας τον δινει ετοιμο ή μου φαινεται?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 20, 2008, 19:44:34 pm
Φτιάξε ένα αντικείμενο της κλάσης που θες στην κλάση σου. Π.χ. Box b=new Box(); και μετά κάλεσε τις συναρτήσεις της Box, που θες μέσω αυτού του αντικειμένου.
Η checkFirstMove χρειάζεται υλοποίηση, απλώς δε χρειάζεται να την βάλεις στην isValidMove γιατί την έχει ήδη.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 20, 2008, 19:48:30 pm
Ok thanks!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: giannoulis on November 20, 2008, 20:25:43 pm
Λοιπόν δείτε λίγο το πρόβλημα που έχω..

Όταν υλοποιώ την checkFirstMove και κάνω την συνθήκη για τον παίχτη με το μπλε, ενώ δουλεύει σωστά, δεν "προχωράει" αυτόματα στον επόμενο παίχτη, δηλαδή στον κίτρινο..
Μήπως πρέπει να κάνω και αυτό και με ποιά εντολή? Θα χρησιμοποιήσω την activePlayer??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 20, 2008, 20:39:25 pm
Φτιάξε ένα αντικείμενο της κλάσης που θες στην κλάση σου. Π.χ. Box b=new Box(); και μετά κάλεσε τις συναρτήσεις της Box, που θες μέσω αυτού του αντικειμένου.
Η checkFirstMove χρειάζεται υλοποίηση, απλώς δε χρειάζεται να την βάλεις στην isValidMove γιατί την έχει ήδη.

Βασικά έχει φτιαχτεί ο πίνακας σαν board[][] τύπου box οπότε το μόνο που έχεις να κάνεις είναι να καλείς την board που θες

@giannoulis: Στείλε τον κώδικά σου γιατί στην αρχή είχα και εγώ ένα τέτοιο πρόβλημα


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 20, 2008, 20:44:55 pm
giannoulis Αυτόματα την κάνει, κάτι θα έκανες λάθος.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 20, 2008, 21:00:13 pm
Ας πουμε θελει να παρω το χρωμα ενος τυχαιου κομματιου του board, πως θα το κανω ρε guys?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: giannoulis on November 20, 2008, 21:02:28 pm
Λοιπόν παιδιά να το κομμάτι του κώδικα για την CheckFirstMove.Είναι μόνο για το μπλε χρώμα..Δείτε το λίγο ρε και πείτε μου..

Θενκς!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 20, 2008, 21:09:59 pm
yeah για το μπλιε καλά είναι.
Μετά θα περιπλακεί λίγο :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: giannoulis on November 20, 2008, 21:11:58 pm
Βρε ντάξει..τα υπόλοιπα χρώματα είναι λογικά το ίδιο..Απλά αν τρέξετε αυτό το κομμάτι θα δείτε ότι δεν προχωράει στο επόμενο κομμάτι..
Τί συμβουλεύετε??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 20, 2008, 21:13:58 pm
Ας πουμε θελει να παρω το χρωμα ενος τυχαιου κομματιου του board, πως θα το κανω ρε guys?

board[0][0].getColor() το 0,0 είνια τυχαίο


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 20, 2008, 21:15:07 pm
Βρε ντάξει..τα υπόλοιπα χρώματα είναι λογικά το ίδιο..Απλά αν τρέξετε αυτό το κομμάτι θα δείτε ότι δεν προχωράει στο επόμενο κομμάτι..
Τί συμβουλεύετε??
Βεβαίως και δεν προχωράει διότι στα υπόλοιπα χρώματα δεν μπορεί να βρει κάποιο μέρος για να βάλει το πρώτο κομμάτι. Αν δεις το πρόγραμμα αυτόματα κάνει έλεγχο για να βρει γενικά κάποια διαθέσιμη θέση. Μη βρίσκοντας διαθέσιμη θέση, ξαναεπιστρέφει στο μπλε όπου έχει παίξει την πρώτη κίνηση και υπάρχει θέση, got it?  8)

και όχι θέλουν μεταχείριση τα υπόλοιπα χρώματα...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 20, 2008, 21:51:00 pm
giannoulis επίσης διόρθωσε τα '&' και βάλε '&&'!



Βασικά απ'ότι είδα δεν παίζει διαφορά, οπότε άσ'το κι έτσι! Δικό μου το λάθος..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on November 20, 2008, 21:58:04 pm
ερωτηση..
ειπαμε πως θελουμε οι αλλες μεθοδοι,να ειναι μεσα στην isvalidMove ή  να τις καλει η isvalidmove.  αν θελουμε να τις καλει ,θα τις καλεσουμε οπως γινεται μεσα στον ηδη γραμενο κωδικα της isvalidmove?  δηλαδη π.χ με την εντολη    return (chekFirstMove(p,x,y)) ; αν θελω να καλεσει η isvalidMOve thn checkFirstMove?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 20, 2008, 22:02:35 pm
Επειδή και η isValidMove είναι boolean συνάρτηση και επιστρέφει μια τιμή true ή false όταν στον κωδικά της συναντήσει μια return ακολουθούμενη από κάποιο boolean, πρέπει να τις καλείς αλλιώς...π.χ. μέσα σε μια if η οποία θα τσεκάρει το αποτέλεσμά τους.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on November 20, 2008, 22:24:30 pm
δηλαδη?? ενα παραδειγμα ας πουμε?
στο if τι συνθηκη να βαλω?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 20, 2008, 22:25:40 pm
π.χ.
if((checkFirstMove()==true)&&(hasOverlaps()==false))return true;



edit: και όπως λέει ο Νikolas μετά, γίνεται! Απλώς ήθελα να διευκρινίσω ότι πρέπει να υπάρχει μια return στη συνάρτηση σου η οποία θα επιστρέφει true για να συνεχιστεί το παιχνίδι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on November 20, 2008, 23:22:02 pm
Δεν υπάρχει πρόβλημα, μπορείς να γράψεις:

return(mplampla() && mplampla2() && mplampla3())

και όπως είπες, εφ'όσον αυτές μέσα στο return είναι boolean, έχεις && και το αποτέλεσμα είναι true ή false.
Αυτό, θα επιστρέφεται με το return


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on November 21, 2008, 01:04:47 am
Λοιπόν έχω το εξής κουλό πρόβλημα. Αφού έχω υλοποιήσει τα πάντα και έχω λύσει τα όποια σφάλματα παρουσιάστηκαν συμβαίνει το εξής. Το παιχνίδι τρέχει απρόσκοπτα στην αρχή,μέχρι που σε κάποιο προχωρημένο σημείο στο παιχνίδι,κάποιο τυχαίο κομμάτι,τυχαίου παίχτη,σε τυχαίο σημείο,πετάει exception στην HasOverlaps ! Επαναλαμβάνω ότι αυτό συμβαίνει μόνο σε πολύ προχωρημένο στάδιο στο παιχνίδι. Πραγματικά δεν ξέρω τί να πώ.Η πλάκα δε έιναι ότι η γραμμή του κώδικα που και καλά πετάει το λάθος αποκλείεται, όπως είναι γραμμένη,να ευθύνεται.

Πραγματικά μου έχει δώσει στα νεύρα...Δεν μπορώ να παίξω ένα παιχνίδι ολόκληρο χωρίς να γίνει αυτό.Και βγαίνει πάντα λίγο πριν τελειώσει το game!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ilovegreece on November 21, 2008, 01:19:20 am
Μπορει καποιος να μου στειλει σε πμ σε μορφη doc τον κωδικα της fitsTheBoard γιατι τις εχω κανει ολες αλλα μονο αυτη μου βγαζει προβλημα και δε μπορω να το λυσω με τπτ.Συγκεκριμενα οποτε παω να βαλω ενα πολυομινο και ενα κομματι του βρισκεται ειτε στην πρωτη και τελευταια γραμμη ειτε στην πρωτη και τελευταια στηλη μου το μαυριζει.Δοκιμασα τα παντα αλλα οτι αλλαγη και να εκανα απλως χειροτερευει τα πραγματα...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 21, 2008, 01:36:05 am
Παιδιά η απορία μου είναι λίγο γενικότερη πάνω στη γλώσσα, αλλά θα την κάνω γιατί έχω την εντύπωση ότι έκανα χοντράδα...Λοιπόν όταν μέσα σε κάποια μέθοδο ο κομ-πάιλερ συναντήσει εντολή ριτερν (return :P) τότε βγαίνει αυτόματα από την μέθοδο άσχετα αν η return βρίσκεται σε βρόχους επανάληψης και τα σχετικά έτσι??Τερματίζει την μέθοδο οριστικά.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 21, 2008, 01:39:41 am
Παιδιά η απορία μου είναι λίγο γενικότερη πάνω στη γλώσσα, αλλά θα την κάνω γιατί έχω την εντύπωση ότι έκανα χοντράδα...Λοιπόν όταν μέσα σε κάποια μέθοδο ο κομ-πάιλερ συναντήσει εντολή ριτερν (return :P) τότε βγαίνει αυτόματα από την μέθοδο άσχετα αν η return βρίσκεται σε βρόχους επανάληψης και τα σχετικά έτσι??Τερματίζει την μέθοδο οριστικά.
Αυτό συμβαίνει με τη return ναι!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 21, 2008, 01:47:52 am
Δεν υπάρχει πρόβλημα, μπορείς να γράψεις:

return(mplampla() && mplampla2() && mplampla3())

και όπως είπες, εφ'όσον αυτές μέσα στο return είναι boolean, έχεις && και το αποτέλεσμα είναι true ή false.
Αυτό, θα επιστρέφεται με το return
Αυτό δεν είναι σωστό, διότι δεν ισχύει σε όλες τις συναρτήσεις που έχουμε να υλοποιήσουμε το "αν επιστρέφει true, τότε δεν παραβιάζεται κανόνας". Π.χ.στην hasOverLaps() αν επιστρέφει true τότε αυτό σημαίνει ότι παραβιάζεται κανόνας!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 21, 2008, 01:48:54 am
Δεν υπάρχει πρόβλημα, μπορείς να γράψεις:

return(mplampla() && mplampla2() && mplampla3())

και όπως είπες, εφ'όσον αυτές μέσα στο return είναι boolean, έχεις && και το αποτέλεσμα είναι true ή false.
Αυτό, θα επιστρέφεται με το return
Αυτό δεν είναι σωστό, διότι δεν ισχύει σε όλες τις συναρτήσεις που έχουμε να υλοποιήσουμε το "αν επιστρέφει true, τότε δεν παραβιάζεται κανόνας". Π.χ.στην hasOverLaps() αν επιστρέφει true τότε αυτό σημαίνει ότι παραβιάζεται κανόνας!
πολύ σωστός :) gj


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 21, 2008, 01:52:36 am
Ρε Wanderer με κάνεις να κάνω edit στο edit τώρα! :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 21, 2008, 02:03:47 am
 :-[ :-[ :-[ (ε μην κάνεις, άσε να την πατήσει κάποιος να γελάμε :P ^boil^ )


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on November 21, 2008, 02:48:24 am
εξαρτάται ομως τι θα ορίσεις να σου επιστρέφει η hasOverLaps...μπορεί να επιστρέφει false σε περιπτωση επικάλυψης...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 21, 2008, 02:54:14 am
Ε ναι εννοείται. Απλά o δημιουργός του παιχνιδιού το έχει ορίσει έτσι, και ενώ σε αυτήν την περίπτωση λογικά μόνο στην isValidMove() χρησιμοποιούνται οι μέθοδοι, υποθέτω ότι γενικά πρέπει να ακολουθούμε τον ορισμό που θέτει, αφού μπορεί να χρησιμοποιεί τη μέθοδο και σε κάποιο άλλο σημείο του προγράμματος για άλλο λόγο.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: igoutas on November 21, 2008, 03:06:09 am
ρε λαμογιο ilovegreece εδω συζηταμε δεν ζηταμε αυτουσιους κωδικες να στρωθεις και να την βγαλεις!!!!ΕΛΛΗΝΕΣ ΦΟΙΤΗΤΕΣ!!!ΝΤΡΟΠΗ ^nono^ ^nono^ ^nono^ ^nono^ ^nono^ ^nono^ ^nono^ ^nono^


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on November 21, 2008, 03:13:11 am
Δεν υπάρχει πρόβλημα, μπορείς να γράψεις:

return(mplampla() && mplampla2() && mplampla3())

και όπως είπες, εφ'όσον αυτές μέσα στο return είναι boolean, έχεις && και το αποτέλεσμα είναι true ή false.
Αυτό, θα επιστρέφεται με το return
Αυτό δεν είναι σωστό, διότι δεν ισχύει σε όλες τις συναρτήσεις που έχουμε να υλοποιήσουμε το "αν επιστρέφει true, τότε δεν παραβιάζεται κανόνας". Π.χ.στην hasOverLaps() αν επιστρέφει true τότε αυτό σημαίνει ότι παραβιάζεται κανόνας!

Παιδιά υπάρχει και το ΝΟΤ (boolean)

Εγώ, π.χ. , στην isValisdMove() έχω πολύ απλά το:

return( fitsTheBoard(p,x,y) && !(hasOverlaps(p,x,y)) && !(isTouchingEdges(p,x,y)) && isTouchingCorners(p,x,y) );

Στην έγκυρη κίνηση έχουμε:

return(true && !(false) && !(false) && true)  =>
=>return true


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 21, 2008, 11:58:01 am
Επειδή θέλει πολύ σκέψη αυτό για να το κάνεις( :P) και αμφισβητήθηκε κιόλας,
 μια if όπως αυτή που πόσταρα χθες σου λύνει τα χέρια! :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 21, 2008, 12:28:29 pm
Δεν υπάρχει πρόβλημα, μπορείς να γράψεις:

return(mplampla() && mplampla2() && mplampla3())

και όπως είπες, εφ'όσον αυτές μέσα στο return είναι boolean, έχεις && και το αποτέλεσμα είναι true ή false.
Αυτό, θα επιστρέφεται με το return
Αυτό δεν είναι σωστό, διότι δεν ισχύει σε όλες τις συναρτήσεις που έχουμε να υλοποιήσουμε το "αν επιστρέφει true, τότε δεν παραβιάζεται κανόνας". Π.χ.στην hasOverLaps() αν επιστρέφει true τότε αυτό σημαίνει ότι παραβιάζεται κανόνας!

Παιδιά υπάρχει και το ΝΟΤ (boolean)

Εγώ, π.χ. , στην isValisdMove() έχω πολύ απλά το:

return( fitsTheBoard(p,x,y) && !(hasOverlaps(p,x,y)) && !(isTouchingEdges(p,x,y)) && isTouchingCorners(p,x,y) );

Στην έγκυρη κίνηση έχουμε:

return(true && !(false) && !(false) && true)  =>
=>return true
βασικά αυτό μια χαρά είναι.

Γενικώς νομίζω άλλο αμφισβήτησε ο wanderer...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 21, 2008, 16:55:51 pm
Ναι, εγώ αμφισβήτησα αυτό που νόμιζα ότι θεωρούσες με βάση τον πρώτο σου κώδικα (που δεν είχε ! σε κάποια μέθοδο), ότι δλδ όλες οι μέθοδοι επιστρέφουν true αν δεν "εντοπίσουν" παράβαση κανόνα.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: radio on November 21, 2008, 18:51:45 pm
τα στοιχεια που ζηταει να βαλουμε με μορφη σχολιων ειναι μονο για την board η και για τις 5 κλασεις?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on November 21, 2008, 18:54:14 pm
ε,λογικα θα γράψεις σχόλια σχετικά με τον κώδικα που έγραψες εσυ


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 21, 2008, 18:54:42 pm
ρε παιδια να ρωτησω κατι που δεν εχω καταλαβει στη γενικοτερη υλοποιηση...
στην fitsTheBoard θελω να καλεσω την getDimensions ωστε να κανω τη συγκριση για να δουμε αν χωραει στν πινακα....

ετσι γραφω στν κωδικα μου:
 if(p.getDimensions()<x && p.getDimensions>y){
       return false;
 }
 else{
       return true;
 }

λοιπον ξερω οτι το μονο σωστο σ αυτο ειναι τα ριτερν...
αυτο που θα θελα να μου πει καποιος ειναι η γενικοτερη φιλοσοφια της εργασιας την οποια και δεν εχς καταλαβει...
δηλ. το getDimensions πως θα πρεπε να το καλεσω και να το χειρηστω???

θενκς!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: radio on November 21, 2008, 18:58:53 pm
Σορυ δεν εκανα καλα την ερωτηση, εννοω τα δικα μας στοιχεια θα τα βαλουμε ως επικεφαλιδα μονο στην board η και στις 5 κλασεις(box, piece,player,platform,board)?
perukas   if(x+p.getDimensions()[0]<20 && y+p.getDimensions()[1])<20{
                                     return true;}
              else {return false;}


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on November 21, 2008, 18:59:19 pm
η συνάρτηση getDimension επιστρέφει ένα πίνακα 2 στοιχείων όπου στο ένα καταχωρείται το μήκος και στο άλλο το πλάτος του σχήματος...τώρα εσυ για να την καλέσεις σωστά θα πρέπει να γράψεις ποιο στοιχείο του πινακα σου θέλεις δλδ (getDimension()[0] ή getDimension()[1])


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 21, 2008, 19:01:26 pm
γράφοντας p.getDimensions()[0] ζητάς το μέγεθος των γραμμών του κομματιού σου, ενώ με το p.getDimensions()[1] ζητάς το πλήθος των στηλών του κομματιού.
Στη συγκεκριμένη συνάρτηση αρκεί ενας έλεγχος για κάθε γωνία του κομματιού σου συγκριτικά με την 'αντίστοιχη' γωνία του board.

π.χ. αν το x>0 και το y>0 για την πάνω αριστερή γωνία, αφού το 0,0 είναι οι συντεταγμένες του πρώτου κελιού του board και x,y είναι οι συντεταγμένες του πάνω αριστερά κομματιού του piece σου.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 21, 2008, 19:04:08 pm
Σορυ δεν εκανα καλα την ερωτηση, εννοω τα δικα μας στοιχεια θα τα βαλουμε ως επικεφαλιδα μονο στην board η και στις 5 κλασεις(box, piece,player,platform,board)?

Όταν λες δικά μας στοιχεία εννοείς για το αρχείο που θα στείλεις (Οι 2 ΑΕΜ δλδ);
Αν ναι, τότε πρέπει να στείλεις όλο το φάκελο που κανες αρχικά unzip με τις τροποποιήσεις που έκανες στην κλάση Board ζιπαρισμένο.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: radio on November 21, 2008, 19:08:00 pm
Τα προγράμματα θα πρέπει να υλοποιηθούν σε Java, με πλήρη τεκμηρίωση του κώδικα. Το πρόγραμμά σας πρέπει να περιέχει επικεφαλίδα σε μορφή σχολίων με τα στοιχεία σας (ονοματεπώνυμα, ΑΕΜ, τηλέφωνα και ηλεκτρονικές διευθύνσεις).]


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 21, 2008, 19:09:32 pm
Οops! :o :(
 Ε μάλλον εννοεί μόνο στη Βoard!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 21, 2008, 22:20:23 pm
Για καθε χρωμα ισχυουν διαφορετικες συντεταγμενες ετσι? Δηλαδη, για το μπλε η πανω αριστερη γωνια ειναι το 0,0 ενω για το κιτρινο η κατω αριστερη γωνια ειναι το 0,0 κτλ...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 21, 2008, 22:26:27 pm
Για καθε χρωμα ισχυουν διαφορετικες συντεταγμενες ετσι? Δηλαδη, για το μπλε η πανω αριστερη γωνια ειναι το 0,0 ενω για το κιτρινο η κατω αριστερη γωνια ειναι το 0,0 κτλ...

οχι
οι συντεταγμενες ισχυουν για το ταμπλο γενικα

στο κιτρινο, πρεπει να μπει η κατω αριστερη γωνια του στο [19,0] του ταμπλο


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 21, 2008, 22:42:42 pm
Για καθε χρωμα ισχυουν διαφορετικες συντεταγμενες ετσι? Δηλαδη, για το μπλε η πανω αριστερη γωνια ειναι το 0,0 ενω για το κιτρινο η κατω αριστερη γωνια ειναι το 0,0 κτλ...

οχι
οι συντεταγμενες ισχυουν για το ταμπλο γενικα

στο κιτρινο, πρεπει να μπει η κατω αριστερη γωνια του στο [19,0] του ταμπλο
Σωστός, απλά να κάνω μια άλλη επισήμανση.

Το πιο ακριβές είναι να πεις
Quote
στο κιτρινο, πρεπει να μπει η κατω αριστερη γωνια του στο [width-1,0] του ταμπλο
μιας και έχουμε συγκεκριμένη μεταβλητή γι αυτό ;) Σχολαστικό μεν, αλλά είναι σύμφωνο με τις αρχές του προγραμματισμού που κάνουμε...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 21, 2008, 22:50:01 pm
για την ακριβεια πρεπει:
το p.getshape()[πλατος πολυομινου-1][μηκος πολυομινου-1]==true και χ+(πλατος πολυομινου)-1==19 και y=0

(για το κιτρινο)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 21, 2008, 22:54:16 pm
άντε πάλι τα 19...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 22, 2008, 17:01:04 pm
Βρε ντάξει..τα υπόλοιπα χρώματα είναι λογικά το ίδιο..Απλά αν τρέξετε αυτό το κομμάτι θα δείτε ότι δεν προχωράει στο επόμενο κομμάτι..
Τί συμβουλεύετε??
Βεβαίως και δεν προχωράει διότι στα υπόλοιπα χρώματα δεν μπορεί να βρει κάποιο μέρος για να βάλει το πρώτο κομμάτι. Αν δεις το πρόγραμμα αυτόματα κάνει έλεγχο για να βρει γενικά κάποια διαθέσιμη θέση. Μη βρίσκοντας διαθέσιμη θέση, ξαναεπιστρέφει στο μπλε όπου έχει παίξει την πρώτη κίνηση και υπάρχει θέση, got it?  8)

και όχι θέλουν μεταχείριση τα υπόλοιπα χρώματα...
δλδ μετα πως θα παει ο κωδικας?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 22, 2008, 17:10:36 pm
Βρε ντάξει..τα υπόλοιπα χρώματα είναι λογικά το ίδιο..Απλά αν τρέξετε αυτό το κομμάτι θα δείτε ότι δεν προχωράει στο επόμενο κομμάτι..
Τί συμβουλεύετε??
Βεβαίως και δεν προχωράει διότι στα υπόλοιπα χρώματα δεν μπορεί να βρει κάποιο μέρος για να βάλει το πρώτο κομμάτι. Αν δεις το πρόγραμμα αυτόματα κάνει έλεγχο για να βρει γενικά κάποια διαθέσιμη θέση. Μη βρίσκοντας διαθέσιμη θέση, ξαναεπιστρέφει στο μπλε όπου έχει παίξει την πρώτη κίνηση και υπάρχει θέση, got it?  8)

και όχι θέλουν μεταχείριση τα υπόλοιπα χρώματα...
δλδ μετα πως θα παει ο κωδικας?
Δεν μπορώ να σου δώσω το φαί στο πιάτο, αλλά άντε έστω θα στο περιγράψω.

Δεν αρκεί να λέμε απλά , όπως στο μπλε, οι συντεταγμένες  x, y να είναι ίσες με τις συντεταγμένες των 4 γωνιών του board, διότι τα x,y είναι αρχικές θέσεις που δείχνουν στην πάνω αριστερά γωνία του σχήματος που προσπαθουμε να τοποθετήσουμε. Στην περίπτωση των υπόλοιπων χρωμάτων, δεν είναι η πάνω αριστερά γωνία που θέλουμε να βρίσκετε στην κατάλληλη θέση και να είναι γεμάτη, αλλά οι υπόλοιπες τρεις γωνίες αντίχτοιχα, έτσι στις συντεταγμένες πρέπει να λάβουμε υπόψιν τις διαστάσεις του εκάτοστε κομματιού για να δείχνουμε κάθε φορά την κατάλληλη γωνία του :) Να η ειδική μεταχείριση.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: M1TS()S on November 22, 2008, 17:14:20 pm
βαζω τισ σωστες συντεταγμενες για τισ υπολοιπες γωνιες, αλλα δεν ξερω πως θα επιλεξω την πχ κατω αριστερη γωνια του κομματιου(if(x==0&y==19&p.getShape()[Shape(0).lenght][0]==true&p.getColor()==Color.yellow)???. παρολα αυτα δεν προχοραει μετα τον μπλε παιχτη


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: testiculos on November 22, 2008, 19:44:29 pm
βαζω τισ σωστες συντεταγμενες για τισ υπολοιπες γωνιες, αλλα δεν ξερω πως θα επιλεξω την πχ κατω αριστερη γωνια του κομματιου(if(x==0&y==19&p.getShape()[Shape(0).lenght][0]==true&p.getColor()==Color.yellow)???. παρολα αυτα δεν προχοραει μετα τον μπλε παιχτη


Έχω μια υποψία οτι το y  είναι το πλήθος των στηλών και το x το πλήθος των γραμμών του board άρα για τον κίτρινο παίκτη ο έλεγχος θα πρέπει να περιλαμβάνει για x = 19-(πλήθος γραμμών του κομματιού-1) και y=0. Αντίστοιχα και για τους άλλους παίκτες.
Ας επιβεβαιώσει κάποιος...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: giannoulis on November 22, 2008, 19:51:00 pm
Όχι τα χ,ψ απ'οτι κατάλαβα είναι οι συντεταγμένες του σημείου [0,0] του πίνακα του σχήματος του κομματιού, καθώς το μετακινούμε στο μεγάλο πίνακα


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Fishler on November 22, 2008, 21:39:58 pm
private boolean checkFirstMove(Piece p, int x, int y) {

   if(x==0&y==0&p.getShape()[0][0]==true&p.getColor()==Color.blue)
   {true;
   }

else{
   return false;}

if(x==19&y==0&p.getShape()[shape.length-1][0]==true&p.getColor()==Color.yellow){
   return true;
   }

else{
   return false;}


if(x==19&y==19&p.getShape()[shape.length-1][shape[0].length-1]==true&p.getColor()==Color.red){
return true;
}

else{
return false;
}
if(x==0&y==19&p.getShape()[0][shape[0].length-1]==true&p.getColor()==Color.green){
   return true;
}

else{
return false;
}   
}
γιατι γιατι γιατι γιατι δεν τρεχει???? εε ε ε ε ε ε  ε ε? :-X ^pcsleep^ ^pcsleep^ ^pcsleep^ ^ex_shocked^ ^ex_shocked^ ^shocked^


και καμια ιδεα για τα υπολοιπα??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 22, 2008, 21:59:44 pm
private boolean checkFirstMove(Piece p, int x, int y) {

   if(x==0&y==0&p.getShape()[0][0]==true&p.getColor()==Color.blue)
   {true;
   }

else{
   return false;}

if(x==19&y==0&p.getShape()[shape.length-1][0]==true&p.getColor()==Color.yellow){
   return true;
   }

else{
   return false;}


if(x==19&y==19&p.getShape()[shape.length-1][shape[0].length-1]==true&p.getColor()==Color.red){
return true;
}

else{
return false;
}
if(x==0&y==19&p.getShape()[0][shape[0].length-1]==true&p.getColor()==Color.green){
   return true;
}

else{
return false;
}   
}
γιατι γιατι γιατι γιατι δεν τρεχει???? εε ε ε ε ε ε  ε ε? :-X ^pcsleep^ ^pcsleep^ ^pcsleep^ ^ex_shocked^ ^ex_shocked^ ^shocked^


και καμια ιδεα για τα υπολοιπα??

γιατι αμα το χρωμα του πολυομινου δεν ειναι το μπλε ας πουμε τοτε η συναρτηση θα επιστρεψει false χωρις να εχει ελεγξει για αλλο χρωμα

επομενως πρεπει να βγαλεις τα else{return false}

και να βαλεις απλα ενα return false στο τελος(τελευταια εντολη της συναρτησης...
δοκιμασε το

εχεις επισης λαθη και στις συνθηκες

για το κοκκινο ας πουμε:
 δεν πρεπει χ=19 αλλα χ+p.getDimensions()[0]-1==19 και ομοια το y......
                         


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 22, 2008, 23:59:18 pm
στις 2 τελευταίες μεθόδους (corners kai edges) από που εως που θα παίρνουμε τα όρια για τα κομμάτια και τα τετράγωνα του ταμπλώ;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 00:22:01 am
στις 2 τελευταίες μεθόδους (corners kai edges) από που εως που θα παίρνουμε τα όρια για τα κομμάτια και τα τετράγωνα του ταμπλώ;
Αναλόγως στην edges πάνω-κάτω-δεξιά-αριστερά, στην corners πάνω-αριστερά, πάνω-δεξιά, κάτω-δεξιά, κάτω-αριστερά (αν βέβαια υπάρχει "χώρος" και δεν ακουμπά το κουτάκι σε κάποιο όριο του ταμπλό).

Π.χ.για το κουτάκι με "τοπικές" συντεταγμένες [one][two], το από πάνω κουτάκι στο επίπεδο του ταμπλό θα είναι: [x+one-1][y+two].

Oμοίως για την edges π.χ. το ακροδεξιό του τετραγώνου [one][two] θα είναι [x+one+1][y+two+1].

Ίσως σε βολέψουν οι έτοιμες συναρτήσεις που έχει και αναφέρει στην εκφώνηση, αλλά δεν έχει και καμιά τρομερή διαφορά.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 23, 2008, 00:22:12 am
Επειδη εχω μπερδευτει με τα χ και ψ του ταμπλω. Οσο παμε δεξια μεγαλωνει το ψ και οσο παμε προς τα κατω μεγαλωνει το χ? Η το αντιθετο? Με (0,0) το πανω αριστερα γωνιακο κουτι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 00:23:24 am
Όπως το λες είναι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 23, 2008, 01:04:09 am
Μια ακομα ερωτηση οταν το τρεχω οσες συναρτησεις εχω υλοποιησει δουλευουν σωστα αλλα κολαει το παιχνιδι πατας δλδ κλικ και το παιρνει σε 3 δευτερολεπτα. Κανω κατι λαθος ?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: testiculos on November 23, 2008, 01:17:12 am
Στην παρουσίαση του τελευταίου εργαστηρίου στην τελευταία διαφάνεια....
είναι σωστό αυτό ή μήπως θα έπρεπε να λέει isUpperRightCorner?

Ουσιαστικά οι συναρτήσεις isLowerRightCorner, isUpperLeftCorner κλπ τι κάνουν?

H διαφάνεια που λέω είναι στην επισύναψη.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 23, 2008, 01:19:22 am
που είναι αυτές οι διαφάνειες; οεο;;!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: testiculos on November 23, 2008, 01:21:18 am
e-thmmy
Υλικό μαθήματος   Java: Οδηγός Java - Σημειώσεις Διδάσκοντος



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 23, 2008, 01:22:40 am
γκουντ.

η αρίθμηση του ταμπλώ (0,0) είναι κάτω αριστερά έτσι;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 01:24:07 am
Μια ακομα ερωτηση οταν το τρεχω οσες συναρτησεις εχω υλοποιησει δουλευουν σωστα αλλα κολαει το παιχνιδι πατας δλδ κλικ και το παιρνει σε 3 δευτερολεπτα. Κανω κατι λαθος ?
Τί να σου πω εμένα μου τρέχουν αμέσως :-\


γκουντ.

η αρίθμηση του ταμπλώ (0,0) είναι κάτω αριστερά έτσι;
Όχι, πάνω αριστερά είναι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 23, 2008, 01:28:04 am
Στην παρουσίαση του τελευταίου εργαστηρίου στην τελευταία διαφάνεια....
είναι σωστό αυτό ή μήπως θα έπρεπε να λέει isUpperRightCorner?

Ουσιαστικά οι συναρτήσεις isLowerRightCorner, isUpperLeftCorner κλπ τι κάνουν?

H διαφάνεια που λέω είναι στην επισύναψη.


Όχι, καλα είναι η isUpperLeftCorner(). Τα κομμάτια αυτά που είναι true έχουν πάνω αριστερές γωνίες 'ελεύθερες', δηλαδή μπορεί να τοποθετηθεί στο πάνω αριστερά απ'αυτές κομμάτι, ένα μπλε πολυόμινο.
Οι συναρτήσεις αυτές βρίσκουν τα κομμάτια τα οποία αποτελούν γωνίες ελεύθερες στα οποία μπορεί να τοποθετηθεί ένα πολυόμινο του ίδιου χρώματος.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 23, 2008, 02:01:43 am
Να σας πω, επειδή βαριέμαι να κοιτώ, τι ακριβώς κάνουν οι sLowerRightCorner, isUpperLeftCorner κλπ???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on November 23, 2008, 02:10:59 am
Να σας πω, επειδή βαριέμαι να κοιτώ, τι ακριβώς κάνουν οι sLowerRightCorner, isUpperLeftCorner κλπ???

Ανήκουν στην κλάση Piece, και παίρνουν ως είσοδο δύο integer.  Αν θεωρήσεις ότι το κάθε κομμάτι είναι ένας πίνακας 2 διαστάσεων, τότε τα ορίσματα είναι οι συντεταγμένες ενός τετραγώνου μέσα σ' αυτό το κομμάτι (π.χ. ορίσματα 0 και 0 αναφέρονται στο πάνω αριστερά τετράγωνο του κομματιού).  Αν αυτό το τετράγωνο περιέχει πάνω αριστερή γωνία χωρίς να μπλοκάρεται από άλλα τετράγωνα του ίδιου κομματιού, αν δηλαδή είναι ελεύθερη κορυφή, τότε επιστρέφει true.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 23, 2008, 02:55:54 am
private boolean checkFirstMove(Piece p, int x, int y) {

   if(x==0&y==0&p.getShape()[0][0]==true&p.getColor()==Color.blue)
   {true;
   }

else{
   return false;}

if(x==19&y==0&p.getShape()[shape.length-1][0]==true&p.getColor()==Color.yellow){
   return true;
   }

else{
   return false;}


if(x==19&y==19&p.getShape()[shape.length-1][shape[0].length-1]==true&p.getColor()==Color.red){
return true;
}

else{
return false;
}
if(x==0&y==19&p.getShape()[0][shape[0].length-1]==true&p.getColor()==Color.green){
   return true;
}

else{
return false;
}   
}
γιατι γιατι γιατι γιατι δεν τρεχει???? εε ε ε ε ε ε  ε ε? :-X ^pcsleep^ ^pcsleep^ ^pcsleep^ ^ex_shocked^ ^ex_shocked^ ^shocked^


και καμια ιδεα για τα υπολοιπα??

γιατι αμα το χρωμα του πολυομινου δεν ειναι το μπλε ας πουμε τοτε η συναρτηση θα επιστρεψει false χωρις να εχει ελεγξει για αλλο χρωμα

επομενως πρεπει να βγαλεις τα else{return false}

και να βαλεις απλα ενα return false στο τελος(τελευταια εντολη της συναρτησης...
δοκιμασε το

εχεις επισης λαθη και στις συνθηκες

για το κοκκινο ας πουμε:
 δεν πρεπει χ=19 αλλα χ+p.getDimensions()[0]-1==19 και ομοια το y......
                         
Δεν θα επρεπε να κανει ελεγχο και αν ειναι το πρωτο κομματι που χρησιμοποιειται, δηλαδη αν το inventory==21 ?
Επεισης, γινεται αντι για shape.length-1 μπορουμε να χρησιμοποιησουμε την getDimensions για να κανουμε την αντιστοιχη δουλεια, ε?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 03:10:49 am
Δεν θα επρεπε να κανει ελεγχο και αν ειναι το πρωτο κομματι που χρησιμοποιειται, δηλαδη αν το inventory==21 ?
Επεισης, γινεται αντι για shape.length-1 μπορουμε να χρησιμοποιησουμε την getDimensions για να κανουμε την αντιστοιχη δουλεια, ε?
Το αν είναι το πρώτο κομμάτι το ελέγχει από μόνο του στην isValidMove() ;)

Η "αντίστοιχη" της width (του χ) είναι η getDimensions()[0], ενώ της length (του y) η getDimensions()[1].


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 23, 2008, 03:23:09 am
Σωστα δεν το ειχα προσεξει! Θενξ!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on November 23, 2008, 03:24:29 am
Στην παρουσίαση του τελευταίου εργαστηρίου στην τελευταία διαφάνεια....
είναι σωστό αυτό ή μήπως θα έπρεπε να λέει isUpperRightCorner?

Ουσιαστικά οι συναρτήσεις isLowerRightCorner, isUpperLeftCorner κλπ τι κάνουν?

H διαφάνεια που λέω είναι στην επισύναψη.


Όχι, καλα είναι η isUpperLeftCorner(). Τα κομμάτια αυτά που είναι true έχουν πάνω αριστερές γωνίες 'ελεύθερες', δηλαδή μπορεί να τοποθετηθεί στο πάνω αριστερά απ'αυτές κομμάτι, ένα μπλε πολυόμινο.
Οι συναρτήσεις αυτές βρίσκουν τα κομμάτια τα οποία αποτελούν γωνίες ελεύθερες στα οποία μπορεί να τοποθετηθεί ένα πολυόμινο του ίδιου χρώματος.

απλά στο συγκεκριμένο κομμάτι της επισύναψης θα μπορούσε να είναι ΚΑΙ  η isUpperRightCorner() true γιατί και απο εκεί θα μπορούσε να μπει άλλο πολυόμινο.....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 23, 2008, 03:48:31 am
Ρε παιδια εχω μπερδευτει πολυ με τις upperleftcorner κτλ.. Θα ημουν πολυ απαιτητικος αν ζητουσα ενα παραδειγμα του τι πρεπει να κανουμε?  :-[ Ουσιαστικα δεν εχω κατανοησει τι κανουν αυτες οι συναρτησεις που μας δινει ετοιμες..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on November 23, 2008, 04:00:39 am
ένα παράδειγμα είναι η επισύναψη στο ποστ: http://www.thmmy.gr/smf/index.php?topic=27887.msg531627#msg531627
(οι διαφάνειες υπάρχουν στο ετημμυ)

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

όταν π.χ. το τετράγωνο έχει ελέυθερη την πάνω αριστερή γωνία(δηλαδή εκεί μπορεί να μπει άλλο κομμάτι) η isUpperLeftCorner θα επιστρέψει την τιμή true για το συγκεκριμένο τετράγωνο!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 23, 2008, 04:11:00 am
Νομιζω καταλαβα, απλα ετσι οπως βλεπω τα πολυονιμα, μονο 2 εχουν ελευθερες γωνιες. Αυτο που εχει ποσταρει ο stefos και το αναποδο Γ . Μου φαινεται λιγο περιεργο αν το καταλαβα σωστα...
Ο ελεγχος πρεπει να ειναι καπως ετσι:
if(isUpperLeftCorner==true&&board()
  • [y].getColor()==p.getColor())
    return true;

Ε???

(Η τελεια που βγαζει ειναι [χ] δεν ξερω γιατι το κανει αυτο)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on November 23, 2008, 04:14:34 am
κοίτα και γω αρχικά το είχα καταλάβει αρκετά αόριστα αλλά με βοήθησε αρκετά το ποστ του στέφου!!!

στην ουσία ψάχνε απλά γωνίες "διαθεσιμες"!!

:)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 23, 2008, 12:26:10 pm
Στην παρουσίαση του τελευταίου εργαστηρίου στην τελευταία διαφάνεια....
είναι σωστό αυτό ή μήπως θα έπρεπε να λέει isUpperRightCorner?

Ουσιαστικά οι συναρτήσεις isLowerRightCorner, isUpperLeftCorner κλπ τι κάνουν?

H διαφάνεια που λέω είναι στην επισύναψη.


Όχι, καλα είναι η isUpperLeftCorner(). Τα κομμάτια αυτά που είναι true έχουν πάνω αριστερές γωνίες 'ελεύθερες', δηλαδή μπορεί να τοποθετηθεί στο πάνω αριστερά απ'αυτές κομμάτι, ένα μπλε πολυόμινο.
Οι συναρτήσεις αυτές βρίσκουν τα κομμάτια τα οποία αποτελούν γωνίες ελεύθερες στα οποία μπορεί να τοποθετηθεί ένα πολυόμινο του ίδιου χρώματος.

απλά στο συγκεκριμένο κομμάτι της επισύναψης θα μπορούσε να είναι ΚΑΙ  η isUpperRightCorner() true γιατί και απο εκεί θα μπορούσε να μπει άλλο πολυόμινο.....
Μόνο το πάνω δεξιά κομμάτι θα μπορούσε να ναι true στην isUpperRightCorner()! Στην επισύναψη φαίνεται η isUpperLeftCorner() με true τα τετραγωνάκια που έχουν ελεύθερες τις upper left corners( :D) τους!

Αν και πιστεύω ότι είναι περιττό αυτό το ποστ...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: glika on November 23, 2008, 14:10:11 pm
να ρωτησω κατι? στην isTouchingEdges ποσες περιπτωσεις σας βγηκαν? γιατι εμενα μου βγηκαν 5 περιπτωσεις κ γενικα βγηκε λιγο μεγαλη η μεθοδος...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 23, 2008, 14:41:45 pm
να ρωτησω κατι? στην isTouchingEdges ποσες περιπτωσεις σας βγηκαν? γιατι εμενα μου βγηκαν 5 περιπτωσεις κ γενικα βγηκε λιγο μεγαλη η μεθοδος...

ετσι ειναι περιπου


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: glika on November 23, 2008, 15:00:26 pm
κατι αλλο... ενω εχω γραψει ακριβως τα ιδια για τα x κ y το κομματι δεν το δεχεται στα σημεια που ειναι y=0 η y=19... ενω τα δεχεται σε ολα τα x....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 23, 2008, 15:04:46 pm
για y=0 πρεπει να ελεγξεις τa board[][].getColor για το πανω κατω και δεξια κουτακι(οχι για αριστερα γιατι δεν υπαρχει εκει)

ομοια και για 19...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 23, 2008, 15:51:01 pm
παιδια να ρωτησω κατι για την hasOverlaps:

θελω να κανω τον εξης ελεγχο:
Αν το καποιο κουτακι που παω να τοποθετησω το πολυομινο εχει χρωμα(δλδ !=null)
το προβλημα μου ειναι πως καλεσω το το αντιστοιχο κουτακι...
(boar[][].getColor() ας πουμε????)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 23, 2008, 16:02:32 pm
διορθωση στο προηγουμενο post μου...
μαλλον θελει:
(board
  • [y].getColor()==null)...μαλλον...
Αν ειμαι λαθος ας με διορθωσει καποιος.

οπου ειναι το
  • ==[χ] δε ξερω γιατι το βγαζει ετσι


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: glika on November 23, 2008, 16:13:06 pm
αυτο κανω... δεν ξερω γιατι βγενει λαθος.... να ρωτησω κατι αλλο... αν αντι της board[][].getColor() χρησιμοποιησω το board[][].color ειναι λαθος? γιατι το δεχεται....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on November 23, 2008, 16:28:21 pm
Στην παρουσίαση του τελευταίου εργαστηρίου στην τελευταία διαφάνεια....
είναι σωστό αυτό ή μήπως θα έπρεπε να λέει isUpperRightCorner?

Ουσιαστικά οι συναρτήσεις isLowerRightCorner, isUpperLeftCorner κλπ τι κάνουν?

H διαφάνεια που λέω είναι στην επισύναψη.


Όχι, καλα είναι η isUpperLeftCorner(). Τα κομμάτια αυτά που είναι true έχουν πάνω αριστερές γωνίες 'ελεύθερες', δηλαδή μπορεί να τοποθετηθεί στο πάνω αριστερά απ'αυτές κομμάτι, ένα μπλε πολυόμινο.
Οι συναρτήσεις αυτές βρίσκουν τα κομμάτια τα οποία αποτελούν γωνίες ελεύθερες στα οποία μπορεί να τοποθετηθεί ένα πολυόμινο του ίδιου χρώματος.

απλά στο συγκεκριμένο κομμάτι της επισύναψης θα μπορούσε να είναι ΚΑΙ  η isUpperRightCorner() true γιατί και απο εκεί θα μπορούσε να μπει άλλο πολυόμινο.....
Μόνο το πάνω δεξιά κομμάτι θα μπορούσε να ναι true στην isUpperRightCorner()! Στην επισύναψη φαίνεται η isUpperLeftCorner() με true τα τετραγωνάκια που έχουν ελεύθερες τις upper left corners( :D) τους!

Αν και πιστεύω ότι είναι περιττό αυτό το ποστ...
ναι κ γω σε αυτό το τετραγωνάκι αναφερόμουν γιατί το έδειχνε και με βέλος... :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: fpsom on November 23, 2008, 16:28:50 pm
Απλά θα ήθελα να συνοψίσω μερικές κοινές απορίες που έχουν γίνει ως τώρα:

1. Αυτά που θα ελέγξουμε τελικά στην 1η εργασία είναι τα εξής:

α. ότι ο κώδικάς σας κάνει compile χωρίς λάθη,
β. ότι ο κώδικάς σας τρέχει σωστά - δηλαδή στο γραφικό περιβάλλον απεικονίζονται σωστά οι έγκυρες και οι μη έγκυρες θέσεις, και,
γ. ότι ο κώδικας που έχετε γράψει συμβαδίζει με αυτά που σκεφτόσασταν όταν τον γράφατε - αυτό περιμένουμε να το καταλάβουμε από τα σχόλια που πρέπει να γράψετε.

2. Με βάση τα προηγούμενα, είστε ελεύθεροι να χρησιμοποιήσετε ή όχι τις βοηθητικές συναρτήσεις (πχ is upperLeftCorner() κτλ), όπως και να κάνετε τις συναρτήσεις σας ανεξάρτητες ή όχι του αποτελέσματος των υπολοίπων. Όμως θα πρέπει να γράψετε σχετικά σχόλια τα οποία θα μας επιτρέψουν να καταλάβουμε ότι πράγματι η επιλογή σας (πχ να κάνετε τη συνάρτηση hasOverlaps() εξαρτημένη από το αποτέλεσμα της fitsTheBoard() ) ήταν συνειδητή, και όχι κάτι το οποίο απλά σας προέκυψε να δουλεύει σωστά.

3. Όπως έχετε σίγουρα αντιληφθεί, το 80% των συναρτήσεων είναι συνθήκες if. Σε καμία περίπτωση δεν σας ζητάμε να κάνετε optimized κώδικα για κόστος γραμμών, πλήθος μεταβλητών ή πολυπλοκότητα κώδικα. Για αυτό, και για να αποφύγετε πιθανά λάθη, είναι καλή ιδέα να χρησιμοποιήσετε πολλές μικρές συνθήκες παρά μία μεγάλη με πολλά && ή ||. (Για να μην υπάρξει κάποια παρεξήγηση, δεν είναι λάθος εάν έχετε μια μεγάλη συνθήκη, απλά καταθέτω μία πρόταση. Εάν θέλετε την ακολουθείτε, εάν δεν θέλετε... έχει καλώς  :))

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


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 23, 2008, 16:29:16 pm
κατι αλλο που δε καταλαβαινω και το συνειδητοποιω τωρα:
οταν παιρνω ενα κομματι και το παω να το τοποθετησω,
ο κερσορας μου σε ποιο σημειο του κομματιου "βλεπει"??,στι κεντρο του??
δλδ το χ και το ψ οταν τοποθετω το πολυομινο ειναι το κεντρο ή η ακρη του κομματιου???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 23, 2008, 16:35:42 pm
κατι αλλο που δε καταλαβαινω και το συνειδητοποιω τωρα:
οταν παιρνω ενα κομματι και το παω να το τοποθετησω,
ο κερσορας μου σε ποιο σημειο του κομματιου "βλεπει"??,στι κεντρο του??
δλδ το χ και το ψ οταν τοποθετω το πολυομινο ειναι το κεντρο ή η ακρη του κομματιου???

στο [0,0] του πολυομινου(πανω αριστερη γωνια)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 23, 2008, 16:55:24 pm
Μια απλη ερωτησουλα: Πως τρεχουμε το προγραμμα που φτιαξαμε?? :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on November 23, 2008, 16:56:57 pm
να ρωτησω κατι? στην isTouchingEdges ποσες περιπτωσεις σας βγηκαν? γιατι εμενα μου βγηκαν 5 περιπτωσεις κ γενικα βγηκε λιγο μεγαλη η μεθοδος...

ετσι ειναι περιπου

γιατί 5 περιπτώσεις?
εγώ έκανα 4 if αλλα μου κολλάει σε κάποιους συνδιασμούς σχημάτων...μήπως μπορεί κανείς να βοηθήσει?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 23, 2008, 17:04:37 pm
περιπτωση 1:
  αν το κουτακι που ελεγχεις βρισκεται στη πρωτη γραμμη του ταμπλο,δεν μπορεις να ελεγξεις το board[χ-1][] γιατι δεν υπαρχει
περιπτωση 2:
 αν το κουτακι που ελεγχεις βρισκεται στη 1η στηλη........board[][y-1].....
περιπτωση 3:
αν το κουτακι που ελεγχεις βρισκεται στη τελευταια στηλη.....
περιπτωση 4:
αν το κουτακι που ελεγχεις βρισκεται στη τελευταια γραμμη....
περιπτωση 5:
οπουδηποτε αλλου πρεπει να ελεγξεις και για τα 4 board[][]


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on November 23, 2008, 17:14:13 pm
περιπτωση 1:
  αν το κουτακι που ελεγχεις βρισκεται στη πρωτη γραμμη του ταμπλο,δεν μπορεις να ελεγξεις το board[χ-1][] γιατι δεν υπαρχει
περιπτωση 2:
 αν το κουτακι που ελεγχεις βρισκεται στη 1η στηλη........board[][y-1].....
περιπτωση 3:
αν το κουτακι που ελεγχεις βρισκεται στη τελευταια στηλη.....
περιπτωση 4:
αν το κουτακι που ελεγχεις βρισκεται στη τελευταια γραμμη....
περιπτωση 5:
οπουδηποτε αλλου πρεπει να ελεγξεις και για τα 4 board[][]

νομίζω ότι δε σε συμφέρει να κάνεις αυτό...
μπορείς πρώτα να δεις τι είδους γωνία είναι το κουτάκι σου.

αν ας πούμε είναι upper left τότε ελέγχεις αν βρίσκεται στην πρώτη γραμμή ή πρώτη στήλη του ταμπλό και αν δεν ισχύει αυτό τότε ελέγχεις απλά το κουτακι που βρίσκεται στη θέση [χ-1][ψ-1]...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 17:19:22 pm
Η pitsa έχει δίκιο (αν και αναφέρεσαι στην isTouchingCorners ενώ ο lekouras στην Edges). Με τον τρόπο σου πρέπει να κάνεις μέσα στις if πολλά if ακόμα (π.χ.αν είναι και στην τελευταία στήλη και στη τελευταία γραμμή;; Στην περίπτωση 3 θα ελέγξει και το κάτω τετράγωνο που είναι λάθος)

εγώ έκανα 4 if αλλα μου κολλάει σε κάποιους συνδιασμούς σχημάτων...μήπως μπορεί κανείς να βοηθήσει?
Τί περίπου έκανες; Αν θες στείλε pm


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: lekouras on November 23, 2008, 17:31:23 pm
δεν γινεται να ειναι και στην τελευταια γραμμη και στην τελευταια στηλη γιατι εκει θα εχει μπει το πρωτο πολυομινο του κοκκινου

επομενως εχει επιστρεψει ηδη η hasoverlaps false.

επισης θεωρω το να καλεις τις συναρτησεις is upper...corner() (στην istouchingedges()    )κανει το προγραμμα πιο αργο
ετσι πιστευω εγω τουλαχιστον.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 17:47:01 pm
Xm οκ εδώ μάλλον έχεις δίκιο (αλλά όπως και να'χει χρησιμοποιείς πολλά if ^poke^ :P )


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 23, 2008, 17:50:32 pm
Mε Give up όμως για τον κόκκινο παίχτη;  ::)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 17:54:32 pm
 :D :D είδες ο φοιτητής που εξετάζει όλες τις περιπτώσεις; :P   (καλά και εσύ όμως από τον πρώτο κιόλας γύρο give up? :D )


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 23, 2008, 17:55:59 pm
Ε αν μαζευτούμε 3 να το παίξουμε και δεν διαλέξουμε το κόκκινο...;
Λέμε τωρα!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 17:59:13 pm
Ok ok είπαμε έχεις δίκιο :P ούτε εγώ το έκανα έτσι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 23, 2008, 18:35:19 pm
Παιδιά με 9 περιπτώσεις εδώ είναι gg η κατάσταση :)

9 σύνολο πάντα, μπορείς να το κάνεις είτε με ξέχωρα if ή με "συζευγμένα" (το ένα μέσα στο άλλο)...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Fishler on November 23, 2008, 21:30:19 pm
Quote
επομενως πρεπει να βγαλεις τα else{return false}

και να βαλεις απλα ενα return false στο τελος(τελευταια εντολη της συναρτησης...
δοκιμασε το

 


δεν καταλαβαινω όμως τα if θα εχουν καποια σχεση μεταξύ τους;
δηλαδη ελεγχει το μπλε κ οκ το βαζει στην πανω αριστερη γωνια μετα μου επιστρεφει true λογικα δεν πρεπει να παει στο επομενο χρωμα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Fishler on November 23, 2008, 21:36:29 pm
private boolean checkFirstMove(Piece p, int x, int y) {

     if(x==0&&y==0&&p.getShape()[0][0]==true&&p.getColor()==Color.blue)
     {return true;}
      
     if(x+p.getDimensions()[0]-1==19&&y==0&&p.getShape()[p.getDimensions()[0]][0]==true&&p.getColor()==Color.yellow)
     {return true;}

     if(x+p.getDimensions()[0]-1==19&&y+p.getDimensions()[1]-1==19&&p.getShape()[p.getDimensions()[0]][p.getDimensions()[1]]==true&&p.getColor()==Color.red)
     {return true;}
    if(x==0&&y+p.getDimensions()[1]-1==19&&p.getShape()[0][p.getDimensions()[1]]==true&&p.getColor()==Color.green)
   
     {return true;}
   
   return false;
   }

που ειναι το λαθος ρε παιδια??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 23, 2008, 21:44:48 pm
Στο yellow. Είναι p.getShape()[p.getDimensions()[0]-1][0]

Ομοίως και στα άλλα χρώματα, στα p.getShape()


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Fishler on November 23, 2008, 22:41:05 pm
να σαι καλα φιλε μου!!!!σε ευχαριστω πολυ!!! ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Toy Tears on November 24, 2008, 23:55:13 pm
Στην isTouchingCorners εχω κάνει αυτο και δεν τρέχει...
HEEEEEELLLLPPP...Thanx :)


private boolean isTouchingCorners(Piece p, int x, int y) {
     
     
        for(int i=0; i<p.getDimensions()[0]; i++){
            for(int j=0; j<p.getDimensions()[1]; j++){
               
            if(p.getShape()[j]){
                if (p.isLowerLeftCorner(i, j)==true && (board[x+i+1][y+j-1].getColor()==p.getColor())) return true;
             
                if(p.isLowerRightCorner(i, j)==true && (board[x+i+1][y+j+1].getColor()==p.getColor())) return true;
             
                if(p.isUpperLeftCorner(i, j)==true && (board[x+i-1][y+j-1].getColor()==p.getColor())) return true;
             
                if(p.isUpperRightCorner(i, j)==true && (board[x+i-1][y+j+1].getColor()==p.getColor())) return true;
               
            }
            }
        }
        return false;
    }


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 25, 2008, 01:01:52 am
Μηπως ξεχασες το i?  στην getshape()?  Το δοκιμασα κιολας με i κι εχει prob.
βασικα αυτο που ποσταρες νομιζω ειναι το 1/4 της touching edges
θελει συνθηκες αναλογα με τις τιμες που παιρνει το χ και το ψ


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 25, 2008, 02:04:28 am
edit


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 03:38:48 am
Θα πω μια ιδεα για την EDGES που και γω την ειδα απο αλλου και δεν ξερω αν εχει αναφερθει..
Αντι να κοιταμε σε ποια κατηγορια ανοικει, μπορουμε να ελεγχουμε σε ποια δεν ανοικει και να κανουμε τους αντιστοιχους ελεγχους... Εστω δλδ οτι το κομματι ειναι στην πανω-πανω γραμμη...τοτε δεν μπορουμε να ελεγξουμε τα κουτακια απο πανω..ενω αν δεν ειναι τοτε μπορουμε...

Οποτε ελεγχουμε που θα μπει το κομματι και εχουμε τις εξης περιπτωσεις
1)δεν μπαινει τερμα πανω-->ελεγχουμε τα πανω
2)δεν μπαινει τερμα κατω-->ελεγχουμε τα κατω
3)δεν μπαινει τερμα δεξια-->ελεγχουμε τα δεξια
4)δεν μπαινει τερμα αριστερα-->ελεγχουμε τα αριστερα

δεν ειμαι σιγουρος για το πως υλοποιειται αυτος ο κωδικας αλλα σαν σκεψη ειναι σωστη(ελπιζω)
και ο ελεγχος σε καθε περιπτωση θα επιστρεφει μονο τρου και αν κανεις δεν ισχυει στο τελος θα εχει κι ενα φολσ


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 03:44:41 am
και στο καπακι εχω μια απορια για την CORNERS..οι συναρτησεις που μας δινουν ελεγχουν αν το καθε κομματι ειναι γωνια η αν η γωνια του κομματιου ειναι γωνια??
Δλδ αν η σου βγει οτι ειναι πανω δεξια γωνια ενα κουτακι θα χρειαστει ελεγχος μονο για την πανω δεξια γωνια του κουτιου η και για την πανω αριστερη??(για τις κατω νομιζω σιγουρα δεν χρειαζεται ετσι??)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 25, 2008, 14:32:45 pm
ρε παιδια...αρχισε ο eclipse να μου βγαζει το εξης error:
this method must return a resault of type boolean

το οποιο κατλαβαινω τι σημαινει αλλα δε καταλαβαινω γιατι το βγαζει εφοσον τα return μου ειναι boolean
παρατηρησα οτι μου το βγαζει οταν τα true ή false ειναι μεσα σε συζευμενα if ή for
αλλα νομιζω δεν ειναι λογικο...

ειναι????


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on November 25, 2008, 14:35:07 pm
ρε παιδια...αρχισε ο eclipse να μου βγαζει το εξης error:
this method must return a resault of type boolean

το οποιο κατλαβαινω τι σημαινει αλλα δε καταλαβαινω γιατι το βγαζει εφοσον τα return μου ειναι boolean
παρατηρησα οτι μου το βγαζει οταν τα true ή false ειναι μεσα σε συζευμενα if ή for
αλλα νομιζω δεν ειναι λογικο...

ειναι????

Βαλε και ενα

return false;

απέξω

αν μεσα στα if σου εχεις

return true;

και δε θα το πεταει.


Αλλιως, το αναποδο. :)



α

581


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 25, 2008, 14:43:41 pm
Εχει κάνει κανείς την fitsTheBoard ???

private boolean fitsTheBoard (Piece p, int x, int y) {
   if (x>=0 && y>=0 && x<=20-(p.getDimensions()[0]-1) && y<=20-(p.getDimensions()[1]-1)){   
     return true;}
   return false;
  }

Είναι σωστή έτσι???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on November 25, 2008, 14:49:17 pm
Εχω την εντυπσωση οτι τα -1 μεσα στις παρενθεσεις δε χρειαζονται
απο τη στιγμη μου κανεις x<== και y>=



α

582


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on November 25, 2008, 14:53:18 pm
το getDimension sou deinei tin diastasi 3x3 kai den ipologizei oti ksekina apo to 0


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on November 25, 2008, 15:03:10 pm
Οκ..

παρτο πρακτικα

πες οτι εχεις ενα πινακα 2Χ2

στον ελεγχο κανεις

x<=20-2+1

ara

x<=19

που ειναι λαθος

γιατι 0<=x<=19

και η δευτερη γραμμη του πολυομινου θα βγει εκτος ταμπλο
και εσυ θα εχεις οτι δε σε πειραζει να ειναι εξω



α

583


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 25, 2008, 15:25:27 pm
προβλημα:
εχω και καλα υλοποιησει το κωδικα μου σ ολες τις μεθοδους και τρεχω το προγραμμα για να τοο τσεκαρω:
η chekingFirstmove τρεχει μια χαρα
βαζω το μπλε....
βαζω το κιτρινο...
βαζω το κοκκινο...
βαζω το πρασινο....
(οι ελεγχοι για τις γωνιες φαινεται να ειναι σωστοι)

αλλα μολις βαζω το πρασινο(και τελευταιο) το output του eclipse κοκκινιζει και δε συνεχιζει στην επομενη κινηση...
ξερουμε τι μπορει να φταιει???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: perukas on November 25, 2008, 15:34:14 pm
νομιζω πως εντοπισα το λαθος μου
και πρεπει  να ειναι στην edges:
μπορει καποιος να μου στειλει pm με μια υλοποιηση της edges??

ξερω οτι δεν ειναι αποδεκτο αυτο και συγχωρηστε με αλλα δε μπορω να την υλοποιησω με τιποτα


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 16:10:36 pm
Εχει κάνει κανείς την fitsTheBoard ???

private boolean fitsTheBoard (Piece p, int x, int y) {
   if (x>=0 && y>=0 && x<=20-(p.getDimensions()[0]-1) && y<=20-(p.getDimensions()[1]-1)){   
     return true;}
   return false;
  }

Είναι σωστή έτσι???

αυτοι οι ελεγχοι χρειαζονται??αφου δεν μπορεις να επιλεξεις αρνητικα χ και Υ εφοσον ειναι εκτος του μπορντ..λεω εγω τωρα.αν λεω μπουρδες διορθωστε με


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on November 25, 2008, 16:22:35 pm
αυτοι οι ελεγχοι χρειαζονται??αφου δεν μπορεις να επιλεξεις αρνητικα χ και Υ εφοσον ειναι εκτος του μπορντ..λεω εγω τωρα.αν λεω μπουρδες διορθωστε με

Χρειάζονται...  Δεν μπορείς βέβαια να επιλέξεις αρνητικό x και y με το ποντίκι, αλλά αν σε επόμενο κομμάτι της εργασίας το πρόγραμμα διαλέγει κινήσεις, και προσπαθήσει να βάλει το κομμάτι με x>0 ή y<0;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 16:40:19 pm
χμμ δεν ειμαι σιγουρος αν καταλαβα τι ακριβως εννοεις αλλα παντα το κομματι θα μπαινει σε καποιο σημειο και μετα σε ολα τα γυρω κουτακια που θα εχουν μεγαλυτερο χ και Υ..αλλα επαναλαμβανω οτι δεν ειμαι σιγουρος τι εννοεις γι'αυτο αν μπορουσες να το ξαναπεις λιγο διαφορετικα θα με βοηθουσες πολυ, γιατι εχω ενα αντιστοιχο προβλημα αλλα απο την αλλη μερια (χ,Υ>19 :o ) και δεν ξερω τι να κανω.. :-\


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 17:03:16 pm
και για να γινω πιο συγκεκριμενος εχς βαλει την συνθηκη i+x<width για να ελεγχω αν το εκαστοτε κομματι βρισκεται στην τερμα δεξια στηλη του μπορντ και αντιστοιχη συνθηκη για την τερμα κατω γραμμη.Οταν ομως πλησιαζω το κομματι στα ακρα, εκτος του οτι δεν μπορω να το βαλω στο τερμα, η κονσολα μου βγαζει ενα σωρο σφαλματα και ολα σε συναρτησεις που δεν εχουν να κανουν με τις δικες μας, αλλα σε κατι συναρτησεις για να παιρνει το βορδ το χρωμα του πις και κατι τετοια...αν εχει καποιος καποια ιδεα η νομιζει οτι μπορει να βοηθησει θα τον ευχαριστουσα ιδιαιτερα  :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 25, 2008, 20:51:42 pm
ρε παιδιά έχω φτιάξει μια για το overlap αλλά δουλεύει μόνο στο μπλέ! Δηλαδή όταν επικαλύπτεται και το ταμπλώ είναι μπλε τότε μόνο μαυρίζει η κίνηση! τι σκατά μπορεί να φταίει;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on November 25, 2008, 21:40:35 pm
χμμ δεν ειμαι σιγουρος αν καταλαβα τι ακριβως εννοεις αλλα παντα το κομματι θα μπαινει σε καποιο σημειο και μετα σε ολα τα γυρω κουτακια που θα εχουν μεγαλυτερο χ και Υ..αλλα επαναλαμβανω οτι δεν ειμαι σιγουρος τι εννοεις γι'αυτο αν μπορουσες να το ξαναπεις λιγο διαφορετικα θα με βοηθουσες πολυ, γιατι εχω ενα αντιστοιχο προβλημα αλλα απο την αλλη μερια (χ,Υ>19 :o ) και δεν ξερω τι να κανω.. :-\
Ο Wade εννοεί πως όταν θα φτιάξουμε την ΑΙ ενός εικονικού παίκτη, εκείνος θα δίνει συντεταγμένες μέσω συναρτήσεων, και τπτ δεν τον εμποδίζει να δίνει (π.χ. από κάποιο λάθος στον προγραμματισμό του) τιμές του Χ και Υ <0 ή >19. Δεν έχει ποντίκι να τον περιορίζει. Πρέπει να ελέγχεις αν δίνει τέτοιες αντικανονικές τιμές (αναφέρθηκε και στο εργαστήριο). Και εγώ αρχικά έτσι την είχα πατήσει, ξεχνόντας ότι αργότερα θα φτιάξουμε ΑΙ παίκτη. Ευτυχώς δεν είναι τπτ να βάλεις να κάνει και αυτόν τον έλεγχο.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 22:58:53 pm
α ναι σωστα και γω το ειχα ξεχασει  ;D  θενκς για την διευκρινηση!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: NuclearV on November 25, 2008, 23:02:44 pm
(Ντροπη και αισχος το ξερω) Ειμαι μεγαλυετρο ετος και δεν εχω ιδεα απο java ! Και με οτι εμαθα απ'τα εργαστηρια δε βλεπω να την παλευω με την εργασια ! Θα θελα καποιο καλο παιδι να μου τη δωσει τουλαχιστον να τη μελετησω πριν την κανω παλι εντελως μονος...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 25, 2008, 23:10:14 pm
Χευ παιδιά. Συγκεντρωθείτε.

(Ντροπη και αισχος το ξερω) Ειμαι μεγαλυετρο ετος και δεν εχω ιδεα απο java ! Και με οτι εμαθα απ'τα εργαστηρια δε βλεπω να την παλευω με την εργασια ! Θα θελα καποιο καλο παιδι να μου τη δωσει τουλαχιστον να τη μελετησω πριν την κανω παλι εντελως μονος...
Είμαι σίγουρος ότι μπορείς να το κάνεις. Ακόμα και η γιαγιά μου μπορεί να την κάνει αν κάτσει και συγκεντρωθεί. Έχεις τη λογική , οποιοσδήποτε μπορεί να σκεφτεί τη λογική του προβλήματος, οπότε το μόνο που σου μένει είναι να το μετουσιώσεις σε java. Πάρε τα πράγματα little by little, με ψυχραιμία και μέθοδο και είμαι σίγουρος ότι θα την κάνεις.

Αν όμως την έπιασες τώρα, μια μέρα πριν τη διωρία, τότε μη λες "δεν την παλεύω" υποτιμώντας τη νοημοσύνη σου, απλά "είμαι τεμπέλης και θέλω κάποιου την εργασία" και θα σου τη δώσω ευχαρίστως :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 25, 2008, 23:13:43 pm
Βασικα η εργασια σπαει πουτσες! Εμενα μου εχει μεινει η touching edges και η touching corners οι οποιες φυσικα αν βρεις πως δουλευει η μια εχεις αυτοματα και την αλλη. Προσπαθησα χθες 6 ωρες και δε καταφερα να την κανω να δουλεψει σωστα τωρα αρχισα πριν λιγο ξανα αντε να δουμε.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on November 25, 2008, 23:16:06 pm
Βασικα η εργασια σπαει πουτσες! Εμενα μου εχει μεινει η touching edges και η touching corners οι οποιες φυσικα αν βρεις πως δουλευει η μια εχεις αυτοματα και την αλλη. Προσπαθησα χθες 6 ωρες και δε καταφερα να την κανω να δουλεψει σωστα τωρα αρχισα πριν λιγο ξανα αντε να δουμε.
ακολούθα τις αρχές του τμηματικού προγραμματισμού.

Σπάσε το πρόβλημα σε ανεξάρτητα υποπροβλήματα, και ΤΕΣΤΑΡΕ κάθε λύση για το υποπρόβλημα ξεχωριστά. Μετά προχώρα στο επόμενο. Να πως λύντονται οι μεγάλες εργασίες :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 25, 2008, 23:24:02 pm
θελω να ρωτησω αν τα σχολεια μπορουμε να τα γραψουνε σε ελληνικα η υπαρχει περιπτωση να μην τα αναγνωριζει ο εκλιψ και στην εργασια που θα στειλουμε να δειχνει κουτακια??  :???:


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 25, 2008, 23:35:28 pm
Βασικα η εργασια σπαει πουτσες! Εμενα μου εχει μεινει η touching edges και η touching corners οι οποιες φυσικα αν βρεις πως δουλευει η μια εχεις αυτοματα και την αλλη. Προσπαθησα χθες 6 ωρες και δε καταφερα να την κανω να δουλεψει σωστα τωρα αρχισα πριν λιγο ξανα αντε να δουμε.

Βασικα το προβλημα ειναι οτι πολλες φορες σκεφτομαστε πολυπλοκα! Αυτο ηταν και το δικο μου


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on November 26, 2008, 01:43:52 am
θελω να ρωτησω αν τα σχολεια μπορουμε να τα γραψουνε σε ελληνικα η υπαρχει περιπτωση να μην τα αναγνωριζει ο εκλιψ και στην εργασια που θα στειλουμε να δειχνει κουτακια??  :???:
ta sxolia tha ta grapseis opws ta exei grapsei kai i vivian stin ergasia...
dld se greeklish...fovasai mipws den mporoun na ta katalavoun??? :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 26, 2008, 02:09:52 am
χμμ βασικά αυτό που φοβάμαι είναι αντί για ελληνικά να τους εμφανίσει τα γνωστά απίστευτα που βγάζει όταν κατί δεν πάει καλα :D όχι τπτ άλλο...κρίμα ο κόπος να βάζω και τόνους  :(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ~GiA~ on November 26, 2008, 02:23:00 am
greekenglish !! για σιγουρια θα ελεγα!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: st0up on November 26, 2008, 12:51:39 pm
Κ εγω που τα εγραψα στα ελληνικα θελετε να μου πειτε οτι εκανα αδικο κοπο και πρεπει να τα ξαναγραψω σε greeklish???
OOOOOXIIIIIII!!! >:(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: PallasFTW on November 26, 2008, 14:50:06 pm
εγω στο google εβαλα keyword greek to greeklish και μου εβγαλε ενα πολυ καλο site για να κανει την βρομικη δουλεια ;D translatum κατι νομιζω το λεγανε..οποιος λοιπον εχει γραψει σε ελληνικα τα σχολια ειναι μονο μερικα ctrl+c ctrl+v για να τα εχει και σε greeklish ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: mysterious on November 26, 2008, 15:10:28 pm
Καλά μόνο σε εμένα φαίνεται πιο εύκολη η πληκτρολόγηση στα ελληνικά?
Απορώ γιατί θεωρούνται τα greeklish πιο ευκολα.

Μου είναι πολύ κουρατικό να γραφω σε greeklish, θα τα γράψω στα ελληνικά και ότι γίνει.
Άλλωστε ζητάνε και στοιχεία επικοινωνίας. οπότε πιστεύω αν υπάρξει κάποιο πρόβλημα θα ενημερώσουν.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: anonymous-root on November 26, 2008, 15:18:27 pm
Καλά μόνο σε εμένα φαίνεται πιο εύκολη η πληκτρολόγηση στα ελληνικά?
Απορώ γιατί θεωρούνται τα greeklish πιο ευκολα.

Μου είναι πολύ κουρατικό να γραφω σε greeklish, θα τα γράψω στα ελληνικά και ότι γίνει.
Άλλωστε ζητάνε και στοιχεία επικοινωνίας. οπότε πιστεύω αν υπάρξει κάποιο πρόβλημα θα ενημερώσουν.


όπως βολεύει τον καθένα..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 15:55:20 pm
Παιδια ολοι οι πινακες που χρησιμποιουμε εχουν πρωτα το y και μετα το x  δηλαδη board[y]x] shape[y]x] κτλ... Ε??
Μαλλον γραφω μπουρδες, απλα εχω μπερδευτει. Ποιες ειναι οι συντεταγμενες της getShape που χρησιμοποιουμε για την checkFirstMove πχ??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 17:13:07 pm
HELP!!!  :(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 26, 2008, 17:26:00 pm
Όχι! είναι [x ][y].
 x=γραμμές και y=στήλες!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 17:43:46 pm
Στον board ομως ειναι χ στηλες y γραμμες ετσι???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on November 26, 2008, 17:46:20 pm
Μη μπερδεύεσαι! Παντού [χ][y] είναι!



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 18:25:21 pm
Εννοω x ειναι ο πανω οριζοντιος αξονας του board και y  ο καθετος αριστερος ετσι?? Εχω μπερδευτει λιγακι!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 18:26:49 pm
greekenglish !! για σιγουρια θα ελεγα!
Μπορείς πάντα να βαλεις Greenglish  και μεσα στο .zip να βαλεις και ενα .txt / .doc  όπου να δίνεις πιο αναλυτικες πληροφοριες για την κάθε συναρτηση και στα Ελληνικά,
Εγω παντως έτσι θα κανω^^


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 18:31:48 pm
Εννοω x ειναι ο πανω οριζοντιος αξονας του board και y  ο καθετος αριστερος ετσι?? Εχω μπερδευτει λιγακι!

dude.. Ετσι:


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: chili_harry on November 26, 2008, 18:34:39 pm
Όταν τρέχω το πρόγραμμα παίζει συνέχεια ο μπλε παίκτης και φαίνεται ότι οι κινήσεις του είναι σωστές.. Αλλά παίζει ΜΟΝΟ αυτός..
Έχει κανείς καμιά ιδέα για το τι συμβαίνει?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Grecs on November 26, 2008, 18:36:33 pm
Ανεβαζουμε μονο τα .java αρχεια που εχουμε τροποποιησει?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 18:36:48 pm
Μπορεί μηπως καποιος να με διαφωτίσει τι κανω λαθος εδω?
Ολα τ'αλλα οκ, αλλα μολις βαζω την isTouchingCorners μες τον ελεγχο ο υπολογιστης μου κανει λες κ είδε γυμνη Motherboard με ζαρτιερες


Quote
  private boolean isTouchingCorners(Piece p, int x, int y) {
      
     int i,j;
     int n=p.getDimensions()[1];
     int m=p.getDimensions()[0];
    
     for (i=0;i<n;i++)
       for (j=0;j<m;j++)
       {
                            
          if(p.isLowerLeftCorner(i,j))
            if (board[x-i][y+j].color!=null)
               return true;
          if(p.isLowerRightCorner(i,j))
            if (board[x+i][y+j].color!=null)
               return true;
          if(p.isUpperLeftCorner(i,j))
            if (board[x-i][y-j].color!=null)
               return true;
          if(p.isUpperRightCorner(i,j))
            if (board[x+i][y-j].color!=null)
                return true;
       }    
     return false;    
    
    
    
  }


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 18:39:04 pm
Όταν τρέχω το πρόγραμμα παίζει συνέχεια ο μπλε παίκτης και φαίνεται ότι οι κινήσεις του είναι σωστές.. Αλλά παίζει ΜΟΝΟ αυτός..
Έχει κανείς καμιά ιδέα για το τι συμβαίνει?
2 pragmata:
-Κοιτα αν ειναι σωστη η checkFirstMove
-Kοιτα αν ειναι σωστά τα if σου μες την isValidMove

το χα παθει κ εγω..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 18:40:35 pm
Εννοω x ειναι ο πανω οριζοντιος αξονας του board και y  ο καθετος αριστερος ετσι?? Εχω μπερδευτει λιγακι!

dude.. Ετσι:
Σε ευχαριστω και εσενα και τον stefo, απλα καποιος βοηθος στο εργαστηριο μου τα ειπε αναποδα, και αν και μου φανηκε παραξενο τον ακουσα και μεχρι τωρα επερνα αναποδα τους αξονες και μου γα@@θηκε το προγραμμα!!! Δεν ξερω αν με νιωθεις!!  :'(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Jalk on November 26, 2008, 19:12:24 pm
Ρε παιδια...με το που βαζω την HasOverLaps στον κωδικα...κολλαει μετά την πρώτη κινηση του πρασινου, ενω πριν την βαλω με αφηνει να συνεχισω κανονικα  :o  Πως γενιν ατο? (οπως λεει κι ο ογκουνσοτο)

Code:
private boolean hasOverlaps (Piece p, int x, int y) 
{
int i;
int j;
boolean check=true;
for (i=0;i<p.getDimensions()[0];i++)
for (j=0;j<p.getDimensions()[1];j++)
if (p.getShape()[i][j]==true)
if (board[x+i][x+j]==null)
check=false;
else check=true;

return check; 
}


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 19:19:38 pm
Ρε παιδια...με το που βαζω την HasOverLaps στον κωδικα...κολλαει μετά την πρώτη κινηση του πρασινου, ενω πριν την βαλω με αφηνει να συνεχισω κανονικα  :o  Πως γενιν ατο? (οπως λεει κι ο ογκουνσοτο)

Code:
private boolean hasOverlaps (Piece p, int x, int y) 
{
 ....
 (board[x+i][x+j]==null)
check=false;
else check=true;

return check; 
}

- replace board[x+i][x+j]==null    me    board[x+i][y+j].getcolor()==null



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Jalk on November 26, 2008, 21:04:54 pm
Μπορεί μηπως καποιος να με διαφωτίσει τι κανω λαθος εδω?
Ολα τ'αλλα οκ, αλλα μολις βαζω την isTouchingCorners μες τον ελεγχο ο υπολογιστης μου κανει λες κ είδε γυμνη Motherboard με ζαρτιερες


Quote
  private boolean isTouchingCorners(Piece p, int x, int y) {
      
     int i,j;
     int n=p.getDimensions()[1];
     int m=p.getDimensions()[0];
    
     for (i=0;i<n;i++)
       for (j=0;j<m;j++)
       {
                            
          if(p.isLowerLeftCorner(i,j))
            if (board[x-i][y+j].color!=null)
               return true;
          if(p.isLowerRightCorner(i,j))
            if (board[x+i][y+j].color!=null)
               return true;
          if(p.isUpperLeftCorner(i,j))
            if (board[x-i][y-j].color!=null)
               return true;
          if(p.isUpperRightCorner(i,j))
            if (board[x+i][y-j].color!=null)
                return true;
       }    
     return false;    
    
    
    
  }

Κι εγω τωρα την ξεκιναω, αλλα νομιζω οτι ειναι λαθος να ελεγχεις αν το χρωμα του διαγωνιου κελιου ειναι null.
Πρεπει να ελεγχεις αν το χρωμα του διαγωνιου κελιου ειναι ιδιο με το χρωμα του piece...
Καποιος που την εχει κανει ας με επιβεβαιωσει/διαψευσει παρακαλω.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 26, 2008, 21:27:11 pm

Κι εγω τωρα την ξεκιναω, αλλα νομιζω οτι ειναι λαθος να ελεγχεις αν το χρωμα του διαγωνιου κελιου ειναι null.
Πρεπει να ελεγχεις αν το χρωμα του διαγωνιου κελιου ειναι ιδιο με το χρωμα του piece...
Καποιος που την εχει κανει ας με επιβεβαιωσει/διαψευσει παρακαλω.
ναι οντως, πρεπει να "κολλαει" μονο στις γωνιες του δικού του χρωματος.. οουυυυπς ^^



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: adianohtos on November 26, 2008, 22:18:00 pm
βαζω ολα τα τα firstMoves των παιχτων ,κ μετα δεν περναει στον μπλε,απλα μου αφηνει στο Mouse το ιδιο κομματι που παιχτηκε τελευταιο (το πρασινο δλδ) αλλα μαυρισμενο....ξερει κανεις τι παιζει...?help plz  :(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Jalk on November 26, 2008, 22:44:43 pm
βαζω ολα τα τα firstMoves των παιχτων ,κ μετα δεν περναει στον μπλε,απλα μου αφηνει στο Mouse το ιδιο κομματι που παιχτηκε τελευταιο (το πρασινο δλδ) αλλα μαυρισμενο....ξερει κανεις τι παιζει...?help plz  :(

Ειχα το ιδιο προβλημα...κοιτα λιγο πιο πανω σε αυτη τη σελιδα..


Ακυρο....Τωρα ξαναεχω το ιδιο προβλημα...μονο που το προκαλει η isTouchingCorners...

Αν υπαρχει καποιος που την εκανε, να μου πει να του τη στειλω, μπας και καταλαβει που ειναι το λαθος, γιατι δεν το βρισκω... :o


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Jalk on November 26, 2008, 23:26:50 pm
Δεν βλεπω κινιση, οποτε την ποσταρω αντιδεοντολογικα (εδω γελαμε) εδω...

Code:
private boolean isTouchingCorners(Piece p, int x, int y) 
{
int i;
int k;
boolean check=false;
for (i=0;i<p.getDimensions()[0];i++)
for (k=0;k<p.getDimensions()[1];k++)
if (p.getShape()[i][k]==true)
{
if (x<1&&y>0&&x<length-1&&y<width-1)
if (p.isLowerLeftCorner(i,k)==true)
if (board[x+i][y-k].getColor()==p.getColor())
check=true;
if (p.isLowerRightCorner(i,k))
if (board[x+i][y+k].getColor()==p.getColor())
check=true;
if (y<1&&x>0&&x<length-1&&y<width-1)
if (p.isLowerRightCorner(i,k))
if (board[x+i][y+k].getColor()==p.getColor())
check=true;
if (p.isUpperRightCorner(i,k))
if (board[x-i][y+k].getColor()==p.getColor())
check=true;
if (y>0&&x>0&&x==length-1&&y<width-1)
if (p.isUpperRightCorner(i,k))
if (board[x-i][y+k].getColor()==p.getColor())
check=true;
if (p.isUpperLeftCorner(i,k))
if (board[x-i][y-k].getColor()==p.getColor())
check=true;
if (y>0&&x>0&&x<length-1&&y==width-1)
if (p.isLowerLeftCorner(i,k)==true)
if (board[x+i][y-k].getColor()==p.getColor())
check=true;
if (p.isUpperLeftCorner(i,k))
if (board[x-i][y-k].getColor()==p.getColor())
check=true;
if (y>0&&x>0&&x<length-1&&y<width-1)
if (p.isLowerLeftCorner(i,k)==true)
if (board[x+i][y-k].getColor()==p.getColor())
check=true;
if (p.isLowerRightCorner(i,k))
if (board[x+i][y+k].getColor()==p.getColor())
check=true;
if (p.isUpperRightCorner(i,k))
if (board[x-i][y+k].getColor()==p.getColor())
check=true;
if (p.isUpperLeftCorner(i,k))
if (board[x-i][y-k].getColor()==p.getColor())
check=true;
}
return check;
}


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: GrEaSeR_ on November 27, 2008, 01:05:18 am
Κάποιος Πουλης Δημητριος εδω??? plz pm me??
Προφανως καναμε 2 διαφορετικες εργασιες και ανεβασαμε και οι δυo :/

Anyway  αν δεις αυτο το μηνυμα, έστειλα την δική μου με e-mail οποτε καταγρλαφηκε η δικη σου στον server..  αν ετσι οντως δουλευει το συστημα  so no worries ;)
kai an oi omades isxyoun kai gia tin epomeni ergasia lemme know 8)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Kargas on December 01, 2008, 15:28:01 pm
re paides vgike h 2h ergasia kai leei oti pianei 0.5 monades? den einai liges gia toso kopo? :S


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 09, 2008, 02:01:41 am
Απορία:
    2η Εργασία

* Είναι απαραίτητο να υλοποιήσουμε το interface MySet στην κλάση MySetXXXX-XXXX ?

* Αντ' αυτού μπορούμε να χρησιμοποιήσουμε την κλάση Set του java.util.Set που έχει ήδη υλοποιημένες τις ίδιες μεθόδους?

* Παρεμπιπτόντως το όνομα MySetXXXX-XXXX δεν το δέχεται σαν όνομα κλάσης αφού ο χαρακτήρας - δεν είναι εγκυρος. Υποθέτω χρησιμοποιούμε _ ετσί? Κάνω λάθος?

* Σελ 3 εκφώνησης: "Στον πίνακα δεν έχει νόημα πλέον να μιλάμε για Pieces, αλλά είναι απλώς ένας πίνακας από Boxes διαφόρων χρωμάτων".
Έπομένως φαντάζομαι πως δεν χρησιμοποιούμε τις μεθόδους isUpperLeftCorner κτλ. αφού είναι συναρτήσεις μέλη της Piece. Θα χρειαστεί δηλαδή να γράψουμε συναρτήσεις για την Board που να εντοπίζουν γωνίες, θα χρησιμοποιήσουμε παρόμοιο ή ίδιο κώδικα με τις isUpperLeftCorner κτλ. ή υπάρχει τρόπος να χρησιμοποιήσουμε τις συναρτήσεις της Piece κατευθείαν στη μέθοδο scanTheBoard ?

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


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 09, 2008, 15:44:18 pm
*ναι, γιατί έτσι το ζητάει. Ενδεχομένως να θέλει να ελέγξει αν ξέρεις τι είναι interface και πώς υλοποιείται

*βλέπε στο πάνω. Παρεμπιπτόντως, ο κώδικας των συγκεκριμένων συναρτήσεων δεν είναι πάνω από 5 γραμμές στη χειρότερη περίπτωση. Είναι το πιο εύκολο κομμάτι της άσκησης νομίζω.

*ναι ούτε εμένα το δέχτηκε, λογικά ισχύει αυτό που λες.

*Νομίζω μπορούμε απλά να ξεχάσουμε τις συγκεκριμένες συναρτήσεις γιατί λειτουργούν καλά μόνο όταν πρόκειται για μεμονωμένο κομμάτι. Εφόσον ο board είναι ενιαίος -όπως λέει απλά boxes με χρώμα- θα χρειαστεί να ξαναγράψουμε συναρτήσεις που να βρίσκουν γωνίες στο χρώμα που μας ενδιαφέρει ανεξάρτητα από το σχήμα του πολυόμινου στο οποίο ανήκαν πριν τις τοποθετήσουμε στο ταμπλό. Με λίγα λόγια,βλέπουμε το κάθε box σαν ανεξάρτητη προσωπικότητα και όχι σαν τμήμα ενός πχ κόκκινου σχήματος που αποτελείται από ένα εώς πέντε boxes.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ampoulog on December 09, 2008, 16:19:34 pm
Αν και σε γενικές γραμμές συμφωνώ με αυτά που λέει η vasso έχω μία μικρή ενσταση σε ότι αφορά το interface :
 Εσύ δεν υλοποιείς στην ουσία ένα interface , αλλά μία class που θα έχει κάποια από τα χαρακτηριστικά του interface.
Τουλάχιστον έτσι κατάλαβα εγώ , αν κάνω λάθος ας με διορθώσει κάποιος .


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 09, 2008, 16:32:15 pm
/me einai apo tous tuxerous pou exoun tis simeiwseis...

;)

αντιγράφω:

Μια διασύνδεση (interface) στη Java είναι μια συλλογή από μεθόδους που δεν διαθέτουν υλοποίηση (όπως ακριβώς και οι αφήρημένες -abstract- μέθοδοι). Οι διασυνδέσεις ορίζονται όμοια με τις κλάσεις, αντί όμως από τη δεσμευμένη λέξη class για τη δήλωση μιας διασύνδεσης χρησιμοποιείται η δεσμευμένη λέξη interface.

πχ
public interface MySet {
...}

Όλες οι μέθοδοι που βρίσκονται μέσα σε ένα interface δεν έχουν υλοποίηση (εξ ορισμού) και γι' αυτό το λόγο δεν χρειαζεται να δηλωθούν ως abstract. Τα interfaces αποτελούν είδη κλάσεων που παρέχουν περιγραφή ανάλογη με αυτή μιας κανονικής κλάσης, αλλά σε πιο "αφηρημένο" επίπεδο (όπου δεν είναι απαραίτητες οι λεπτομέρειες υλοποίησης των μεθόδων κλπ). Οι διασυνδέσεις όπως και οι κλάσεις μπορούν να κληρονομηθούν από κλάσεις. Κάθε κλάση που κληρονομεί ένα interface, είναι υποχρεωμένη να παρέχει υλοποίηση για όλες τις μεθόδους του. Γι' αυτό το λόγο στην ορολογία της java δεν συνηθίζουμε να λέμε ότι "η κλάση Α κληρονομεί το interface B" αλλά ότι "η κλάση Α υλοποιεί το interface Β". Σε αντίθεση με την κληρονομικότητα των συνηθισμένων κλάσεων που επιτρέπει την ύπαρξη μιας μόνο άμεσης υπερκλάσης για κάθε κλάση, μια κλάση στην Java μπορεί να υλοποιεί απεριόριστο αριθμό interfaces. [πολλαπλή κληρονομικότητα]

Για την υλοποίηση ενός interface χρησιμοποιείται η δεσμευμένη λέξη implements.

πχ,

public class MySetXXXX implements MySet{
...
(υλοποίηση συναρτήσεων της MySet και ενδεχόμενος υπόλοιπος κώδικας )
...
}


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ampoulog on December 09, 2008, 16:39:23 pm
Την MySetXXXX-XXXX την δημιουργείς στον ίδιο φάκελο με τις MySet και SetElement , έστι ?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 09, 2008, 17:23:05 pm
ναι, την τοποθέτησε μόνο του εκεί...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 09, 2008, 17:50:36 pm
Πως χρησιμοποιείς το java.util???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 09, 2008, 23:02:20 pm
Κάνεις import java.util.*; στην κλάσση που θες. Π.χ. αν πας στην κλάσση Board.java θα δεις πάνω-πάνω import java.util.vector


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 10, 2008, 15:49:30 pm
Λοιπόν. Ερώτηση:

Έχω υλοποιήσει το interface στην MySetAEM η οποία βρίσκεται στον φάκελο set.
Έχω κάνει import το gr.auth.ee.dsproject.blokus.set.* όπως είδα να υπάρχει ήδη στον έτοιμο κώδικα που μας έχουν δώσει.
Παρόλα αυτά, κάθε φορά που πάω να φτιάξω με new μία κλάση MySetAEM μου βγάζει σφάλμα. Γιατί;
Κάτω, στη λίστα με τα σφάλματα λέει ότι δεν μπορεί να εντοπίσει τη MySetAEM γιατί την ψάχνει στον φάκελο blokus και όχι στον  blokus.set Αυτό συνέχισε να το βγάζει και όταν μετακίνησα τις κλάσεις στον υπερφάκελο blokus και έσβησα τον set. wtf?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 10, 2008, 16:44:05 pm
To import gr.....set. βλέπω ότι είναι package, άρα δεν το κάνεις import, μήπως για αυτό σου βγάζει σφάλμα. Επειδή είναι ήδη η κλάσση στο set, μαζί με το interface άρα το βλέπει. Δοκίμασε να ξανακάνεις την κλάσση κατευθείαν μέσα στο set και λογικά θα δουλέψει (α ίσως χρειάζεται να γράψεις package gr........set;, δεν θυμάμαι αν το βάζει από μόνο του :???: )

edit:άκυρο το διαγραμμένο, δεν πρόσεξα το αστεράκι :P Πάντως όπως και να'χει λογικά import δεν χρειάζεται.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: thomi on December 10, 2008, 18:07:45 pm
Οταν κανουμε import το java.util.* και θελουμε να καλεσουμε μια συναρτηση του συγκεκριμενου πακετου, απο οτι καταλαβα πρεπει να δημιουργησουμε ενα αντικειμενο τυπου της κλασης που υλοποιει το interface και με αυτο να καλεσουμε τη συναρτηση του πακετου.Π.χ.
public boolean add(SetElement e) {
      MySetaem s = new MySetaem();
      return s.add(e);
      }

Σε αυτο ειμαστε σιγουροι οτι καλει την add(e) του πακετου ή μπορει να κανει και αναδρομικη κληση??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 10, 2008, 18:18:26 pm
Οταν κανουμε import το java.util.* και θελουμε να καλεσουμε μια συναρτηση του συγκεκριμενου πακετου, απο οτι καταλαβα πρεπει να δημιουργησουμε ενα αντικειμενο τυπου της κλασης που υλοποιει το interface και με αυτο να καλεσουμε τη συναρτηση του πακετου.Π.χ.
public boolean add(SetElement e) {
      MySetaem s = new MySetaem();
      return s.add(e);
      }

Σε αυτο ειμαστε σιγουροι οτι καλει την add(e) του πακετου ή μπορει να κανει και αναδρομικη κληση??

Νομίζω δε χρειάζεται να δημιουργήσουμε αντικείμενο του τύπου της κλάσης, αλλά μπορούμε να δημιουργήσουμε ως μεταβλητή της κλάσης μια δομή δεδομένων από αυτές που περιέχονται στο java.util, για παράδειγμα ένα Vector (ουσιαστικά ένας πίνακας αντικειμένων), και να το ορίσουμε ως Vector<SetElement> vec=new Vector<SetElement>();  Τότε, θα μπορείς να χρησιμοποιήσεις τις συναρτήσεις πάνω σ' αυτή τη δομή.  για παράδειγμα, η vec.get(index) επιστρέφει το αντικείμενο-στοιχείο του Vector που βρίσκεται στη θέση index.

Πάντως υπάρχει και η addElement() η οποία και έχει διαφορετικό όνομα, και προσθέτει το στοιχείο αυτόματα στο τέλος του Vector ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ampoulog on December 10, 2008, 18:30:09 pm
H add  δεν κάνει και την προσθήκη απλά επιστρεφεί true αν το στοιχείο μπορεί να μπει ή false σε άλλη περίπτωση έτσι ?????


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 10, 2008, 18:33:08 pm
Από ό,τι λέει η εκφώνηση, κάνει και την προσθήκη. Τώρα γιατί να είναι boolean η μέθοδος και όχι void μόνο εκείνοι ξέρουν! :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: thomi on December 10, 2008, 18:48:54 pm
Οταν κανουμε import το java.util.* και θελουμε να καλεσουμε μια συναρτηση του συγκεκριμενου πακετου, απο οτι καταλαβα πρεπει να δημιουργησουμε ενα αντικειμενο τυπου της κλασης που υλοποιει το interface και με αυτο να καλεσουμε τη συναρτηση του πακετου.Π.χ.
public boolean add(SetElement e) {
      MySetaem s = new MySetaem();
      return s.add(e);
      }

Σε αυτο ειμαστε σιγουροι οτι καλει την add(e) του πακετου ή μπορει να κανει και αναδρομικη κληση??

Νομίζω δε χρειάζεται να δημιουργήσουμε αντικείμενο του τύπου της κλάσης, αλλά μπορούμε να δημιουργήσουμε ως μεταβλητή της κλάσης μια δομή δεδομένων από αυτές που περιέχονται στο java.util, για παράδειγμα ένα Vector (ουσιαστικά ένας πίνακας αντικειμένων), και να το ορίσουμε ως Vector<SetElement> vec=new Vector<SetElement>();  Τότε, θα μπορείς να χρησιμοποιήσεις τις συναρτήσεις πάνω σ' αυτή τη δομή.  για παράδειγμα, η vec.get(index) επιστρέφει το αντικείμενο-στοιχείο του Vector που βρίσκεται στη θέση index.

Πάντως υπάρχει και η addElement() η οποία και έχει διαφορετικό όνομα, και προσθέτει το στοιχείο αυτόματα στο τέλος του Vector ;)

Ευχαριστω!!! :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 10, 2008, 19:34:33 pm
Μπορείς να φτιάξεις έναν constructor, έστω κι αν δεν αρχικοποιεί τίποτα... ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: fpsom on December 11, 2008, 08:49:39 am
Από ό,τι λέει η εκφώνηση, κάνει και την προσθήκη. Τώρα γιατί να είναι boolean η μέθοδος και όχι void μόνο εκείνοι ξέρουν! :P
Εάν κάνεις add και το στοιχείο υπάρχει ήδη στο Set, τότε θα πρέπει να ΜΗΝ γίνει η προσθήκη και η συνάρτηση να επιστρέψει false. Σε αντίθετη περίπτωση επιστρέφει true..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 11, 2008, 14:27:13 pm
Δεν διαφώνησα σε αυτό, αλλά γιατί να επιστρέφει false ή true ρώτησα, από τη στιγμή που την προσθήκη ή τη μή προσθήκη την κάνει η ίδια η συνάρτηση (όπως λέει και η εκφώνηση). Η τιμή που επιστρέφει πού χρειάζεται;

Και μια δικιά μου απορία: Εγώ την χρησιμοποιώ στο πρόγραμμα π.χ. ob.add(el); χωρίς να δώσω την τιμή της σε κάποια μεταβλητή ούτε την κάνω return, και μου το δέχεται χωρίς σφάλμα. Δλδ τη χρησιμοποιώ σαν void και δεν υπάρχει πρόβλημα. Γιατί ενώ είναι boolean αφήνει το πρόγραμμα να κληθεί και σαν void?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on December 11, 2008, 14:41:49 pm
Για αυτό που ρωτάς, έτσι όπως το κάνεις εσύ η συνάρτηση κάνει κανονικά την δουλειά της και επιστρέφει την boolean τιμή.
Εσύ, απλώς δεν την αποθηκεύεις σε κάποια μεταβλητή! (όπως άλλωστε λες και εσύ)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 11, 2008, 15:30:28 pm
Έχεις δίκιο, τελικά δεν είναι τόσο περίεργο όσο νόμισα...

Η εργασία βαθμολογείται όπως η πρώτη, δηλαδή δεν έχει σημασία πόσο πολύπλοκη ή όχι είναι η υλοποίηση ή πόσες μεταβλητές και επαναλήψεις χρησιμοποιούμε, αρκεί να είναι σωστός ο τρόπος και να δουλεύει;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on December 11, 2008, 15:44:09 pm
εχω ολοκληρώσει τον κωδικα μου,αλλα στο προγραμμα δεν παιζει καθόλου όταν είναι ο υπολογιστής...που μπορει να έχω λάθος?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 11, 2008, 16:50:49 pm
Στον κώδικά σου ίσως; :D :P






Μάλλον δεν έχεις ορίσει τί θα γίνεται στην αρχή, όπου δεν υπάρχει κανένα χρώμα στο ταμπλό.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on December 11, 2008, 17:03:45 pm
ξέρω ότι η ερωτηση είναι λίγο γενική... :P  αλλα δεν ξερω σε ποιο σημείο ακριβως είναι το λάθος

έχω ορίσει όμως τι γίνεται στην αρχή (μέσα στην findwhereitfits) και πάλι δεν δουλεύει σωστά...

αν θες pm να σου στείλω το κομμάτι του κώδικα που πιστεύεις ότι μπορει να υπάρχει το λάθος..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ampoulog on December 12, 2008, 10:16:39 am
Η συνάρτηση getTempPiece() στην board επιστρέψει ενα tempPiece . Τι είναι όμως αυτό ??



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 12, 2008, 17:26:15 pm
όταν μετακινείς το κομμάτι πάνω στον board και πριν κάνεις το κλικ για να το αφήσει, αυτό που βλέπεις (με μαύρο χρωμα για μη εγκυρη κίνηση και με κανονικό χρώμα για έγκυρη) είναι το tempPiece


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: ampoulog on December 12, 2008, 17:59:12 pm
Ευχαριστώ!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 12, 2008, 20:55:08 pm
Και κάτι που δεν έχει άμεση σχέση με την εργασία, αλλά με τη λογική της java. Έχω καταλήξει ότι τα παρακάτω ισχύουν, με βάση το ότι ο κώδικάς μου δεν βγάζει σφάλματα, αλλά θα ήθελα μία επιβεβαίωση.

1.) Object1 Var=new Object1(); εδώ έχουμε δηλώσει ένα αντικείμενο τύπου Object1.

Object1 Var2=new Object1(); Var2=Var;  Εδώ επειδή έχουμε δημιουργήσει το αντικείμενο Var2 (με τον τελεστή new), η έκφραση Var2=Var δεν θα αλλάξει τη διεύθυνση του Var2 να δείχνει στη διεύθυνση του Var, αλλά θα αντιγράψει το αντικείμενο Var στο αντικείμενο Var2, δλδ θα παραμείνουν δύο ανεξάρτητα αντικείμενα, απλά θα έχουν ίδιες τιμές στις μεταβλητές τους.

Αν όμως πούμε Object1 Var2=Var; Τότε επειδή στην ουσία δεν δημιουργούμε αντικείμενο, τότε το Var2 θα δείχνει στη διεύθυνση του Var σε αυτήν την περίπτωση. Έτσι ουσιαστικά οι Var, Var2 αναφέρονται στο ίδιο αντικείμενο.


2.) Όσων αφορά όμως τους πίνακες, μπορεί να δημιουργούνται με τον ίδιο τρόπο, όμως αν γράψουμε:

Object1 table1[]=new Object1[10];
Object1 table2[]=new Object[10];
//blah blah
table2=table1
Η έκφραση table2=table1 δεν θα αντιγράψει τον table1 στον table2, αλλά θα αλλάξει τον table1 έτσι ώστε να δείχνει τη διεύθυνση του table2, δλδ table1[2] και table2[2] θα δείχνουν στην ίδια θέση μνήμης, συνεπώς αν αλλάξω την τιμή του table1[2] θα αλλάξει αυτομάτως και η τιμή του table2[2].


3.) Τώρα όσον αφορά τα ορίσματα των μεθόδων: Έστω η μέθοδος method(Ob1 Var2); Και την καλούμε έτσι:
Ob1 Var=new Ob1(3,5);
method(Var);

Επειδή δεν έχουμε δημιουργήσει το αντικείμενο Var2 μέσα στη method με τον τελεστή new, στην ουσία είναι σαν να λέμε Ob1 Var2=Var, επομένως το αντικείμενο Var2 αναφέρεται στο ίδιο αντικείμενο (στις ίιδες θέσεις μνήμεις) με το αντικείμενο Var. Ως εκ τούτου, αν μέσα στη μέθοδο αλλάξω κάτι στο Var2, θα αλλάξει αυτομάτως και το αντικείμενο Var που έχουμε δημιοργήσει π.χ.στη main.

Αν όμως πούμε:
Ob1 Var=new Ob1(3,5);
method(new Ob1(Var.getX(),Var.getY()));

Τότε δημιουργούμε ένα νέο αντικείμενο, ουσιαστικά δηλαδή η method το μεταφράζει αυτό σε Ob1 Var2=new Ob1(var.GetX(),var.GetY()); και έτσι η Var2 είναι ξεχωριστό αντικείμενο από τη Var1 (αλλά με ίδιες τιμές). Και μπορούμε να αλλάξουμε ό,τι θέλουμε χωρίς να ανησυχούμε αν θα αλλοιώσουμε κατα λάθος το αντικείμενο Var στη main.

Ή το ίδιο θα ήταν αν δημιουργούσαμε ένα αντίγραφο του Var και περνούσαμε εκείνο ως όρισμα στη method, διότι δεν θα μας πειράζει ό,τι αλλοιώσεις και να κάνουμε στο αντίγραφο.
...........................................

Σωστά;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: mysterious on December 12, 2008, 22:50:07 pm
Απορία :

Έστω ότι έχω φτιάξει τη δομή με τις "νόμιμες" κινήσεις και έχω επιλέξει μία κίνηση..
Πως τοποθετείται το κομμάτι?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 13, 2008, 00:36:40 am
Στην κλάσση Player υπάρχει η μέθοδος placePiece(Board b, Piece p)

Γράφεις εκεί ό,τι είναι να γράψεις και για να τοποθετήσεις το κομμάτι χρησιμοποιείς τη μέθοδο place του Board  (b.place(..) δηλαδή).


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 13, 2008, 00:40:11 am
Το γράφει και στην εκφώνηση κάτω από την placePiece:
"Όταν κληθεί η μέθοδος place που τοποθετεί το κομμάτι στον πίνακα..."  μόνο που δεν γράφει ότι η μέθοδος αυτή είναι της κλάσσης Board.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: warrior52 on December 13, 2008, 00:43:59 am
υπάρχει μήπως καμία αλλαγή στην ημερομηνία παράδοσης λόγω των 2 χαμένων εργαστηρίων και της κατάληψης??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: mysterious on December 13, 2008, 02:27:08 am
χρησιμοποιείς τη μέθοδο place του Board  (b.place(..) δηλαδή).

Αυτό έψαχνα..thanks!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 13, 2008, 12:09:01 pm
Λοιπόν 2 ερωτήσεις να κάνω :

1) Στην αρχή του παιχνιδιού,που το ταμπλώ είναι άδειο, προφανώς η scanTheBoard δεν επιστρέφει τίποτα, και δεν γίνεται καμία κίνηση. Πρέπει να γίνει ειδική πρόβλεψη? Εγώ πχ,έβαλα από default όταν είναι η πρώτη κίνηση να μπαίνει ένα συγκεκριμένο κομμάτι,χωρίς χρήση των scanTheBoard, findWhereItFits...

2) Ακόμα και έτσι, για να γίνει η κίνηση,πρέπει εγώ να κάνω κάπου κλικ στην οθόνη.Δεν έχει σημασία σε ποιό κομμάτι κάνω κλίκ,αλλά πρέπει να κάνω,αλλιώς δε γίνεται τίποτα. Πειράζει αυτό? Πρέπει να το κάνουμε να δουλεύει χωρίς κλίκ? Και αν ναι, ξέρει κανείς πώς γίνεται?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: igoutas on December 13, 2008, 12:40:19 pm
Η εργασια για το blokus  θα συνεχιστει κανονικα  ή αναστελλεται λογω καταληψεων!!!???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 13, 2008, 15:26:26 pm
cyberwizard: Σύμφωνα με την εκφώνηση, ο παίκτης θα επιλέγει με κλικ ποιό κομμάτι θέλει να τοποθετηθεί στο ταμπλό, και το κομμάτι θα τοποθετείται αυτόματα σε κάποια από τις διαθέσιμες θέσεις. Όσων αφορά την πρώτη κίνηση, ναι μεν η scantheboard δεν θα επιστρέφει τίποτα, αλλά λογικά η findwhereitfits πρέπει να επιστρέφει τις διαθέσιμες κινήσεις για το συγκεκριμένο κομμάτι που επέλεξε ο παίκτης, με βάση τους κανονισμούς που ισχύουν για την πρώτη κίνηση. Οπότε κατα τη γνώμη μου αυτό που κάνεις --το να καθορίσεις μέσα στον κώδικα ποιό κομμάτι θα χρησιμοποιηθεί πρώτο-- δεν είναι σωστό.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 13, 2008, 15:47:40 pm
Thanks Wanderer για τις επισημάνσεις. Αυτό με το κλίκ το πρόσεξα και γώ τώρα,μετα από μελέτη της εκφώνησης,καθότι αν χρειαζόταν να γίνεται και αυτόματη επιλογή κομματιού θα τελείωνα του χρόνου :) . Όσον αφορά την πρώτη κίνηση, το πρόβλημα έγκειται στο ότι η findwhereitFits κάνει σύγκριση γωνιών. Επομένως αν η Scantheboard επιστρέψει 0 στοιχεία,δεν μπορεί να γίνει σύγκριση,και επιστρέφει και η findwhereitFits 0 πιθανές θέσεις. Επομένως λογικό είναι,το πρώτο κομμάτι να τοποθετείται τυχαία,αρκεί να συνάδει με τους περιορισμούς. Δεν μπορώ να σκεφτώ τρόπο που μπορεί να το υλοποιήσει αυτό η  findwhereitFits, από τη στιγμή που όπως είπα λειτουργεί με συγκρίσεις, εκτός από το να ενσωματώσω ένα τεράστιο κομμάτι κώδικα,για κάθε παίχτη,για την περίπτωση  Scantheboard.isEmpty()==true......


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 14, 2008, 21:45:42 pm
σχετικα με την κλαση MySetxxxx-xxxxx

σκεφτομαι να χρησιμοποιησω t κλαση vector απ το java.util
αλλα δεν εχω καταλαβει πως.
δηλαδη η κλαση μου θα ειναι ¨
public class MySetxxxx-xxxxx {
.
.
με ποια εντολη θα δειξω οτι αποθηκευει αντικειμενα setElement μεσα σ vector?
και το ιmport στην αρχη κ μονο αυτο αρκει για να χρισιμοποιω τα vectors?
σορυ αν ακουγονται χαζες ερωτησεις αλλα δεν τα εχω ξαναχρησιμοποιησει κ δεν εχς καταλαβει τι παιζει


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 14, 2008, 21:57:51 pm
Χρησιμοποιώ την (int)Math.random() για να δώσω μια τυχαία τιμή σε ένα ακέραιο i για να πάιξει την κίνηση που περιγράφει το SetElement στην θέση i της δομής places. Η random() ομως έτσι όπως τη χρησιμοποιώ δίνει αυθαίρετες τυχαίες ακέραιες τιμές. Αν θέλω να περιορίσω αυτές τις τιμές από 0 εως places.size() τι κάνω ??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 14, 2008, 22:05:05 pm
tiger ναι μονο το import είναι οκ για να χρησιμοποιήσεις vector.

Vector<SetElement> ###=new Vector<SetElement>();

Με αυτήν την εντολή δημιουργείς έναν vector!!!





Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 14, 2008, 22:06:17 pm
Βασικά το πιο πιθανό είναι λόγω κούρασης να μην μπορώ να σκεφτώ κάτι αλλά μήπως μπορείτε να μου πείτε πως θα κάνω την περιστροφή και τον καθρεφτισμό του κομματιού???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 14, 2008, 22:09:34 pm
Βασικά το πιο πιθανό είναι λόγω κούρασης να μην μπορώ να σκεφτώ κάτι αλλά μήπως μπορείτε να μου πείτε πως θα κάνω την περιστροφή και τον καθρεφτισμό του κομματιού???

Στην κλάση Piece υπάρχουν έτοιμες συναρτήσεις mirror και rotate ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 14, 2008, 22:30:22 pm
 ^banghead^ γαμώτο....και προσπαθούσα να το βρω πόση ώρα με ένα κεφάλι έτοιμο να σπάσει...

Ευχαριστώ Δημήτρη


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 14, 2008, 23:07:02 pm
Παιδιά έχω πρόβλημα με την Contains()... Συγκεκριμένα,παρότι υπάρχουν στοιχεία στον πίνακα,με πανομοιότυπα χαρακτηριστικά,δεν τα αναγνωρίζει με αποτέλεσμα να έχω διπλοεγγραφές πολλές φορές.Δοκίμασα να την φτιάξω και με δικό μου κώδικα,αλλά συμβαίνει το ίδιο. Γνωρίζει κανείς τί μπορεί να φταίει, ή με ποιόν άλλο τρόπο μπορώ να ελέγξω αν ένα setElement υπάρχει ήδη πριν το τοποθετήσω στον πίνακα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 14, 2008, 23:36:55 pm
cyberwizard: Σύμφωνα με την εκφώνηση, ο παίκτης θα επιλέγει με κλικ ποιό κομμάτι θέλει να τοποθετηθεί στο ταμπλό, και το κομμάτι θα τοποθετείται αυτόματα σε κάποια από τις διαθέσιμες θέσεις. Όσων αφορά την πρώτη κίνηση, ναι μεν η scantheboard δεν θα επιστρέφει τίποτα, αλλά λογικά η findwhereitfits πρέπει να επιστρέφει τις διαθέσιμες κινήσεις για το συγκεκριμένο κομμάτι που επέλεξε ο παίκτης, με βάση τους κανονισμούς που ισχύουν για την πρώτη κίνηση. Οπότε κατα τη γνώμη μου αυτό που κάνεις --το να καθορίσεις μέσα στον κώδικα ποιό κομμάτι θα χρησιμοποιηθεί πρώτο-- δεν είναι σωστό.

Η καλύτερα....είναι περιττό  ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 15, 2008, 00:33:15 am
Χρησιμοποιώ την (int)Math.random() για να δώσω μια τυχαία τιμή σε ένα ακέραιο i για να πάιξει την κίνηση που περιγράφει το SetElement στην θέση i της δομής places. Η random() ομως έτσι όπως τη χρησιμοποιώ δίνει αυθαίρετες τυχαίες ακέραιες τιμές. Αν θέλω να περιορίσω αυτές τις τιμές από 0 εως places.size() τι κάνω ??

ιδέα:
κανονικοποιείς την έξοδο της ραντομ (από 0 ως 1) και πολλαπλασιάζεις με το μέγεθος του places.

Βέβαια, στο internet έχει μια έτοιμη συνάρτηση που βάζεις για όρισμα τον μεγαλύτερο ακέραιο που θέλεις (πχ το μέγεθος του places) και σου επιστρέφει έναν τυχαίο ακέραιο από το 0 ως το όρισμα. Δν θυμάμαι όμως ποια είναι...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: thomi on December 15, 2008, 19:35:26 pm
εχω τελειωσει με τον κωδικα αλλα οταν τον τρεχω δεχεται μονο να τοποθετησω εγω το μπλε αρχικα.Στην αμεσως επομενη κινηση δεν μπορω να τοποθετησω το κομματι και εκτελειται το εξης κομματι:
System.out.println(getColor().toString()+"says: Please choose another piece!");
      javax.swing.JOptionPane.showMessageDialog(null,
            "No valid moves for this piece. Please choose another one!",
            "Invalid Piece", javax.swing.JOptionPane.ERROR_MESSAGE);

Πιο πριν  στην ιδια συναρτηση ελεγχω αν η δομη ειναι αδεια και αν δεν ειναι επιλεγω τυχαια ενα οποιοδηποτε element,ενω αν ειναι αδεια εκτελω το προηγουμενο κομματι κωδικα.Εχει κανεις καμια ιδεα τι μπορει να φταει?? :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 15, 2008, 19:59:55 pm
ιδέα:
κανονικοποιείς την έξοδο της ραντομ (από 0 ως 1) και πολλαπλασιάζεις με το μέγεθος του places.

OΗΗΗΗΗΗΗΗ JESUS CHRIST!!!!!WHAT DID SHE SAID RIGHT NOW????

Mono pou to thimithikes..... ^notworthy^ ^notworthy^ ^notworthy^ ^notworthy^ ^notworthy^ ^notworthy^


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 15, 2008, 20:04:14 pm
εχω τελειωσει με τον κωδικα αλλα οταν τον τρεχω δεχεται μονο να τοποθετησω εγω το μπλε αρχικα.Στην αμεσως επομενη κινηση δεν μπορω να τοποθετησω το κομματι και εκτελειται το εξης κομματι:
System.out.println(getColor().toString()+"says: Please choose another piece!");
      javax.swing.JOptionPane.showMessageDialog(null,
            "No valid moves for this piece. Please choose another one!",
            "Invalid Piece", javax.swing.JOptionPane.ERROR_MESSAGE);

Πιο πριν  στην ιδια συναρτηση ελεγχω αν η δομη ειναι αδεια και αν δεν ειναι επιλεγω τυχαια ενα οποιοδηποτε element,ενω αν ειναι αδεια εκτελω το προηγουμενο κομματι κωδικα.Εχει κανεις καμια ιδεα τι μπορει να φταει?? :D

Κατ' αρχάς, νομίζω μπορείς να ελέγξεις αν πράγματι η δομή είναι άδεια, μήπως γίνεται κανένα λάθος στην προσθήκη των SetElement και δεν προστίθενται στη δομή...  Ή μήπως αν υπάρχει κάποιο λάθος στην isEmpty και επιστρέφει πάντα ότι η δομή είναι άδεια...  Δε μου έρχεται τίποτα άλλο, κάποια άλλη βοήθεια; :D

Παιδιά έχω πρόβλημα με την Contains()... Συγκεκριμένα,παρότι υπάρχουν στοιχεία στον πίνακα,με πανομοιότυπα χαρακτηριστικά,δεν τα αναγνωρίζει με αποτέλεσμα να έχω διπλοεγγραφές πολλές φορές.Δοκίμασα να την φτιάξω και με δικό μου κώδικα,αλλά συμβαίνει το ίδιο. Γνωρίζει κανείς τί μπορεί να φταίει, ή με ποιόν άλλο τρόπο μπορώ να ελέγξω αν ένα setElement υπάρχει ήδη πριν το τοποθετήσω στον πίνακα?

Μάλλον πρέπει να ελέγχεις όλα τα στοιχεία από κάθε ένα από τα SetElement για να δεις αν είναι ίδια μ' αυτά του αντικειμένου που πας να προσθέσεις, και αν σε ένα από αυτά όλα είναι ίδια (μπορείς να το ελέγξεις με μια μεταβλητή boolean), τότε η contains επιστρέφει true...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 16, 2008, 02:19:26 am
Λοιπόν αναρωτιέμαι αν κάποιος δοκίμασε την .equals που μας είχαν πει στο εργαστήριο για να υλοποιήσει την contains.. μου φαίνεται ότι δεν λειτουργεί σωστά και αφήνει σε ορισμένα κομμάτια να αποθηκευτούν κινήσεις ίδιες με ήδη υπάρχουσες. Προσωπικά την υλοποιώ "χειροκίνητα" ελέγχοντας τα στοιχεία ένα προς ένα με if και επαναλήψεις, αλλά επειδή αναφέρθηκε στο εργαστήριο απλά θέλω να ξέρω αν και σε άλλους δεν έχει λειτουργήσει σωστά ή εγώ δεν την είχα πάρει με καλό μάτι :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 16, 2008, 12:07:38 pm
Λοιπόν αναρωτιέμαι αν κάποιος δοκίμασε την .equals που μας είχαν πει στο εργαστήριο για να υλοποιήσει την contains.. μου φαίνεται ότι δεν λειτουργεί σωστά και αφήνει σε ορισμένα κομμάτια να αποθηκευτούν κινήσεις ίδιες με ήδη υπάρχουσες. Προσωπικά την υλοποιώ "χειροκίνητα" ελέγχοντας τα στοιχεία ένα προς ένα με if και επαναλήψεις, αλλά επειδή αναφέρθηκε στο εργαστήριο απλά θέλω να ξέρω αν και σε άλλους δεν έχει λειτουργήσει σωστά ή εγώ δεν την είχα πάρει με καλό μάτι :P

Όντως, η equals δε δουλεύει, όπως και κάποιες άλλες συναρτήσεις που λειτουργούν με βάση την equals (όπως για παράδειγμα η indexOf).  Μάλλον πρέπει να γίνει χειρωνακτικά ο έλεγχος...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on December 16, 2008, 13:42:39 pm
επειδή μπερδέυτηκα λίγο με αυτά που διαβασα...

η scanTheBoard δεν επιστρέφει τίποτα?η επιστρέφει ένα αντικείμενο(πίνακα) τύπου MySet??



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 16, 2008, 13:47:45 pm
επειδή μπερδέυτηκα λίγο με αυτά που διαβασα...

η scanTheBoard δεν επιστρέφει τίποτα?η επιστρέφει ένα αντικείμενο(πίνακα) τύπου MySet??

Επιστρέφει αντικείμενο τύπου MySetAEM_AEM


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on December 16, 2008, 14:00:51 pm
ωραία!
και τον κώδικα που αφορά την πρώτη κίνηση που τον γράφουμε??σε ποια μέθοδο?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: igoutas on December 16, 2008, 14:16:30 pm
επαναλαμβανω και συγνωμη αν κουραζω αλλα τελικα μαθαμε εαν θα παραδοθει κανονικα η εργασια???? :D :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on December 16, 2008, 14:18:36 pm
δωσανε παράταση μεχρι τις 22...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 16, 2008, 14:27:45 pm
ωραία!
και τον κώδικα που αφορά την πρώτη κίνηση που τον γράφουμε??σε ποια μέθοδο?
Προσωπικά τον έγραψα στην findwhereitfits. Στην εκφώνηση δεν αναφέρει τίποτα αλλά και για την πρώτη κίνηση λογικά πρέπει να επιστρέφουμε όλες τις επιτρεπτές κινήσεις...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 17, 2008, 00:56:11 am
tiger ναι μονο το import είναι οκ για να χρησιμοποιήσεις vector.

Vector<SetElement> ###=new Vector<SetElement>();

Με αυτήν την εντολή δημιουργείς έναν vector!!!




1)
ναι κ οταν βρισκομαι μεσα   στην κλαση player    k px στη μεθοδο scanTheBoard k
θελω να προσθεσω px ενα setElement με χρωμα null ,x,y, 1-
απλα θα γραψω αdd(   τι?? )

2) δεν εχω καταλαβει τι κανει η findwhereit fits.κ συγκεκριμενα εκει που  λεει .."για καθε κινηση του moves βρισκει τις αντιστοιχες γωνιες του corners...   ενα παραδειγμα?
#
3)
η scantheboard k h findwhere itfits φτιαχνουν διαφορετικα mysetelement αντικειμενα.σωστα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on December 17, 2008, 01:44:12 am
1)
ναι κ οταν βρισκομαι μεσα   στην κλαση player    k px στη μεθοδο scanTheBoard k
θελω να προσθεσω px ενα setElement με χρωμα null ,x,y, 1-
απλα θα γραψω αdd(   τι?? )

2) δεν εχω καταλαβει τι κανει η findwhereit fits.κ συγκεκριμενα εκει που  λεει .."για καθε κινηση του moves βρισκει τις αντιστοιχες γωνιες του corners...   ενα παραδειγμα?
#
3)
η scantheboard k h findwhere itfits φτιαχνουν διαφορετικα mysetelement αντικειμενα.σωστα?
1)
θα φτιάξεις ένα SetElement e με αυτά που θες (και πρόσεχε είναι σχήμα και όχι χρώμα)
SetElement e=new SetElement(null,x,y,1);
και το προσθετεις
moves.add(e);

2)
Για να υπάρχουν έγκυρες κινήσεις πρέπει αρχικά να αντιστοιχίζονται οι ελεύθερες γωνίες του ταμπλό με αυτές του κομματιού.
Μια τυχούσα πάνω αριστερή ελεύθερη γωνία(corner=1) σε ένα τετράγωνο του ταμπλό, μπορεί να δεχτεί ένα τυχών κομμάτι πάνω αριστερά του, το οποίο αναγκαστικά θα πρέπει να έχει σε εκείνο το σημείο τετράγωνο με ελεύθερη κάτω δεξιά γωνία (corner=4)

3)
Ναι!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 17, 2008, 12:33:43 pm
Βασικά πως θα δω εάν είναι η πρώτη κίνηση???

Προσωπικά σκέφτηκα να βάλω μέσα στο if να ελένξει εάν είναι τα κομμάτια 21!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 17, 2008, 13:50:11 pm
thanks Mikros_Nikolas!
εχει καταλαβει καποιος ποια ειναι η αντιστοιχια μεταξυ χ,y του moves  και χ,y του corners?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 17, 2008, 13:59:03 pm
Έτσι είναι MARIOS.
Έλεγχεις αν το inventory.size()==21 και το σωστό χρώμα έτσι ώστε να χρησιμοποιησεις τα αντιστοιχα  x, y, corner στον constructor του SetElement που θα εχεις.
Αρχικά εγώ το είχα να ελέγχει αν το χρώμα των γωνιών είναι null, αλλά υπάρχει πρόβλημα αν κάποιος παίχτης κάνει give up πριν παίξει την πρώτη κίνηση.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 17, 2008, 14:01:32 pm
thanks Mikros_Nikolas!
εχει καταλαβει καποιος ποια ειναι η αντιστοιχια μεταξυ χ,y του moves  και χ,y του corners?

1-4
2-3
3-2
4-1


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 17, 2008, 14:09:30 pm
Δεν νομίζω ότι υπάρχει πρόβλημα, αν του πεις π.χ. για το μπλε:

if(xroma_tou_tablo_sto_0,0==null&&p.getcolor()==Color.blue) {...}


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 17, 2008, 14:23:04 pm
thanks Mikros_Nikolas!
εχει καταλαβει καποιος ποια ειναι η αντιστοιχια μεταξυ χ,y του moves  και χ,y του corners?

1-4
2-3
3-2
4-1

δεν ρωτησα ποια ειναι η αντιστοιχια των γωνιων
αλλα ποια ειναι η αντιστοιχια των χ,Y που αναφερονται σε καθε μια
πχ βρικεις οτι το 2,3 ειναι πανω αριστερη γωνια στο ταμπλω ... οπου χ κ y παιρνουν τιμες στο διαστημα απο 0 εως 19 [0,19]
ομως τα χ,Υ που αφορουν το κοματι κ την γωνια του ... εχουν ευρος αναλογα το κοματι.πχ για κοματι με ενα μονο κουτακι ...τα χ,Υ δεν μπορουν να παρουν τιμη αλλη εκτος του μηδενος
οποτε ..
αφου βρω τα χ,y μιας γωνιας ενος κοματιου του ταμπλω ..αυτα τα χ,υ τι σχεση θα εχουν με τα χ,υ του κοματιου.   η εστω με το χ,υ της τοποτηετησης του κοματιου
εχει καταλαβει κανεις??

επισης στην κλαση Mysetxxx-xxxx ,φτιαχνουμε τις μεθοδους που ζηταει
η κλαση πρεπει να εχει κ μια main ομως. σ αυτην τι να βαλω μεσα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 17, 2008, 16:07:08 pm
Κατάλβα τι λες!!!Ποια θα είναι τα x,y για να βάλεις στην isValidMove

για γωνία στο moves:


1->x-p.getDimensions()[0],y-p.getDimensions()[1]
2->x+p.getDimensions()[0],y-p.getDimensions()[1]
3->x-p.getDimensions()[0],y+p.getDimensions()[1]
4->x+p.getDimensions()[0],y+p.getDimensions()[1]

Να σε καλα γιατί εγώ στο παράδειγμα που έκανα στο χαρτί έβαζα το κομματάκι που είναι μόνο του και τα έβαλα όλα +,- 1


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 17, 2008, 16:36:44 pm
Στην placePiece το Color c είναι το χρώμα του κομματιού έτσι(p.getColor())???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 17, 2008, 16:39:09 pm
@tiger: Δεν πρέπει να έχει main η κλάση MySetXXX, η main υπάρχει, σε άλλη κλάσση.

@MARIOS: Νομίζω ότι τα υπολόγισες λάθος. Δεν χρησιμοποιείς καθόλου τις τοπικές συντεταγμένες του τετραγώνου του κομματιού που εξετάζεις.

π.χ. στο attachment 1:

Είναι ως προς το ταμπλό γωνία 4 --> Χτοπ=Χ+1-χ=18-1+1=18, Υτοπ=Χ+1-υ=13-1+1=13

Ναι, είναι το χρώμα του p ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 17, 2008, 16:41:55 pm
Α, βασικά ποίο είναι το Color c; :D Δεν βλέπω τίποτα τέτοιο στην placePiece


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 17, 2008, 16:49:40 pm
gia kati allo to rotisa alla to exo ksexasei tora!!!
Den einai simantika afou yparxei i placePiece kai prepei na tin ilopoiiseis aplos!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 17, 2008, 17:05:33 pm
Ρε παιδιά, με την Contains() τι παίζει επιτέλους; Τελείωσα την εργασία μια χαρά και το μόνο πρόβλημα που έχω είναι οτι οι βάσεις μου γεμίζουν διπλότυπα αφού η Contains() δείχνει να μην λειτουργεί σωστά. Συγκεκριμένα τυπώνω το base.size() πρίν επιστρέψω κάθε βάση, έτσι για να ελέγχω τι παίζει και είναι πολύ μεγαλύτερο συνήθως από όσο πρέπει. Δοκίμασα επίσης διάφορους τρόπους υλοποίησης της και παρόλα αυτά δεν αλλάζει τίποτα.

Για να λέμε την αλήθεια το παιχνίδι παίζει μια χαρά κι έτσι, οπότε πιο πολύ θέλω η contains να λειτουργεί για "λόγους αισθητικής".

Κάποιος για ο οποίος την έκανε να δουλεύει σωστά μπορεί να μου πει πως να το κάνω κι εγώ αυτό;   ;)

Λες να φταίει τίποτες άλλο και όχι η contains....???  :( :???:


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 17, 2008, 17:12:29 pm
Τα x,y της isValidMove  είναι ---- movesX-1-cornersX
Ομοίως και για τα y και για τους συνδυασμους (-1,-1)(-1,+1)(+1,-1)(+1,+1)
Σε μένα δουλέυει gg έτσι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 17, 2008, 17:15:17 pm
Για να λέμε την αλήθεια το παιχνίδι παίζει μια χαρά κι έτσι, οπότε πιο πολύ θέλω η contains να λειτουργεί για "λόγους αισθητικής".
Βασικά το θέλει να μην επτρέπονται διπλότυπα, επομένως δεν είναι μόνο θέμα αισθητικής :P

Αν χρησιμοποιείς vector τότε η έτοιμη συνάρτηση contains μάλλον δεν λειτουργεί σωστά..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on December 17, 2008, 17:31:14 pm
Σ'αυτό έχεις δίκιο Wanderer.

Παρ' όλα αυτά, έχω χρησιμοποιήσει και την contains του vector και άλλους τρόπους περισσότερο άμεσους αλλά δεν είδα καμία διαφορά.

Έχεις να μου προτείνεις τίποτα εσυ;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Social_waste on December 17, 2008, 18:01:29 pm

η contains χρησιμοποιει την equals.
οποτε αν αλλαξεις την equals του mySet
δηλαδη αν γραψεις μια equals μαλλον θα
δουλευει.



Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 17, 2008, 19:49:13 pm
Επειδή είχα και γώ πρόβλημα με την Contains,και βρήκα τελικά τί έφταιγε.... Φταίει ότι το πρώτο της όρισμα,είναι boolean [ ] [ ]. Για να ελέγξει σε 2 τέτοιους πίνακες,τα στοιχεία τους 1 προς 1,πρέπει να γράψεις εσύ ξεχωριστό κώδικα,μέσα στην Contains.Τα άλλα 3 arguments : x,y,corner ελέγχονται κανονικά. Στη συνέχεια θα πρέπει να βγαλεις τον έλεγχο από την add, διότι η scanTheBoard,ζητάει να αποθηκεύσει στοιχεία με Null στο σχήμα,και η Contains πλεον δεν μπορεί να τα ελέγξει.

Εγώ αυτό έκανα και δούλεψε.Αλλά πραγματικά έφαγα πόσες μέρες να καταλάβω ότι δεν γινόταν η σύγκριση των bolean πινάκων....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on December 17, 2008, 19:54:17 pm
Ευχαριστούμε πάρα πολύ!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 17, 2008, 20:17:35 pm
@tiger: Δεν πρέπει να έχει main η κλάση MySetXXX, η main υπάρχει, σε άλλη κλάσση.

@MARIOS: Νομίζω ότι τα υπολόγισες λάθος. Δεν χρησιμοποιείς καθόλου τις τοπικές συντεταγμένες του τετραγώνου του κομματιού που εξετάζεις.

π.χ. στο attachment 1:

Είναι ως προς το ταμπλό γωνία 4 --> Χτοπ=Χ+1-χ=18-1+1=18, Υτοπ=Χ+1-υ=13-1+1=13

Ναι, είναι το χρώμα του p ;)
1)
γραφεις Χτοπ , Χ , χ     να υποθεσω οτι χ ειναι το χ του board? και Χτοπ του κοματιου.σορυ που δεν καταλαβα αλλα μαλον το σκεφτηκα με αλλο τροπο κ δεν καταλαβαινω την αντιστοιχια

2)στην  MySetxxxx scanTheBoard(Board b,Color c)
γραφω if ( x+1<=19 && y+1<=19&&
b [  χ ]  [y]==...   και μου γραφει σφαλμα."the type of the expression must be an array type but it resovled to Board.  τι κανω λαθος?    
μηπως το σωστο ειναι να γραψω  b.getBoard() [ x ][y]==null??? 

με το b.getBoard()[ x ][y].color  θα παρω το χρωμα απ το κουτακι του ταμπλω χ,y? η αλλιως?

στην εκφωνηση γραφει "Ελέγχει τον πίνακα b και επιστρέφει.."
τελικα το b ειναι πινακας η οχι?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 18, 2008, 14:04:48 pm
Το b είναι αντικείμενο!!!

Ο πίνακας είναι private μεταβλητή στο αντικείμενο b άρα πρέπει να το κάνεις με την getBoard()[][]


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 18, 2008, 19:50:33 pm
Ενώ μου αποθηκεύει όλες τις γωνίες!!!Στο κομμάτι δεν μου κάνει rotate ή mirror!!!!!!

Γιατ?????

Μάλλον υπάρχει θέμα στην placePiece έτσι???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 18, 2008, 20:16:31 pm
Το b είναι αντικείμενο!!!

Ο πίνακας είναι private μεταβλητή στο αντικείμενο b άρα πρέπει να το κάνεις με την getBoard()[][]

δηλαδη το χρωμα πχ απο ενα κουτακι με συντεταγμενες (1,2)του ταμπλω θα το παρω με b.getBoard()[1][2].getColor() ?

επισης.... μεσα την findWhereItFits  καλω την isValidMove και μου λεει οτι ειναι undefined for type player.
πως να την καλεσω?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on December 18, 2008, 20:17:57 pm
ναι σωστα



ειναι b.isValidMove() αν θυμαμαι καλα



α


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 18, 2008, 20:33:22 pm
Έτσι είναι MARIOS.
Έλεγχεις αν το inventory.size()==21 και το σωστό χρώμα έτσι ώστε να χρησιμοποιησεις τα αντιστοιχα  x, y, corner στον constructor του SetElement που θα εχεις.
Αρχικά εγώ το είχα να ελέγχει αν το χρώμα των γωνιών είναι null, αλλά υπάρχει πρόβλημα αν κάποιος παίχτης κάνει give up πριν παίξει την πρώτη κίνηση.

αν γραψουμε inventory.size()==21  σκετο,θα δωσει του τρεχοντος παιχτη? αφου οι συναρτησεις μας καλουνται με βαση το χρωμα κ οχι τον παιχτη...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 18, 2008, 20:53:29 pm
ναι σωστα



ειναι b.isValidMove() αν θυμαμαι καλα



α

και ετσι το ιδιο error μου γραφει..


καμια προταση για την πρωτη κινηση?να δοκιμασω επιτελους αν δουλεβει κατι...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 18, 2008, 21:55:41 pm
Χτοπ,Υτοπ εννοούσα τις τελικές συντεταγμένες τοποθέτησης Χ,Υ τις συντεταγμένες του ταμπλό, χ,υ τις τοπικές συντεταγμένες τετραγώνου του κομματιού, Μην σε μπερδεύω όμως, αν το σκέφτηκες με άλλο τρόπο και δουλεύει τότε όλα οκ!

Έτσι είναι MARIOS.
Έλεγχεις αν το inventory.size()==21 και το σωστό χρώμα έτσι ώστε να χρησιμοποιησεις τα αντιστοιχα  x, y, corner στον constructor του SetElement που θα εχεις.
Αρχικά εγώ το είχα να ελέγχει αν το χρώμα των γωνιών είναι null, αλλά υπάρχει πρόβλημα αν κάποιος παίχτης κάνει give up πριν παίξει την πρώτη κίνηση.

αν γραψουμε inventory.size()==21  σκετο,θα δωσει του τρεχοντος παιχτη? αφου οι συναρτησεις μας καλουνται με βαση το χρωμα κ οχι τον παιχτη...
Μπορείς τότε να πεις π.χ.αν θες να ελέγξεις ότι είναι η πρώτη κίνηση του μπλε παίκτη if(b.inventory.size()==21&&c==Color.blue) {..}

H isValidMove() είναι boolean (true-false).


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 18, 2008, 21:57:22 pm
Ενώ μου αποθηκεύει όλες τις γωνίες!!!Στο κομμάτι δεν μου κάνει rotate ή mirror!!!!!!

Γιατ?????

Μάλλον υπάρχει θέμα στην placePiece έτσι???
Τί εννοείς, δεν σου το εμφανίζει περιστραμένο/καθρεφτισμένο ή δεν σου αποθηκεύει καν τα αντίστοιχα σχήματα στην places;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 18, 2008, 22:24:40 pm
Χτοπ,Υτοπ εννοούσα τις τελικές συντεταγμένες τοποθέτησης Χ,Υ τις συντεταγμένες του ταμπλό, χ,υ τις τοπικές συντεταγμένες τετραγώνου του κομματιού, Μην σε μπερδεύω όμως, αν το σκέφτηκες με άλλο τρόπο και δουλεύει τότε όλα οκ!


H isValidMove() είναι boolean (true-false).

δεν δουλεyει. βασικα μου τα βαζει σε θεσεις μη εγκυρες,επικαλυπτοντας κοματια κτλ!!!!
αφου καλω την isvalidmove....κ κ μετα προσθετω στ αντιστοιχη δομη...πως ειναι δυνατον να το κανει αυτο??? αλλωστε κ η placepiece  μετα καλει απο μονη της την ιsvalidmove,,,πως γινεται να τα βαζει με επικαληψη??
την isvalidmove την καλω ετσι
                  if (   b.isValidMove( αντικ,τιμη  τιμη, ){
κ προσθετω element αν ειναι true
να την καλεσω αλλιως???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 18, 2008, 22:33:19 pm
Quote
Μπορείς τότε να πεις π.χ.αν θες να ελέγξεις ότι είναι η πρώτη κίνηση του μπλε παίκτη if(b.inventory.size()==21&&c==Color.blue) {..}



μα γιατι να το κανω αυτο?? εγω θελω του τρεχοντα παιχτη κ οχι να βαζω εγω το χρωμα..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 19, 2008, 02:51:02 am
Ίσως δεν κατάλαβες σε ποιές συντεταγμένες αναφέρομαι, αλλά εν πάσει περιπτώσει, η place (της κλάσσης Board) καλεί από μόνη της την isvalidmove, οπότε δεν γίνεται να σου τα βάζει με επικάλυψη. Μήπως αλλάζεις εσύ χειροκίνητα το χρώμα των τετραγώνων του ταμπλό με κάπιο τρόπο;;
Λες "η placepiece  μετα καλει απο μονη της την ιsvalidmove". Δεν την καλεί η placepiece, η place που καλείς για να τοποθετήσει το κομμάτι (b.place(...);), καλεί την isValidMove πρωτού το τοποθετήσει. Μήπως επιχείρησες να προσθέσεις το κομμάτι "χειροκίνητα";

Quote
Μπορείς τότε να πεις π.χ.αν θες να ελέγξεις ότι είναι η πρώτη κίνηση του μπλε παίκτη if(b.inventory.size()==21&&c==Color.blue) {..}



μα γιατι να το κανω αυτο?? εγω θελω του τρεχοντα παιχτη κ οχι να βαζω εγω το χρωμα..
Μα δεν βάζεις εσύ το χρώμα με τον τρόπο που σου λέω. Του λες: ΑΝ είναι μπλε το χρώμα, κάνε αυτό, ΑΝ είναι κίτρινο το χρώμα κάνε αυτό, Αν είναι κόκκινο κ.λ.π. Δλδ πώς αλλιώς θα καταλάβεις ποιός παίκτης παίζει (με άλλα λόγια, τί χρώμα αντιπροσωπεύει το αντικείμενο Color c που δέχεται ως όρισμα η μέθοδος, και το οποίο όταν την καλείς τη μέθοδο στην placePiece είναι το p.getColor() ?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 19, 2008, 12:56:36 pm
Ίσως δεν κατάλαβες σε ποιές συντεταγμένες αναφέρομαι, αλλά εν πάσει περιπτώσει, η place (της κλάσσης Board) καλεί από μόνη της την isvalidmove, οπότε δεν γίνεται να σου τα βάζει με επικάλυψη. Μήπως αλλάζεις εσύ χειροκίνητα το χρώμα των τετραγώνων του ταμπλό με κάπιο τρόπο;;
Λες "η placepiece  μετα καλει απο μονη της την ιsvalidmove". Δεν την καλεί η placepiece, η place που καλείς για να τοποθετήσει το κομμάτι (b.place(...);), καλεί την isValidMove πρωτού το τοποθετήσει. Μήπως επιχείρησες να προσθέσεις το κομμάτι "χειροκίνητα";



βρε παιδι μου,''η placepiece  μετα καλει απο μονη της την ιsvalidmove''',γιατι καλει την place k αυτη με την σειρα της την isvalid. το θεμα ειναι πως τελικα καλειτε η isvalid ,αφου μεσα στην placepiece mou καλω την place (b.place..  . κ ετσι βαζω το κοματι. οποτε...???πως γινετε να το βαζει με επικαληψη???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 19, 2008, 13:02:52 pm


Quote
Μπορείς τότε να πεις π.χ.αν θες να ελέγξεις ότι είναι η πρώτη κίνηση του μπλε παίκτη if(b.inventory.size()==21&&c==Color.blue) {..}



μα γιατι να το κανω αυτο?? εγω θελω του τρεχοντα παιχτη κ οχι να βαζω εγω το χρωμα..
Μα δεν βάζεις εσύ το χρώμα με τον τρόπο που σου λέω. Του λες: ΑΝ είναι μπλε το χρώμα, κάνε αυτό, ΑΝ είναι κίτρινο το χρώμα κάνε αυτό, Αν είναι κόκκινο κ.λ.π. Δλδ πώς αλλιώς θα καταλάβεις ποιός παίκτης παίζει (με άλλα λόγια, τί χρώμα αντιπροσωπεύει το αντικείμενο Color c που δέχεται ως όρισμα η μέθοδος, και το οποίο όταν την καλείς τη μέθοδο στην placePiece είναι το p.getColor() ?

εννοω οτι στο if θελω να βαλω το τρεχον χρωμα..... κ οχι αν ειναι μπλε κανε αυτο κτλ


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: glika on December 19, 2008, 13:06:23 pm
στην κλαση Myset χρησιμοποιω συναρτησεις που υπαρχουν στην vector. ας πουμε χρησιμοποιω την vec.contains για να κανω την contains. είναι σωστο η μηπως καλω την ιδια συναρτηση;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 19, 2008, 14:44:23 pm
Τί εννοείς, δεν σου το εμφανίζει περιστραμένο/καθρεφτισμένο ή δεν σου αποθηκεύει καν τα αντίστοιχα σχήματα στην places;

Όταν πατώ ένα σχήμα για να το επιλέξω, δεν μου το τοποθετεί ποτέ περιστραμένο ή καθρεφτισμένο!!!!

Από ότι βλέπω μου αποθηκεύει τα σχήματα!!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 19, 2008, 15:42:06 pm
???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 19, 2008, 16:13:55 pm
Πέρα από το προηγούμενο πρόβλημα που έχω έχω άλλα δύο!!!!

1)Δεν μου επιλέγει τα κομμάτια που δεν είνα ιτετράγωνα(ενώ εχθές ήταν καλά δεν θυμάμαι τι έκανα!!!!.... :P )

2)Υπάρχει περίπτωση κομμάτι που ταιριάζει να μου βγάλει ότι δεν μπορώ να το βάλω και να επιλέξω άλλο κομμάτι ή μπορεί να μου βγάλει exceptions!!!!!


εδώ είναι οι δύο συναρτήσεις μου add contains για δείτε λίγο μήπως έχουν λάθος!!!Πρέπει να είναι όμως σωστές!!!!


public boolean add(SetElement e){
         for (int i=0;i<vec.size();i++){
            if (contains(e)){
               return false;
            }
         }
            vec.addElement(e);
         return true;
   }
   
   public boolean contains(SetElement e){
      boolean same=false;
      for (int i=0;i<vec.size();i++){
         if (vec.get(i).getCorner()==e.getCorner()&&vec.get(i).getX()==e.getX()&&vec.get(i).getY()==e.getY()){
            for(int j=0;j<e.getShape().length;j++){
               for(int k=0;k<e.getShape()[0].length;k++){
                  if(vec.get(i).getShape()[j][k]==e.getShape()[j][k])
                     same=true;
                  else
                     return false;
               }
            }
         }
      }
      return same;
   }


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 19, 2008, 16:32:49 pm
 Το else return false που έχεις βάλει στην contains,έτσι και βρεί τετράγωνο που δεν είναι όμοιο, κάνει return false,και βγαίνει από τη συνάρτηση. Εσύ δε θές αυτό.Θες αν βρεί ανόμοιο τετράγωνο να σταματήσει τον παρών έλεγχο και να πάει να ελέγξει το επόμενο σχήμα.Χρειάζεσαι επομένως κάποιο break,και κάποιον έλεγχο για το αν είσαι στο τελευταίο αντικείμενο του πίνακα. Βγάλε το else return False λοιπόν και αντικατέστησε το με άλλες εντολές. ;)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 19, 2008, 20:39:50 pm
Ίσως δεν κατάλαβες σε ποιές συντεταγμένες αναφέρομαι, αλλά εν πάσει περιπτώσει, η place (της κλάσσης Board) καλεί από μόνη της την isvalidmove, οπότε δεν γίνεται να σου τα βάζει με επικάλυψη. Μήπως αλλάζεις εσύ χειροκίνητα το χρώμα των τετραγώνων του ταμπλό με κάπιο τρόπο;;
Λες "η placepiece  μετα καλει απο μονη της την ιsvalidmove". Δεν την καλεί η placepiece, η place που καλείς για να τοποθετήσει το κομμάτι (b.place(...);), καλεί την isValidMove πρωτού το τοποθετήσει. Μήπως επιχείρησες να προσθέσεις το κομμάτι "χειροκίνητα";



βρε παιδι μου,''η placepiece  μετα καλει απο μονη της την ιsvalidmove''',γιατι καλει την place k αυτη με την σειρα της την isvalid. το θεμα ειναι πως τελικα καλειτε η isvalid ,αφου μεσα στην placepiece mou καλω την place (b.place..  . κ ετσι βαζω το κοματι. οποτε...???πως γινετε να το βαζει με επικαληψη???

Lol και πώς να ξέρει κανείς αν δεν δει τον κώδικα; Μήπως χρησιμοποιείς τη συνάρτηση b.setColor(...) κάπου και αλλοιώνεις από μόνος σου τον πίνακα;

Ένα παράδειγμα: Βάλε στην PlacePiece τον εξής κώδικα:

Code:
for(int i=0;i<20;i++) {
        for(int j=0;j<20;j++) {
        b.getBoard()[i][j].setColor(Color.yellow);
        }
        }

 :D

Πόσταρε λίγο τον κώδικα της placePiece σου..

εννοω οτι στο if θελω να βαλω το τρεχον χρωμα..... κ οχι αν ειναι μπλε κανε αυτο κτλ
Ε τότε αν ως όρισμα σου δίνεται το Piece p, τότε το τρέχον χρώμα το παίρνεις με την εντολή p.getColor(), αν σου δίνεται το χρώμα κατευθείαν (π.χ. στο όρισμα θα γράφει Color c), τότε χρησιμοποίησε τη μεταβλητή c.

στην κλαση Myset χρησιμοποιω συναρτησεις που υπαρχουν στην vector. ας πουμε χρησιμοποιω την vec.contains για να κανω την contains. είναι σωστο η μηπως καλω την ιδια συναρτηση;
Όχι δεν είναι προφανώς η ίδια συνάρτηση, όμως παραπάνω κάποια παιδιά που τη χρησιμοποίησαν είπαν ότι δεν λειτουργεί σωστά, ο cyberWizard το ανέλυσε καλύτερα λέγοντας πως δεν ελέγχει τα στοιχεία των πινάκων ένα προς ένα.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: testiculos on December 20, 2008, 19:33:08 pm
Τα χρώματα είναι αντικείμενα έτσι?Άρα σύμφωνα με την ανακοίνωση στο e-thmmy δεν μπορώ να χρησιμοποιήσω τον τελεστή == όταν θέλω να τσεκάρω αν δύο χρώματα είναι ίδια. Η λύση είναι η συνάρτηση equals() ???Ή μήπως δεν κάνει διαφορά?

Δηλαδή:

if(b.getBoard()[j].getColor().equals(c))  έτσι ή :

if(b.getBoard()[j].getColor()==c)

?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on December 20, 2008, 19:39:47 pm
το δεύτερο.
if(b.getBoard()[ i ][j].getColor()==c)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: sotos on December 21, 2008, 14:51:03 pm
μήπως ξέρει κάποιος αν έχει σημασία το που θα μπει η MySetaem_aem.....δηλαδή σε ποιο package?

στο πρώτο που έχει τις γνωστες κλάσεις,,,Player Board κτλ

η στο άλλο που έχει την  ΜySet κτλ,,,,,

και επίσης για να τ τρέξεις τι ακριβώς κανεις?

έχει κάποια διαδικασία η απλά το τρέχεις?

ρωτάω γιατί αλλάζω συνεχεια πράματα
και πάντα τρέχει με τον ίδιο λάθος τρόπο.(κανω save)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on December 21, 2008, 14:55:03 pm
Βασικά είναι το ίδιο!!!!

Εάν το βάλεις στην MySet κτλ θα τρέχει καλά...
Εάν το βάλεις στην άλλη με την Player θα πρέπει να κάνεις import το πακέτο που είναι η MySet....

Δηλαδή όπου και να το βάλεις το ίδιο είναι


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on December 22, 2008, 03:20:11 am
Τώρα ξεκίνησα να κάνω την εργασία και μου δημιουργεί αρνητικότατη εντύπωση το ότι έφτιαξαν ένα σαφώς ορισμένο "καλούπι" για να προγραμματίσουμε, περιορίζοντας μας πάάάρα πολύ. Θα προτιμούσα να ήταν πιο free έτσι ώστε να μπορούσαμε να υλοποιήσουμε τη δική μας εκδοχή. Την δική τους την κρίνω υπερπερίπλοκη, αλλά , μην έχοντας κοιτάξει πολύ την εργασία, δεν βάζω και σφραγίδα επειδή μπορει να υπάρχουν μεριές που μου έχουν διαφύγει. Κρίμα πάντως :(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on December 22, 2008, 14:28:26 pm
νωρίς νωρίς βλέπω στρώθηκες Στέλιο!!!!!!!!!!!!!!!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: salala on December 22, 2008, 17:06:59 pm
 Ενώ όλες οι μέθοδοι  φαίνεται να λειτουργούν σωστά για όλα τα κομάτια, μερικά δεν τοποθετούνται στο ταμπλω, ούτε βγαίνει κάποιο error... καμιά ιδέα για το τι μπορεί να συμβαίνει;

λίγο γενικόλογη η ερώτηση...  :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 19:41:54 pm
στην placepiece χρησιμοποιω την b.place ( p.clone,p.getShape(), a )    οπου α πινακας με 2 στοιχεια
βαζει το κοματι στο βοαρδ αλλα δεν αφαιρει το κοματι απο το invetory. giati?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 19:45:46 pm
υπαρχει κανεις που του τρεχουν ολα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on December 22, 2008, 19:46:34 pm
στην placepiece χρησιμοποιω την b.place ( p.clone,p.getShape(), a )    οπου α πινακας με 2 στοιχεια
βαζει το κοματι στο βοαρδ αλλα δεν αφαιρει το κοματι απο το invetory. giati?


giati prepei na to afaireseis xeirokinita


exei mia me9odo removeFromInventory an 8ymamai kala



a


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: deva_09 on December 22, 2008, 20:02:53 pm
Στην Contains και συγκεκριμένα εκεί που συγκρίνω τα shape, δηλαδή στο
if(vec.get(i).getShape()[j][k]==e.getShape()[j][k])
μου βγάζει exception ArrayIndexOutOfBounds...
Αυτό δε σημαίνει ότι βγαίνει εκτός ορίων; Έχει κανεις ιδέα γιατί; Πρέπει να βάλω κάποιο περιορισμό;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 20:04:14 pm
στην placepiece χρησιμοποιω την b.place ( p.clone,p.getShape(), a )    οπου α πινακας με 2 στοιχεια
βαζει το κοματι στο βοαρδ αλλα δεν αφαιρει το κοματι απο το invetory. giati?


giati prepei na to afaireseis xeirokinita


exei mia me9odo removeFromInventory an 8ymamai kala



a


public void place( Piece piece, boolean[][] shape, int[] location )
   {
      Player lastPlayer;
      Piece newPiece = new Piece(piece.getColor(), shape);
      //Check whether it's a valid move and whether it's this player's turn
      if (activePlayer == getPlayerForColor(piece.getColor()) &&
            isValidMove(newPiece, location[0], location[1])) {
         //Change the color on the board
         for (int i=location[0];i<location[0]+shape.length;i++) {
            for (int j=location[1];j<location[1]+shape[0].length;j++) {  
               if (shape[i-location[0]][j-location[1]]) {
                  (board[j]).setColor(piece.getColor());
               }
            }
         }

         //Unset possible preview moves
         tempPiece = null;
         revertTemp();

         activePlayer.removeFromInventory(piece);
                                                    .
                                                       .


η place to Κανει απο μονη της οπως φαινεται πιο πανω.....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 20:11:39 pm
Στην Contains και συγκεκριμένα εκεί που συγκρίνω τα shape, δηλαδή στο
if(vec.get(i).getShape()[j][k]==e.getShape()[j][k])
μου βγάζει exception ArrayIndexOutOfBounds...
Αυτό δε σημαίνει ότι βγαίνει εκτός ορίων; Έχει κανεις ιδέα γιατί; Πρέπει να βάλω κάποιο περιορισμό;
o πινακας shape του ενος,στην γενικη περιπτωση εχει διαφορετικες διαστασεις απο του αλλου
οποτε εσυ πρεπει να ελεγ εις κατ αρχην αν εχουν τις ιδιες διαστασεις
κ μετα να κανεις τον ελεγχο που κανεις.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 22, 2008, 20:14:05 pm
Και εμένα δεν το έκανε στην αρχή και έλεγα γιατί...Βεβαιωθείτε 1) ότι δεν γίνεται ξανά Initialize το Inventory σε κάθε κλήση, 2) Ότι η δομή places,είναι άδεια στο τέλος της κλήσης. Αν δεν αδειάσετε την places manually, θα συνεχίσει κατά πάσα πιθανότητα να κρατάει τα προηγούμενα στοιχεία,με αποτέλεσμα να μπαίνουν κομμάτια στο ταμπλώ που έχουν ξαναμπεί...και τότε η place θα τα παίξει γιατί θα παέι να βγάλει από το nventory κάτι που έχει ήδη βγεί, και άντε γεια!

Αν όλα αυτά δε δουλέψουν, ε, βάλτε removeFromInventory(p) νομίζω την λένε, μετά την place.Θα την βρείτε στο Board αν θυμάμαι καλά.

@deva_09 Ναι,ο πίνακας βγαίνει εκτός ορίων.Έλεγξε αν τα σχήματα έχουν ίδιες διαστάσεις, με κάποιον περιορισμό,πριν τους βρόχους σου.Κατόπιν έλεγξε ότι παίρνεις γραμμές και στήλες. ΠΧ. για να πάρεις γραμμές γράφεις e.getshape().length
και για στήλες e.getshape()[0].length


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 20:24:48 pm


Αν όλα αυτά δε δουλέψουν, ε, βάλτε removeFromInventory(p) νομίζω την λένε, μετά την place.Θα την βρείτε στο Board αν θυμάμαι καλά.



μα η Place καλει μεσα της την removeFromInventory!!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 22, 2008, 20:30:03 pm
Έτσι είναι,και πρέπει κανονικά να δουλεύει! ΑΝ δεν φαίνεται να δουλεύει,μπορείς να το κάνεις και χειροκίνητα,αυτό λέω. Πάντως για να μη δουλεύει,σημαίνει μάλλον πώς πάει να το κάνει,και κάπου κολλάει.Είτε λαμβάνει λάθος το σχήμα,είτε το έχει βγάλει ήδη.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: deva_09 on December 22, 2008, 20:38:33 pm
Ευχαριστώ για τη βοήθεια το διόρθωσα αλλά τώρα βγάζει άλλο λάθος.. >:(
Γράφω πρίν τους βρόχους τον εξής περιορισμό:
if((vec.get(i).getShape().length==e.getShape().length)&&(vec.get(i).getShape()[0].length==e.getShape()[0].length)) {
και μου βγάζει NullPointerException...
Αν μπορεί να μου πει κανείς τι σημαίνει αυτό και γιατί το βγάζει...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on December 22, 2008, 20:47:27 pm
Η συνάρτηση add, καλεί την contains σωστά...? Ναι αλλά υπάρχει μια φάση που το πρώτο στοιχείο του SetElement είναι Null...στην ScanTheBoard! Οπότε τί κάνεις? Βγάζεις τον έλεγχο από την add,ώστε να μην στέλνει στοιχεία με Null στο σχήμα στην contains,και κάνεις όλους τους ελέγχους στην player μέσω της contains.
Προφανώς,στην ScanTheBoard,δεν κάνεις ελέγχους,γιατί θα σου βγάλει το ίδιο λάθος.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 22, 2008, 21:36:06 pm
ποτε δουλευει κ ποτε κολαει. ελεος? βαρεθηκα


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 22, 2008, 22:14:42 pm
Tiger ελπίζω να σε πρόλαβα.. έτσι όπως το βλέπω, κάνεις σοβαρό λάθος. Βάζεις στην b.place p.clone() αντί για p! Επειδή η μέθοδος p.clone() δημιουργεί ένα καινούργιο αντικείμενο.. δεν το αφαιρεί επειδή δεν υπάρχει. Βάλε p και θα δουλέψει. Υποθέτω συμβαίνει διότι δίνεις ως όρισμα τη διεύθυνση του p, αυτό καθ'αυτό το κομμάτι, και έτσι ξέρει τί να αφαιρέσει.

Το p.clone() το βάζεις στην findwhereitfits που θέλεις να κάνεις σύγκριση, για να μην αλλοωθεί κατα λάθος το p από τις περιστρεοφές και τους καθρεφτισμούς.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on December 22, 2008, 22:21:51 pm
Και εμένα δεν το έκανε στην αρχή και έλεγα γιατί...Βεβαιωθείτε 1) ότι δεν γίνεται ξανά Initialize το Inventory σε κάθε κλήση, 2) Ότι η δομή places,είναι άδεια στο τέλος της κλήσης. Αν δεν αδειάσετε την places manually, θα συνεχίσει κατά πάσα πιθανότητα να κρατάει τα προηγούμενα στοιχεία,με αποτέλεσμα να μπαίνουν κομμάτια στο ταμπλώ που έχουν ξαναμπεί...και τότε η place θα τα παίξει γιατί θα παέι να βγάλει από το nventory κάτι που έχει ήδη βγεί, και άντε γεια!
Η places δεν χρειάζεται να την αδειάσεις manually, αδειάζει από μόνη της.. διότι καταστρέφεται μόλις εκτελέσεις την placePiece. Μετά όταν ξανακαλείς την placePiece για ένα καινούργιο κομμάτι, τη δημιουργείς εκ νέου. Τα ίδια ισχύουν και για τα άλλα αντικείμενα που δημιουργείς στις υπόλοιπες συναρτήσεις.

Στο 1) δεν κατάλαβα τί εννοείς ακριβώς, αλλά νομίζω ότι δεν χρειάζεται να ελέγξεις κάτι για το inventory.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 22, 2008, 22:35:58 pm
Ακολουθεί χαζή ερώτηση:


Έχασα το πρώτο εργαστήριο γιαυτό παρακαλώ διαφωτίστε με,

τα αρχεία .class που ζητάει, πώς τα φτιάχνω;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on December 22, 2008, 22:39:07 pm
Ακολουθεί χαζή ερώτηση:


Έχασα το πρώτο εργαστήριο γιαυτό παρακαλώ διαφωτίστε με,

τα αρχεία .class που ζητάει, πώς τα φτιάχνω;

Τρέχεις το πρόγραμμα, και εμφανίζονται αυτόματα στο φάκελο bin στο workspace :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 22, 2008, 22:43:13 pm
ευχαριστώ  ('',)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on December 22, 2008, 22:44:18 pm
νωρίς νωρίς βλέπω στρώθηκες Στέλιο!!!!!!!!!!!!!!!!!
πρώτος πρώτος :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on December 23, 2008, 00:10:24 am
Tiger ελπίζω να σε πρόλαβα.. έτσι όπως το βλέπω, κάνεις σοβαρό λάθος. Βάζεις στην b.place p.clone() αντί για p! Επειδή η μέθοδος p.clone() δημιουργεί ένα καινούργιο αντικείμενο.. δεν το αφαιρεί επειδή δεν υπάρχει. Βάλε p και θα δουλέψει. Υποθέτω συμβαίνει διότι δίνεις ως όρισμα τη διεύθυνση του p, αυτό καθ'αυτό το κομμάτι, και έτσι ξέρει τί να αφαιρέσει.

Το p.clone() το βάζεις στην findwhereitfits που θέλεις να κάνεις σύγκριση, για να μην αλλοωθεί κατα λάθος το p από τις περιστρεοφές και τους καθρεφτισμούς.

αυτο το διορθωσα αμεσως μετα
παλι ομως για αλλα κοματια δουλευει κ για αλλα...κολαει κ δεν κανει τιποτα
τεσπα
εκανα login forever στο thmmyκ ψαχνω το logout ...
ποου ειναι κρυμενο?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on December 23, 2008, 00:13:32 am
ένα πράσινο παιδάκι πάνω αριστερά...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: MARIOS on January 05, 2009, 00:16:32 am
Πότε θα βάλει την τρίτη???

Εκείνη θα είναι η μόνη που θα αξίζει λογικά....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 11, 2009, 15:31:45 pm
....ναι θυμηθηκαν να την βαλουν 8 ιανουαριου....

εχω προβλημα. την δευτερη εργασια την εκανα ,αλλα ενω για καποια κοματια δουλευει κανονικα,για αλλα οταν τα επιλεγεις δεν κανει τιποτα.,χωρις να βγαζει καποιο exception  η κατι.

κ χωρις μια δευτερη εργασια να τρεχει,δεν μπορω να κανω την τριτη,οπως θα ανακαλυψατε οσοι διαβασατε την εκφωνηση της τριτης εργασιας.  ελεγα μηπως καποιος ειχε την διαθεση να του στειλω την δικη μου κ να ριξει μια απλη  ματια,η πχ να βαλει μονο το ΜySet μου η μονο μια μεθοδο απ ολες,αντι την δικης του κ να τρεξει το προγραμμα εστω να καταλαβω που να κοιταξω για λαθη. η να μου στειλει την δικη του ,να καταλαβω τι παιζει,μια κ την εχουμε παραδωσει ηδη.
θελω να δοκιμασω να κανω κ την τριτη κ χωρις δευτερη να δουλεβει πληρως....δεν μπορω να κανω τιποτα:(


βασικα οπως φαινεται το προβλημα βρισκεται στην place piece μου. αν καποιος εχει την διαθεση να μου στειλει μια placepiece σε pm, ας το κανει.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: salala on January 11, 2009, 18:08:35 pm
κι εγώ το ίδιο πρόβλημα έχω... οπότε αν βρεις άκρη...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 11, 2009, 21:10:58 pm
βασικα θα το εκτιμουσα πολυ αν ειχα μια placepiece για να δοκιμασω τι παιζει,
  ολα τα αλλα φαινεται να λειτουργουν σωστα. πχ η δομη places μου σε ττυχαιο κοματι ''γεμιζει '' με 8 στοιχεια, μα οταν το επιλεγω δεν κανει τιποτα


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on January 16, 2009, 18:23:59 pm
"Η τρίτη εργασία προϋποθέτει τη λύση της δεύτερης, δηλαδή τις υλοποιημένες μεθόδους placePiece, scanTheBoard και findWhereItFits, καθώς και την κλάση MySetΧΧΧΧ-ΧΧΧΧ, όπως τις έχετε υλοποιήσει."

Με μια προχειρη ματια βλεπω πως υπαρχει κωδικας στις συναρτησεις placePiece, scanTheBoard και findWhereItFits, καθώς και μια κλάση MySet0. Για ποιο λογο παρχουν αυτες; Θα τις αντικαταστησουμε με τις δικιές μας απο την 2η εργασια, ή θα προσθεσουμε επιπλέον και τον δικο μας κωδικά κρατωντας και αυτες;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: stefos on January 16, 2009, 18:34:04 pm
Μάλλον έχεις ανοίξει την ανανεωμένη έκδοση του αρχείου zip που έχει ανεβεί στο οποίο περιλαμβάνεται η λύση της δεύτερης εργασίας, προς διευκόλυνσή μας.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on January 16, 2009, 20:11:16 pm
Σοβαρά παίζει κάτι τέτοιο; Χμ...
Υποθέτω πως όσοι έχουμε κάνει την 2η και είμαστε περήφανοι γι'αυτήν βαζουμε τον δικό μας κώδικα έτσι;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 16, 2009, 20:13:52 pm
ναι μπορείς να χρησιμοποιήσεις το δικό σου κώδικα..
Αλλα όλα αυτά υπάρχουν και στο τόπικ των ανακοινώσεων...κάνε ένα κόπο και διάβασε τι έχουν ποστάρει και εκει...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 17, 2009, 02:11:19 am
ναι ο κωδικας με την λυση της 2 προστεθηκε αργοτερα ,αφου το ζητησα προσωπικα απο τον κ Μητκα,μια κ εξ αρχης ειχε πει κ αυτος κ οι βοηθοι πως καποιος θα μπορει να κανει τις εργασιες με οποιοδηποτε συνδιασμο πχ την 1 κ την 3 κτλ

αν ο κωδικας σου τρεχει σωστα, βαλτον.

πως θα παρω ενα κλωνο του board?? ( μη μου πειτε b.clone() δεν ειναι αποδεκτη εντολη


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on January 17, 2009, 18:02:39 pm
πως θα παρω ενα κλωνο του board?? ( μη μου πειτε b.clone() δεν ειναι αποδεκτη εντολη
Γιατί δεν είναι αποδεκτή; :???: (δεν έχω αρχίσει ακόμα την 3η εργασία επομένως δεν διαφωνώ, απλά από περιέργεια)

Μπορείς να δημιουργήσεις ένα καινούργιο αντικείμενο board και με μια for να αντικαταστήσεις κάθε στοιχείο του πίνακα board τύπου Box του καινούργιου αντικειμένου, με το κλασσικό Board.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 18, 2009, 16:20:27 pm
γιατι ο  eclipse οποτε θελει δεχετε τις μεθοδους,κ οποτε του καπνισει η δεν θελει οχι. δεν ξερω γιατι,μου το κανει πολλες φορες., ειναι κανονικα υλοποιημενη αλλα κανει τα δικα του o eclipse κ δεν ξερω γιατι


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 18, 2009, 16:48:42 pm
γιατι ο  eclipse οποτε θελει δεχετε τις μεθοδους,κ οποτε του καπνισει η δεν θελει οχι. δεν ξερω γιατι,μου το κανει πολλες φορες., ειναι κανονικα υλοποιημενη αλλα κανει τα δικα του o eclipse κ δεν ξερω γιατι

βασικα αυτό που λές νομίζω ότι δε στέκει λογικα...μήπως το λάθος οφείλεται κάπου αλλού και όχι σε "βίτσια " του eclipse?
σχετικα με το πως θα κλωνοποιήσεις τον πίνακα και εγώ την b.clone σκέφτομαι να χρησιμοποιήσω..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 18, 2009, 23:37:52 pm
δεν με νοιαζει αν στεκει για σενα...
εγω ξερω οτι ο eclipse μου κανει νερα

καντο ετσι οπως λες κ θα δουλεψει. σε μενα κανει νερα  εγραψα...οχι σε σενα.
μου τα κανε απο την αρχη δεν ξερω γιατι


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 18, 2009, 23:47:33 pm
ok.... chill!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 18, 2009, 23:48:47 pm
διαπιστωσε κανενας σας λαθη στον κωδικα που εχουν ανεβασει στο ethmmy??

επισυναπτω 3 αρχεια
σε καθε ενα τρεχει -απο τον κωδικα που δοθηκε με μονη προσθηκη την εκτυπωση του πληθους των στοιχειων της δομης places δηλαδη των ολων των εγκυρων τοποθετησεων

ειναι τρια ενεξαρτητα παιχνιδια κ εχω βαλει μονο τον κιτρινο παιχτη να ειναι computer ενω οι αλλοι ειναι human

οπως θα δειτε στις εικονες ,καθε φορα που εχει γινει μια τοποθετηση κιτρινου κοματιου,εχει εκτυπωθει κ το πληθος των εγκυρων τοποτηετησεων γι αυτη την κινηση.
οπως ειναι προφανες ..οι εγκυρες κινησεις ειναι περισοτερες απο αυτες που εκτυπωθηκαν- κ αρα υπολογιστηκαν]]
αρα....το προγραμμα που μας δωθηκε ως βαση.... κ για την ωρα τρεχει σωστα-υποτιθεται απλα τοποθετωντας τυχαια τα κοματια- ΔΕν τρεχει σωστα\
δειτε κ πειτε μου αν συμφωνειτε

-ειδικα στο τριτο αρχειο φαινεται χωρις να χρειαστει να κανετε κανενα υπολογισμο οτι  για την πρωτη κινηση υπολογισε μια σωστη τοποθετηση.ενω υπαρχουν παραπανω ,ειναι προφανες


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 18, 2009, 23:52:46 pm
ειδικα στο αρχειο blocus3 κανει μπαμ οτι για την πρωτη κ ινηση υπολογισε μια μονο τοποθετηση\
ενω ειναι προφανες οτι υπαρχουν παραπανω
για τις αλλες,  και τα αλλα αρχεια θα πρεπει να το υπολογισετε λιγο


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 19, 2009, 00:01:56 am
...χμ...εσεις οι 5 που το ειδατε...δεν εχετε γνωμη?? δεν ειναι προφανες ειδικα στο blocus3?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: manolios on January 19, 2009, 12:51:26 pm

Πως ξέρεις ότι έχει παραπάνω εγκυρες κινήσεις;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: manolios on January 19, 2009, 12:53:14 pm
Μαλακια είπα. Μάλλον εχει λάθος.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 19, 2009, 16:30:07 pm
 Ρε παιδια πως δινουμε σε εναν board μια καινουρια θεση ενος κοματιου? οταν βαζω place και το κοματι με τις συντεταγμενες του για να το υπολογισω αυτο το υπολογιζει αλλα παιζει και την κινηση!  :o oποτε δεν μπορω να συνεχισω για να βρω την καλυτερη κινηση αφου εχει ηδη παιξει την κινηση. τι μπορω να κανω? εσεις πως το κανατε?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on January 19, 2009, 20:24:56 pm
Υπάρχει κλάση στην java που να υλοποιεί δέντρο; Δεν έχω βρει κατι τετοιο...

Βρήκα στο internet μια κλάση της java που υλοποιεί δέντρο, που δεν υπάρχει στο πακέτο της java, αλλα την έχει γράψει κάποιος άλλος.
Μπορώ λες να χρησιμοποιήσω αυτή η θα υπάρξει πρόβλημα;

Γενικά, πως θα υλοποιήσουμε το δέντρο;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 19, 2009, 20:45:11 pm
Ρε παιδια πως δινουμε σε εναν board μια καινουρια θεση ενος κοματιου? οταν βαζω place και το κοματι με τις συντεταγμενες του για να το υπολογισω αυτο το υπολογιζει αλλα παιζει και την κινηση!  :o oποτε δεν μπορω να συνεχισω για να βρω την καλυτερη κινηση αφου εχει ηδη παιξει την κινηση. τι μπορω να κανω? εσεις πως το κανατε?
εγώ δεν το έχω τρέξει με τον κανούριο κώδικα (ακόμα τον γράφω.. :) ) αλλα μήπως δεν κλωνοποίησες τον πίνακα πριν χρησιμοποιησεις την place?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 19, 2009, 20:51:56 pm
Ρε παιδια πως δινουμε σε εναν board μια καινουρια θεση ενος κοματιου? οταν βαζω place και το κοματι με τις συντεταγμενες του για να το υπολογισω αυτο το υπολογιζει αλλα παιζει και την κινηση!  :o oποτε δεν μπορω να συνεχισω για να βρω την καλυτερη κινηση αφου εχει ηδη παιξει την κινηση. τι μπορω να κανω? εσεις πως το κανατε?
εγώ δεν το έχω τρέξει με τον κανούριο κώδικα (ακόμα τον γράφω.. :) ) αλλα μήπως δεν κλωνοποίησες τον πίνακα πριν χρησιμοποιησεις την place?
Μα τον κλωνοποιησα και αυτο ειναι το περιεργο. αρχικα οριζω τον κλωνο:
Board klonosB και μετα γραφω  klonos=b.clone()
και τρεχω με το  klonos.place(piece, se.getshape(),location)
το κακο ειναι οτι οποτε τρεχω το παραπανω με την place αυτο εκτελει στην οθονη την κινηση και ετσι δεν γινεται να βρω την καλυτερη κινηση για μετα αφου εχει ηδη παιξει.τι πρεπει να κανουμε για να μην παιξει στην οθονη την κινηση? επισης χρειαζεται να φτιαξουμε δεντρο πραγματι?

αυτο που λεει ο tiger παιζει να ειναι αληθεια? αμα ειναι ετσι δεν θα βρισκουμε λαθος κινησεις?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 20, 2009, 00:06:22 am
Ρε παιδια πως δινουμε σε εναν board μια καινουρια θεση ενος κοματιου? οταν βαζω place και το κοματι με τις συντεταγμενες του για να το υπολογισω αυτο το υπολογιζει αλλα παιζει και την κινηση!  :o oποτε δεν μπορω να συνεχισω για να βρω την καλυτερη κινηση αφου εχει ηδη παιξει την κινηση. τι μπορω να κανω? εσεις πως το κανατε?
εγώ δεν το έχω τρέξει με τον κανούριο κώδικα (ακόμα τον γράφω.. :) ) αλλα μήπως δεν κλωνοποίησες τον πίνακα πριν χρησιμοποιησεις την place?
Μα τον κλωνοποιησα και αυτο ειναι το περιεργο. αρχικα οριζω τον κλωνο:
Board klonosB και μετα γραφω  klonos=b.clone()
και τρεχω με το  klonos.place(piece, se.getshape(),location)
το κακο ειναι οτι οποτε τρεχω το παραπανω με την place αυτο εκτελει στην οθονη την κινηση και ετσι δεν γινεται να βρω την καλυτερη κινηση για μετα αφου εχει ηδη παιξει.τι πρεπει να κανουμε για να μην παιξει στην οθονη την κινηση? επισης χρειαζεται να φτιαξουμε δεντρο πραγματι?

αυτο που λεει ο tiger παιζει να ειναι αληθεια? αμα ειναι ετσι δεν θα βρισκουμε λαθος κινησεις?

Σχετικα με αυτά που λέει ο tiger δεν τον είδα τον ετοιμο κώδικα-χρησιμοποίησα τον δικό μου..αλλα μόνο με τα printscreen που είδα μαλλον έχει δίκιο...αν θες κοιταξε τον κώδικα μήπως βρεις που είναι το λάθος και στείλε μαιλ...

Οσον αφορά την κλωνοποίηση του πίνακα απο αυτά που μου λες δεν τον έχεις τελειώσει και εσυ τον κωδικα σου με τον αλγόριθμο minimax επομένως μπορει έτσι όπως τον έχεις γραμμενο να καταλαβαίνει ότι πρέπει με την places να τοποθετήσει κομμάτι...(αν θες ανεβασε κομμάτι του κωδικά σου ή στειλε pm  να σου πω πιο συγκεκριμένα, για να έχω και ολοκληρωμένη εικόνα του τι κάνεις...)
Τέλος,ναι πρέπει να φτιάξεις δέντρο (υπάρχουν διαφοροι τρόποι για να το κάνεις αυτό ,όπως πχ να δημιουργήσεις καινούρια κλάση και να κάνεις εκεί τη δομή του) ώστε να υλοποιήσεις τον αλγόριθμο που ζητείται..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 20, 2009, 01:04:17 am
Ρε παιδια πως δινουμε σε εναν board μια καινουρια θεση ενος κοματιου? οταν βαζω place και το κοματι με τις συντεταγμενες του για να το υπολογισω αυτο το υπολογιζει αλλα παιζει και την κινηση!  :o oποτε δεν μπορω να συνεχισω για να βρω την καλυτερη κινηση αφου εχει ηδη παιξει την κινηση. τι μπορω να κανω? εσεις πως το κανατε?
εγώ δεν το έχω τρέξει με τον κανούριο κώδικα (ακόμα τον γράφω.. :) ) αλλα μήπως δεν κλωνοποίησες τον πίνακα πριν χρησιμοποιησεις την place?
Μα τον κλωνοποιησα και αυτο ειναι το περιεργο. αρχικα οριζω τον κλωνο:
Board klonosB και μετα γραφω  klonos=b.clone()
και τρεχω με το  klonos.place(piece, se.getshape(),location)
το κακο ειναι οτι οποτε τρεχω το παραπανω με την place αυτο εκτελει στην οθονη την κινηση και ετσι δεν γινεται να βρω την καλυτερη κινηση για μετα αφου εχει ηδη παιξει.τι πρεπει να κανουμε για να μην παιξει στην οθονη την κινηση? επισης χρειαζεται να φτιαξουμε δεντρο πραγματι?

αυτο που λεει ο tiger παιζει να ειναι αληθεια? αμα ειναι ετσι δεν θα βρισκουμε λαθος κινησεις?

Σχετικα με αυτά που λέει ο tiger δεν τον είδα τον ετοιμο κώδικα-χρησιμοποίησα τον δικό μου..αλλα μόνο με τα printscreen που είδα μαλλον έχει δίκιο...αν θες κοιταξε τον κώδικα μήπως βρεις που είναι το λάθος και στείλε μαιλ...

Οσον αφορά την κλωνοποίηση του πίνακα απο αυτά που μου λες δεν τον έχεις τελειώσει και εσυ τον κωδικα σου με τον αλγόριθμο minimax επομένως μπορει έτσι όπως τον έχεις γραμμενο να καταλαβαίνει ότι πρέπει με την places να τοποθετήσει κομμάτι...(αν θες ανεβασε κομμάτι του κωδικά σου ή στειλε pm  να σου πω πιο συγκεκριμένα, για να έχω και ολοκληρωμένη εικόνα του τι κάνεις...)
Τέλος,ναι πρέπει να φτιάξεις δέντρο (υπάρχουν διαφοροι τρόποι για να το κάνεις αυτό ,όπως πχ να δημιουργήσεις καινούρια κλάση και να κάνεις εκεί τη δομή του) ώστε να υλοποιήσεις τον αλγόριθμο που ζητείται..
αυτο που λεω ειναι οτι η place ειναι αχρηστη στο να τοποθετησουμε ενα κοματι σε εναν board και να δουμε την evaluation του board αφου μολις γραψουμε place με οποιοδηποτε πινακα για ορισμα, πχ klonos.place() μας εμφανιζει την κινηση στην οθονη και δεν μπορουμε να κανουμε τιποτα απο κει και επειτα. οσο για το δεντρο του minmax τι ακριβως πρεπει να κανουμε? πρεπει να σωζουμε ολες τις κινησεις σε κανενα πινακα?δεν θα φαει απειρη μνημη αυτο? επισης το βαθος που πρεπει να ψαχνει συμφωνα με την εκφωνηση ειναι 3 ε? οσο για τις πιθανες κινησεις εγω δεν χρησιμοποιω τον κωδικα τους πλεον αφου οπως λετε εχει προβλημα και δειχνει λαθος τιμες.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 21, 2009, 02:42:43 am
""""
αυτο που λεει ο tiger παιζει να ειναι αληθεια? αμα ειναι ετσι δεν θα βρισκουμε λαθος κινησεις?""""


για να το δοκιμασεις κ εσυ αν θες,            ειτε στο κωδικα τον δικο σου,             ειτε στον δικο τους... -γιατι ολοι μας νομιζουμε το καναμε σωστα...αλλα......

απλα βαλε την εντολη   System.out.println(places.size()+" plithos tou places");
ακριβως πριν την τελευταιa εντολη της findwhereitfits  που ειναι η return places



α και εμενα η κλωνος.Place δεν τοποθετει στο board. αλλα στο κλωνος.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: FireStarter on January 21, 2009, 03:48:40 am
Καμια πρόταση για το πως θα υλοποιήσουμε το δέντρο;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 21, 2009, 12:54:49 pm
""""
αυτο που λεει ο tiger παιζει να ειναι αληθεια? αμα ειναι ετσι δεν θα βρισκουμε λαθος κινησεις?""""


για να το δοκιμασεις κ εσυ αν θες,            ειτε στο κωδικα τον δικο σου,             ειτε στον δικο τους... -γιατι ολοι μας νομιζουμε το καναμε σωστα...αλλα......

απλα βαλε την εντολη   System.out.println(places.size()+" plithos tou places");
ακριβως πριν την τελευταιa εντολη της findwhereitfits  που ειναι η return places



α και εμενα η κλωνος.Place δεν τοποθετει στο board. αλλα στο κλωνος.
Σευχαριστω φιλε, πραγματι η δικη τους βγαζει διαφορετικα αποτελεσματα απο τα πραγματικα, εχεις δικιο. το κακο ειναι οτι και η δικια μου finditfits βρισκει λαθος αποτελεσματα, μπορω να κανω κατι για αυτο? οσο για την κλωνος.place σοβαρα δεν το τοποθετει? πως το δοκιμασες οτι ειναι ετσι πραγματι? για δοκιμασε να γραψεις μεσα στην getnextmove μονο κλωνος.place χωρις b.place και πες μου αν το τοποθετει ή οχι.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 21, 2009, 17:22:44 pm
Παιδιά εμένα η κλώνος.place δεν κάνει τίποτα. Δεν βάζει κανένα κομμάτι στο εικονικό ταμπλώ. Βέβαια αν ρίξετε μια ματιά στον κώδικα της place,δείχνει να δουλεύει μόνο όταν το χρώμα του κομματιού προς τοποθέτηση ανήκει στον Active player.Δηλαδή,λογικά,αν πας να βάλεις κόκκινο κομμάτι ενώ παίζει ο κίτρινος,δεν πρέπει να σε αφήνει.

Εγώ δοκίμασα με μια δική μου συνάρτηση χωρίς περιορισμό χρώματος,αλλά πάλι δεν φαίνεται να συμβαίνει τίποτα.Ο έλεγχος γίνεται με χρήση της scantheboard στο cloned Board. Δεν ξέρω,όποιος έχει κάποια ιδέα για την σωστή κλωνοποίηση ταμπλώ και τοποθέτηση κομματιών ας μας πεί.


BTW : Όντως, η places επιστρέφει ότι να ναι! Νομίζω θα δοκιμάσω να την αντικαταστήσω με την δικιά μου από την προηγούμενη εργασία που τουλάχιστον ξέρω πως δούλευε....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Issle on January 22, 2009, 04:51:54 am
Καταρχάς η εντολή board.clone() δημιουργεί έναν καινούργιο πίνακα ο οποίος έχει ώς activePlayer =null. Η συνάρτηση place() "ζωγραφίζει" τον πίνακα μόνο όταν ο activePlayer είναι διάφορος του null και όταν η isvalidmove() αληθεύει για την κίνησή μας.

Από τους δύο παραπάνω περιορισμούς ο δεύτερος πάντα εκπληρώνεται καθώς οι κινήσεις που προσπαθούμε να κάνουμε είναι μέλη μιας δομής MySet, η οποία έχει προέρθει από την findWhereItFits() η οποία κάνει έλεγχο εγκυρότητας. Αν προσπαθήσει κανείς να επιρεάσει την clone() και αν ορίσει τον activePlayer τότε προκαλούνται exceptions ( που δεν μπήκα στον κόπο να διαβάσω , 3:36 είναι κακή ώρα για σπαζοκεφαλίές ..).

Μια απλή λύση ( που σώζει και χρόνο εκτέλεσης) είναι να μην χρησημοποιειθεί ολόκληρη η place() αλλά μόνο το μέρος της που χρωματίζει τον πίνακα. Χωρίς δηλαδή να ελεγθούν οι προυποθέσεις ( Read Description ) και χωρίς να λάβει κανείς υπόψη τα inventory των παιχτών.

Description:

-Για την κατασκευή του δένδρου οι κινήσεις προέρχονται απο την findwhereitfits() η οποία στο σώμα της έχει αποκλήσει το ενδεχόμενο παράνομων κινήσεων. Οπότε το να ελεγθεί ξανά η κίνηση με την isvalidmove() για εγκυρότητα είναι περιττό.

-Ο activePlayer και η μεταβολή του Inventory του κάθε παίχτη δεν παρουσιάζουν κανένα ενδιαφέρον άν το δένδρο δεν έχε βάθος πάνω απο 4( credits to Wade για το Inventory  ;)), γιατί μέσα σε ένα δένδρο ο ίδιος παίχτης δεν θα κληθεί να παίξει "εικονικά" 2 φορές.

Αυτά, από μια πρόχειρη μεταμεσονύκτια ματιά...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 22, 2009, 14:33:35 pm
πρέπει οπωσδήποτε να χρησιμοποιήσω τον κώδικα που μας δίνουν στο ετημμυ??
δεν μπορώ απλά να συνεχίσω σε αυτό που ανέβασα στη 2η εργασία???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 22, 2009, 14:40:19 pm
Καταρχάς η εντολή board.clone() δημιουργεί έναν καινούργιο πίνακα ο οποίος έχει ώς activePlayer =null. Η συνάρτηση place() "ζωγραφίζει" τον πίνακα μόνο όταν ο activePlayer είναι διάφορος του null και όταν η isvalidmove() αληθεύει για την κίνησή μας.

Από τους δύο παραπάνω περιορισμούς ο δεύτερος πάντα εκπληρώνεται καθώς οι κινήσεις που προσπαθούμε να κάνουμε είναι μέλη μιας δομής MySet, η οποία έχει προέρθει από την findWhereItFits() η οποία κάνει έλεγχο εγκυρότητας. Αν προσπαθήσει κανείς να επιρεάσει την clone() και αν ορίσει τον activePlayer τότε προκαλούνται exceptions ( που δεν μπήκα στον κόπο να διαβάσω , 3:36 είναι κακή ώρα για σπαζοκεφαλίές ..).

Μια απλή λύση ( που σώζει και χρόνο εκτέλεσης) είναι να μην χρησημοποιειθεί ολόκληρη η place() αλλά μόνο το μέρος της που χρωματίζει τον πίνακα. Χωρίς δηλαδή να ελεγθούν οι προυποθέσεις ( Read Description ) και χωρίς να λάβει κανείς υπόψη τα inventory των παιχτών.

Description:

-Για την κατασκευή του δένδρου οι κινήσεις προέρχονται απο την findwhereitfits() η οποία στο σώμα της έχει αποκλήσει το ενδεχόμενο παράνομων κινήσεων. Οπότε το να ελεγθεί ξανά η κίνηση με την isvalidmove() για εγκυρότητα είναι περιττό.

-Ο activePlayer και η μεταβολή του Inventory του κάθε παίχτη δεν παρουσιάζουν κανένα ενδιαφέρον άν το δένδρο δεν έχε βάθος πάνω απο 4( credits to Wade για το Inventory  ;)), γιατί μέσα σε ένα δένδρο ο ίδιος παίχτης δεν θα κληθεί να παίξει "εικονικά" 2 φορές.

Αυτά, από μια πρόχειρη μεταμεσονύκτια ματιά...

εμένα δε μου πέταξε κάποιο exception με την place.... παρ όλο που πιστεύω το έχω κάνει με τον κλώνο....

και όσον αφορά τον inventory τι εννοείς?
εμεις έτσι κι αλλιώς μόνο το κομμάτι που παίζουμε εν τέλει αφαιρούμε...έτσι δεν είναι??
ή άλλο θες να πεις και δεν καταλαβα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Issle on January 22, 2009, 14:54:17 pm
Η παλιός κώδικας ( μέχρι και χτές ) δεν μπορούσε να κάνει place σε πίνακα που είναι έχει προέλθεί από την clone() γιατι η clone() δημιουργεί έναν πίνακα με activePlayer null. Αν κάνεις place() ενώ ο activePlayer είναι null δεν θα γίνει τίποτα.

Τώρα που βλέπω τον καινούργιο κώδικα, μέσα στην clone() δίνεται τιμή και στον activePlayer οπότε ξέχνα τα περι inventory κτλ. :) Υποθέτω οτί τώρα θα κάνει place σωστά.

Quote
εμένα δε μου πέταξε κάποιο exception με την place.... παρ όλο που πιστεύω το έχω κάνει με τον κλώνο....
Exception μου πετούσε όταν τροποποιούσα την clone() ώστε να δουλεύει σωστα. Αν θές να δείς πραγματικά αν δουλεέυει η place σου οταν χρησιμοποιείς πίνακα που έχει προέλθει απο clone() απλά μέτρα τα κουτάκια του πίνακα που περιέχουν το αντίστοιχο χρώμα. Με τον παλιό κώδικα λογικά πρέπει να τα βρείς όσα ήταν πρίν παίξεις την κίνησή σου. ( που σημένει οτι το δένδρο δεν δημιουργείτε ... ).

Anyway , redirecting to the new code  :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 22, 2009, 14:56:37 pm
okk... thanx!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 22, 2009, 16:07:50 pm
Παιδιά εμένα γιατί ο καινούριος κώδικας είναι μές τα κοκκινάδια? Από την αρχή αρχή στα imports και σε όλο το μήκος έχει errors! Μήπως χρειάζεται μετατροπές?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 22, 2009, 19:53:01 pm
μου βγαζει 2 errors o  νεος κωδικας

The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files


The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object. Fix the build path then try building this project

στο δια να κανω??

επισης απειρα κοκκινακια παντου....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 22, 2009, 20:05:21 pm
Έστειλα mail και η απάντηση ήταν, backup των αρχείων, σβήσιμο όλων των project από τον eclipse και ξαναπέρασμα. Δοκίμασε το tiger.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 22, 2009, 20:09:25 pm
τι να σβησω ..αυτα που τρεχουν κ αν αφησω αυτο που δεν τρεχει??κ αν δεν τρε  τι να κανω μετα??????????? εσενα δουλευει?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: tiger on January 22, 2009, 20:14:31 pm
το δοκιμασα κ τιποτα. οταν λες σβισιμο ολων των project .. πως το εννοεις...??μεσα απο τον eclipse h διαγραφοντας τα workspace?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 22, 2009, 20:19:16 pm
Κάντα ένα save μωρέ, βάλτα σε έναν φάκελο και μετα πήγαινε στο workspace του eclipse και σβήσε τα πάντα.Μετά,πέρνα πρώτο το καινούριο με το νέο κώδικα,και στη συνέχεια αυτό που δούλευες. Εγώ δεν το έκανα ακόμα,τώρα θα το κάνω. Εντάξει άμα φοβάσαι μη δε σου τρέχει τί να σου πώ... Δεν παίζει πάντως στο λέω. Το πολύ πολύ ορίζεις άλλον φάκελο workspace και τα βάζεις εκεί.

Τί να σου πώ,εμένα αυτά μου πανε,αυτά σου λέω.Κόλλημα του eclipse είναι λέει,που συγχέει παλιά με καινούρια classes.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 23, 2009, 13:40:47 pm
Καμια ιδεα για το πως να φτιαξουμε το δεντρο 2 επιπεδων? η καινουρια place τοποθετει πραγματι και σε κλωνους κοματια αλλα μου βγαζει συνεχως internal errors και διαφορα αλλα. μπορει καποιος να πει γενικα πως ειναι η υλοποιηση του δεντρου? thanks/


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on January 23, 2009, 18:35:25 pm
Παιδιά εμένα γιατί ο καινούριος κώδικας είναι μές τα κοκκινάδια? Από την αρχή αρχή στα imports και σε όλο το μήκος έχει errors! Μήπως χρειάζεται μετατροπές?



Το καινουριο Blokus, δεν ξερω γιατι,
δεν περιεχει ενα κρυφο αρχειο, το .classpath.

Πηγαινε στην πρωτη εκδοση του, αν την εχεις σε backup
και κανε copy paste to .classpath στο καινουριο directory Blokus
και ο κωδικας θα στρωσει.

Τουλαχιστον σε μενα αυτο εφταιγε..


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 23, 2009, 19:41:27 pm
Εχω το εξής ακατανόητο πρόβλημα!!Δεν λειτουργεί σωστα η evaluate... :(
Συγκεκριμένα εχω βάλει να μου εκτυπώνει τα αποτελέσματα(τις δικες μου τρέχουσες και τις τρέχουσες του αντιπάλου) και ενω είναι η πρώτη κίνηση και πρέπει λογικά οι τρέχουσες του αντιπάλου να είναι 0 ενώ οι δικές μου να έχουν κάποιο ακέραιο μου εκτυπώνει τις δικές μου με 0 και του αντιπάλου με αριθμό!Δεν μπορώ να καταλάβω τι πάει στραβα... :-\ :-\ :-\
Αν είχε κανείς άλλο παρόμοιο πρόβλημα και βρήκε τι φταίει ας με διαφωτίσει και εμενα... :'(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 23, 2009, 21:12:14 pm
Εχω το εξής ακατανόητο πρόβλημα!!Δεν λειτουργεί σωστα η evaluate... :(
Συγκεκριμένα εχω βάλει να μου εκτυπώνει τα αποτελέσματα(τις δικες μου τρέχουσες και τις τρέχουσες του αντιπάλου) και ενω είναι η πρώτη κίνηση και πρέπει λογικά οι τρέχουσες του αντιπάλου να είναι 0 ενώ οι δικές μου να έχουν κάποιο ακέραιο μου εκτυπώνει τις δικές μου με 0 και του αντιπάλου με αριθμό!Δεν μπορώ να καταλάβω τι πάει στραβα... :-\ :-\ :-\
Αν είχε κανείς άλλο παρόμοιο πρόβλημα και βρήκε τι φταίει ας με διαφωτίσει και εμενα... :'(
μονο στην πρωτη κινηση εχεις αυτο το προβλημα? στις αλλες δουλευει κανονικα? επισης πως κανεις την evaluate να καταλαβαινει το ποιος ειναι ο αντιπαλος και ποιος εισαι εσυ?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: TED on January 23, 2009, 22:00:53 pm
Ξέρει κανείς πώς δημιουργούμε δέντρο; τί δομή είναι;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 23, 2009, 22:08:11 pm
Εχω το εξής ακατανόητο πρόβλημα!!Δεν λειτουργεί σωστα η evaluate... :(
Συγκεκριμένα εχω βάλει να μου εκτυπώνει τα αποτελέσματα(τις δικες μου τρέχουσες και τις τρέχουσες του αντιπάλου) και ενω είναι η πρώτη κίνηση και πρέπει λογικά οι τρέχουσες του αντιπάλου να είναι 0 ενώ οι δικές μου να έχουν κάποιο ακέραιο μου εκτυπώνει τις δικές μου με 0 και του αντιπάλου με αριθμό!Δεν μπορώ να καταλάβω τι πάει στραβα... :-\ :-\ :-\
Αν είχε κανείς άλλο παρόμοιο πρόβλημα και βρήκε τι φταίει ας με διαφωτίσει και εμενα... :'(
μονο στην πρωτη κινηση εχεις αυτο το προβλημα? στις αλλες δουλευει κανονικα? επισης πως κανεις την evaluate να καταλαβαινει το ποιος ειναι ο αντιπαλος και ποιος εισαι εσυ?
βασικα δεν προχωράει μετα την πρωτη κίνηση-μάλλον εξαιτίας του λάθος αποτελέσματος της evaluate...
βασικα του λεω να καταχωρήσει σε μία μεταβλητη το αποτελεσμα της scantheboard για το δικό μου χρωμα και σε μία άλλη για το χρωμα του αντιπάλου...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: TED on January 24, 2009, 00:47:00 am
matzika χρησιμοποίησε το System.out.println(string) για να δείς τί πρόβλημα υπάρχει στην evaluate. Πάντως ο κώδικάς της είναι σχετικά απλός. Μήπως έχεις κάποιο λάθος και δεν το βλέπεις; δοκίμασε να την ξαναγράψεις από την αρχή με διαφορετικό τρόπο μήπως διορθωθεί...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Matzika on January 24, 2009, 01:13:50 am
το ξέρω ότι ειναι απλος ο κωδικάς της γιαυτό τρελαίνομαι!!και μεχρι στιγμής τον έχω γράψει με 3-4 διαφορετικούς τρόπους!!
το ότι βγάζει λάθος αποτελεσματα η evaluate με system.out.println το καταλαβα....
Δεν ξέρω τι παίζει...ειναι σαν να υπάρχουν κιτρινα και πράσινα και μετράει με τη scantheboard τις γωνίες αυτών των χρώματων (που όμως δεν υπάρχουν!!!!)
ενώ αντίθετα η scantheboard του μπλέ-κοκκινου επιστρέφει 0...γιατι??????


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: TED on January 24, 2009, 03:28:11 am
Βασικά στην πρώτη κίνηση πρέπει να σου επιστρέφει 2... (1 από κάθε χρώμα, το πρώτο κουτάκι)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: salala on January 24, 2009, 12:06:11 pm
για να φυτρώσει το δέντρο τελικά τι σπόρους πρέπει να ρίξουμε...; :o


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 24, 2009, 18:08:29 pm
ναι αν θυμάστε ποια είναι η κλάση για τα δέντρα στη library και που για πείτε...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 24, 2009, 18:17:38 pm
υπάρχει δλδ συγκεκριμένη κλάση για δέντρα??με συγκεκριμένη δομή??
εμείς το κάναμε με απλούς πίνακες...

ποσο πολύ πειράζει αυτό???


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 24, 2009, 18:28:12 pm
Επιτρέπεται να φτιάξουμε και δικες μας κλάσεις, έτσι δεν είναι;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 24, 2009, 18:35:03 pm
Παιδιά όπως θέλει ο καθένας πορεί να φτιάξει το δέντρο.Με έτοιμες κλάσεις,με πίνακες, με δικές του κλάσεις, whatever.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 24, 2009, 18:37:04 pm
η ερώτηση μου ήταν συγκεκριμένη. Και βέβαια μπορείτε...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 24, 2009, 19:04:25 pm
Εντάξει, απλώς είδα στην εκφώνηση της εργασίας "2.   Ένα αρχείο σε μορφή .zip με όνομα “ΑΕΜ1_ΑΕΜ2_C.zip” (xxxx_xxxx_C.zip), το οποίο θα περιέχει την κλάση Player." και άρχισα να έχω second thoughts :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 24, 2009, 22:25:49 pm
πάντως παιδιά πρέπει να τσεκάρετε αν τα μεγάλα κομμάτια έχουν κίνηση. Αλλιώς πάμε στο επόμενο μικρότερο group.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Parhs22 on January 25, 2009, 01:28:18 am
πάντως παιδιά πρέπει να τσεκάρετε αν τα μεγάλα κομμάτια έχουν κίνηση. Αλλιώς πάμε στο επόμενο μικρότερο group.
μηπως ξερεις ρε φιλε κανενα τροπο να το κανουμε αυτο? ψαχνω ψαχνω αλλα τροπο δε βρηκα. :-\
υπαρχει καμια μεθοδος δηλαδη να λεμε πχ if (κινησεις.pentomino!=0) τοτε κλπ?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 25, 2009, 01:30:29 am
εκεί είναι η μαγκιά muhauahuaha


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 25, 2009, 18:54:55 pm
ξέρει κανείς αν τη δευτέρα υπάρχει κάποια ώρα φοιτητών?
να κοιτάξουμε λίγο την εργασία μας????


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: conquer on January 25, 2009, 19:13:04 pm
Σε αυτη την γραπτη αναφορα τι θελει να γραψουμε?? Μεθοδους κ Διαδικασιες για την εργασια 3 που κανουμε τωρα η για ολες συνολικα??????????


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 25, 2009, 19:31:21 pm
για όλες.
νομίζω τα θέλει λίγο πιο γενικά.
αλλά να δώσεις μια συνολική εικόνα και των τριών κομματιών τι έχεις κάνει


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: conquer on January 25, 2009, 19:35:59 pm
Αυτο ακριβως που δεν ηθελα να ακουσω...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 26, 2009, 01:39:15 am
Η προθεσμία για την υποβολή των εργασιών αύριο δεν λήγει;  Φαίνεται πως είναι κλειδωμένα... ^confused^


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: λήθη on January 26, 2009, 01:41:16 am
Έχει λήξει η προθεσμία υποβολής των εργασιών



:D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 26, 2009, 01:44:18 am
Μόλις το είδα κοψοχόλιασα...  Κανένας υπεύθυνος μήπως γίνεται να διευθετήσει το ζήτημα; :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: fpsom on January 26, 2009, 02:00:12 am
My bad... Συγγνώμη για την τρομάρα...  :-[


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 26, 2009, 02:02:11 am
Ευχαριστούμε πολύ για την άμεση ανταπόκριση :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on January 26, 2009, 03:25:09 am
Για όλες τις εργασίες θέλει να μιλήσουμε? Εγώ δεν κατάλαβα κάτι τέτοιο, ούτε από την εκφώνηση, ούτε από αυτά που άκουσα στο εργαστήριο. Για την ακρίβεια κιόλας, χρειάστηκα 10 σελίδες περίπου για να αναλύσω την εργασία Γ. Αν χρειάζεται να κάνω το ίδιο και για τις προηγούμενες, φέξε μου και γλύστρησα. Ας διευκρινιζόταν σαφέστερα. Το λογικό είναι ότι η αναφορά, αφορά την εργασία Γ πάντως.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 27, 2009, 00:42:52 am
TEΛΟΣ!!!!!!!!!!!!!!!!!!!!!!!!!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 27, 2009, 22:36:53 pm
not yet hehehe


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: vasso on January 28, 2009, 04:23:40 am
?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 28, 2009, 04:39:59 am
έχει τουρνουά και μπορούμε λέει να κάνουμε αλλαγές έτσι?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 29, 2009, 15:43:38 pm
οχι πρέπει να δώσεις αποκλειστικά την εργασία που ανέβασες!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 29, 2009, 16:26:08 pm
όχι δα , εγώ άλλο είχα διαβάσει :(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 29, 2009, 16:33:52 pm
nope...sorry mate.... :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Mikros_Nikolas on January 29, 2009, 17:20:54 pm
pitsa νομίζω κάνεις λάθος. Δεν είμαι και σίγουρος βέβαια.


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wanderer on January 29, 2009, 17:47:45 pm
Ο fpsom είχε πει αν θυμάμαι καλά ότι μπορούν να γίνουν αλλαγές ;) και μάλιστα ότι σε κάθε τουρνουά τουλάχιστον μία ομάδα θα εμφανιστεί η οποία θα έχει υλοποιήσει μια τελείως διαφορετική στρατηγική από αυτήν που προτείνεται (ενώ αντίθετα στην 3η εργασία που έπρεπε να παραδοθεί, ήταν υποχρεωτική η υλοποίηση του αλγορίθμου min-max και του δέντρου).


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on January 29, 2009, 18:03:19 pm
Ναι, κι εγώ που ρώτησα τον κ. Μήτκα επιβεβαίωσε ότι η εργασία που παραδώσαμε δεν είναι κατ' ανάγκην αυτή που θα χρησιμοποιηθεί στο τουρνουά, μπορούμε να κάνουμε αλλαγές...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 29, 2009, 18:19:13 pm
nope...sorry mate.... :P
pwned bitch  stfu :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: fpsom on January 29, 2009, 21:18:52 pm
Εέετσι! Για να φαίνεται ποιός δίνει σημασία μέσα στο μάθημα...  :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on January 29, 2009, 21:20:34 pm
 ::)  :P


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: jilio on January 29, 2009, 22:24:39 pm
Ρε παιδια, τον παίκτη για το τουρνουά έχει κανείς ιδέα μέχρι πότε πρέπει να τον παραδώσουμε???  :D


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on January 30, 2009, 00:19:43 am
αχ.... κανείς να μη με καταλαβαίνει..... anyways... movin' on...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on February 01, 2009, 17:10:47 pm
Το ethmmy είναι πάλι κλειδωμένο και δεν μπορούμε να ανεβάσουμε τον κώδικα για τον τουρνουά. Παρακαλούνται οι έχοντες την δυνατότητα να το ανοίξουν :) .


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on February 04, 2009, 02:52:20 am
Αυτό που συμβαίνει είναι τελείως ηλίθιο. Φαίνεται πως ο αλγόριθμος , με το custom δέντρο μου και με βάθος μόλις 2 είναι πάρα πολύ αργός. Άλλος τρόπος από το on the fly evaluation δεν υπάρχει?? Γιατί από όσο καταλαβαίνω, ό,τι δέντρο και να έκανε κανείς, όπως το έκανε , δεν έχει ελπίδα να φτάσει την απαιτούμενη ταχύτητα, παρά μόνο με on the fly κλωνοποίηση και evaluation του board. Το αστείο είναι πως πρέπει να ξηλώσω ό,τι έχω κάνει για να μπορώ να λάβω μέρος στο τουρνουά  >:(


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on February 04, 2009, 06:11:00 am
Εσεις οι υπόλοιποι αλήθεια πως τα πάτε από ταχύτητα?


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: SolidSNK on February 04, 2009, 10:30:33 am
nevermind...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on February 04, 2009, 11:46:05 am
Μέσα στο πακέτο players βάζουμε μόνο τις βοηθητικές κλάσεις, έτσι δεν είναι;  Η Player μένει στην αρχική της θέση;


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: cyberwizard on February 04, 2009, 15:47:06 pm
Όπως λέει η εκφώνηση : ΟΛΕΣ αυτές οι κλάσεις (βοηθητικές+ Player καταλαβαίνω εγώ) πρέπει να βρίσκονται στο πακέτο μπλα.μπλα.player .Που είναι και λογικό,καθότι αυτό το πακέτο στέλνουμε ως παίχτη. Οποτε και τον Player_xxxx_xxxx εκεί πρέπει να τον βάλεις. Αλλιώς θα πρέπει να στείλεις ξεχωριστά τις βοηθητικές και ξεχωριστά τον player, που δε νομίζω ότι έχει κάποιο νόημα....


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: pitsa on February 04, 2009, 20:45:41 pm
έχω δύο ερωτήσεις:

- τον κώδικα για το τουρνουά που τον ανεβάζουμε?εκεί που ανεβάσαμε και τα τρία κομμάτια του μπλόκους?

- στο τουρνουά πρέπει να είμαστε παρόντες??


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Wade on February 04, 2009, 20:48:46 pm
Ευχαριστώ πολύ cyberwizard, και τελικά με e-mail στους υπεύθυνους επιβεβαιώθηκε ότι και η κλάση Player_AEM1_AEM2 πρέπει να τοποθετηθεί στο πακέτο :)


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: Kylries on February 06, 2009, 19:42:15 pm
Έχω μία απορία λίγο άσχετη αλλά δεν ήξερα που να ποστάρω... :PΤο bonus της εργασίας μετράει και για την εξεταστική του Σεπτεμβρίου??επειδή μάλλον δεν προλαβαίνω να διαβάσω και να γράψω δομές 2 μέρες μετά το ΣΑΕ και μία πριν την Ηλεκτρονική...Αν γνωρίζει κανείς...


Title: Re: [Δομές Δεδομένων] Blokus 2008 συζήτηση και απορίες
Post by: fpsom on February 07, 2009, 20:03:17 pm
Ο βαθμός των εργασιών (μαζί με το bonus) λαμβάνεται υπόψιν στις δύο εξεταστικές αμέσως μετά το εξάμηνο (δηλαδή του Φεβρουαρίου και του Σεπτεμβρίου). ΔΕΝ λαμβάνονται υπόψιν μετά την έναρξη του νέου έτους, καθώς τότε δίνεται μια νέα εργασία...