Individual Random outcome σε Static μεθοδο (Java)

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
User avatar
ThOdOr1s
Mbyte level
Mbyte level
Posts: 961
Joined: Thu Oct 25, 2012 5:17 pm
Academic status: 4th year
Gender:
Location: 36.86588,25.51602
Contact:

Individual Random outcome σε Static μεθοδο (Java)

Postby ThOdOr1s » Mon Oct 14, 2013 10:35 pm

Οκ, πειραματιζομουνα με κωδικα και επεσα πανω σε εναν τοιχο...

Code: Select all

import java.util.Random;

import org.newdawn.slick.opengl.Texture;

public class Tile {
   
   Texture texture;
     int x1;
     int y1;
     int x2;
     int y2;
     
     static int a;
     static int b;
     static int c;
     static int d;
   
     int e;
     int f;
     int g;
     int h;
     
   public Tile( int pointAi, int  pointAj, int pointBi, int pointBj, Texture img){
      x1 = pointAi;
      y1 = pointAj;
      x2 = pointBi;
      y2 = pointBj;
      texture = img;
   }   
   
   public static void rumbleall(){
       a = Tile.rangenerate();
       b = Tile.rangenerate();
       //c = Tile.rangenerate();
       //d = Tile.rangenerate();
   }
   
   public void rumble(){
       e = Tile.rangen();
       f = Tile.rangen();
       //g = Tile.rangen();
       //h = Tile.rangen();
   }
   
   public void display(){
       ObjGen.Tile(x1 + a + e, y1 + b + f, x2 + a + e , y2 + b + f,texture);
   }

   private static int rangenerate(){
        Random gen = new Random();
        int ret = Math.abs(gen.nextInt()%10);
        return ret;
    }
   
}


Οκ, Φτιαχνω 3 αντικειμενα της μορφης Tile, και θελω να τα φταξω αυτο το random animation... Αν καλεσω ολες τις αντιστοιχες instance μεθοδους, εχω ωραια ξεχωριστα randomly generated κινουμενα κουτακια... Οταν καλω ομως την static ολα τα κουτακια κινουνται με τον ιδιο τροπο.

I get why that happens... I see it, it's in da code...

Tο θεμα ειναι οτι δεν θελω να γινεται και δεν μπορω να βρω καποιον τροπο να το κανω (χωρις να καλεσω την instance μεθοδο για καθε ενα αντικειμεο ξεχωριστα). Και με ενοχλει λιγο αυτο στο ματι γιατι καλω στην ουσια ακριβως τον ιδιο κωδικα, ξανα και ξανα... Οποτε εχω αρχισει να υποπτευομαι οτι εχω κανει ultimate μογγολια (και μαλιστα βασικης φυσεως). :smt022

Γενικα θελω να βρω εναν τροπο, να καλω χωρις πολλα πολλα εναν random generator, για ολα τα αντικειμενα μου και να περνω διαφοερτικη random τιμη για καθε αντικειμενο ξεχωριστα. Γινεται αυτο (και/η εχω κανει ultimate μαλακια) η οχι? Μπορειτε να με παραπεμψετε σε καποιο μερος που εξηγει τι παιζει σε αυτη την περιπτωση?

Ευχαριστω...

PS: υπαρχει και η rangen() που κανει το ιδιο πραγμα, αλλα δεν ειναι static...
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ja_the_invincible » Mon Oct 14, 2013 10:50 pm

α)Ο τίτλος του thread δεν έχει καμία σχέση με αυτό που τελικά ρωτάς.
β)Να είσαι πιο ξεκάθαρος στις ερωτήσεις , γιατί εμείς που σε ξέρουμε προσωπικά κάνουμε υπομονή αλλά σε ένα stack overflow δεν παίζει να σου απαντήσουν.
γ)Δεν καταλαβαίνω ποιο ακριβώς είναι το πρόβλημά σου.Αν θέλεις αντικείμενα με τυχαίες τιμές φτιάξε ένα constructor που στις τιμές της κλάσης θα αναθέτει τυχαίες τιμές - έτσι κάθε νέο αντικείμενο θα παίρνει random τιμές.
δ)Στις διαλέξεις είχαμε πει ότι τα αντικείμενα μιας κλάσης μπορούν να χρησιμοποιήσουν και τις instance και τις static μεθόδους.Ως εκ τούτου δεν καταλαβαίνω τι σε εμποδίζει να χρησιμοποιήσεις ή όχι μια ήδη υπάρχουσα μέθοδο.
ε)Επανέλαβε ξανά την βασική θεωρία για την διαφορά static/instance μεθόδων.Στην προκειμένη περίπτωση δεν καταλαβαίνω γιατί α)χρησιμοποιείς static μεθόδους β)τι είναι αυτές οι static μεταβλητές γ)τι σε χαλάει στο να χρησιμοποιήσεις κάποια instance μέθοδο δ)γιατί η rangenerate η οποία κανονικά έπρεπε να λέγεται randomGenerate() είναι static.
ζ)Θα επαναλάβω ότι σου έχουμε πει εγώ και ο nachos.Άσε τα 2d/3d graphics κατά μέρους και κοίτα να καλύψεις τα κενά που έχεις στο προγραμματιστικό κομμάτι.
η)Ο μόνος τρόπος να αποφύγεις να τρέξεις μια διαδικασία για 4 μεταβλητές είναι να groupάρεις τις μεταβλητές αυτές σε ένα πίνακα και να τον διατρέχεις με μια for.
f**k robin and batman i'm robbin with a bat man
User avatar
ThOdOr1s
Mbyte level
Mbyte level
Posts: 961
Joined: Thu Oct 25, 2012 5:17 pm
Academic status: 4th year
Gender:
Location: 36.86588,25.51602
Contact:

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ThOdOr1s » Mon Oct 14, 2013 11:09 pm

ja_the_invincible wrote:β)Να είσαι πιο ξεκάθαρος στις ερωτήσεις , γιατί εμείς που σε ξέρουμε προσωπικά κάνουμε υπομονή αλλά σε ένα stack overflow δεν παίζει να σου απαντήσουν.

Ναι true dat. σορυ, παμε παλι.
Οταν θελουμε ολα μας τα αντικειμενα να κανουνε το ιδιο πραγμα με τον ιδιο τροπο, φτιαχνουμε μια static μεθοδο.
Οταν θελουμε ενα αντικειμενο να κανει ενα συγκεκριμενο πραγμα φτιαχνουμε μια instance.
Οταν θελουμε ολα μας τα αντικειμενα να κανουνε το ιδιο πραγμα, αλλα με διαφορετικο random τροπο, και θελουμε αυτο να γινεται οταν καλουμε την μεθοδο, και οχι στον constructor, τι κανουμε? Καλουμε την Instance μεθοδο για ολα τα αντικειμενα ξεχωριστα η υπαρχει ποιο εξυπνος τροπος να το κανουμε αυτο με μια Static μεθοδο?

ja_the_invincible wrote:ζ)Θα επαναλάβω ότι σου έχουμε πει εγώ και ο nachos.Άσε τα 2d/3d graphics κατά μέρους και κοίτα να καλύψεις τα κενά που έχεις στο προγραμματιστικό κομμάτι.

4 imports και 10 εντολες παραπανω απο οτι να το εκανα σε terminal, αυτο ακριβως κανω...
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ja_the_invincible » Mon Oct 14, 2013 11:25 pm

ThOdOr1s wrote:Οταν θελουμε ολα μας τα αντικειμενα να κανουνε το ιδιο πραγμα με τον ιδιο τροπο, φτιαχνουμε μια static μεθοδο.

Wrong.Μια μέθοδος θα κάνει ΑΚΡΙΒΩΣ το ίδιο πράγμα είτε είναι static είτε instance.Απλά στην πρώτη περίπτωση μπορεί να χρησιμοποιηθεί χωρίς να δημιουργήσεις αντικείμενα της κλάσης και χρησιμοποιεί μόνο static μεταβλητές.Για την ακρίβεια δοκίμασε να κάνεις μια static μέθοδο instance και δες τις διαφορές.Συγκεκριμένα εδώ τα αντικείμενά σου έχουν ίδια συμπεριφορά στην static γιατί πολύ απλά χρησιμοποιείς static μεταβλητές.
Οταν θελουμε ενα αντικειμενο να κανει ενα συγκεκριμενο πραγμα φτιαχνουμε μια instance.

Wrong.Τι ακριβώς εννοείς ένα συγκεκριμένο πράγμα?Ότι θα έχει διαφορά από αντικείμενο σε αντικείμενο?
Οταν θελουμε ολα μας τα αντικειμενα να κανουνε το ιδιο πραγμα, αλλα με διαφορετικο random τροπο, και θελουμε αυτο να γινεται οταν καλουμε την μεθοδο, και οχι στον constructor, τι κανουμε? Καλουμε την Instance μεθοδο για ολα τα αντικειμενα ξεχωριστα η υπαρχει ποιο εξυπνος τροπος να το κανουμε αυτο με μια Static μεθοδο?
.

Αν θες να εκτελέσεις μια διαδικασία για όλα τα αντικείμενα ΔΕΝ γλυτώνεις κάτι με το να το υλοποιήσεις με static/instance.Για την ακρίβεια αυτό που γράφεις δείχνει ότι δεν έχεις κατανοήσει βασικά πράγματα που φτάνουν μέχρι τα loops.

ja_the_invincible wrote:ζ)Θα επαναλάβω ότι σου έχουμε πει εγώ και ο nachos.Άσε τα 2d/3d graphics κατά μέρους και κοίτα να καλύψεις τα κενά που έχεις στο προγραμματιστικό κομμάτι.

4 imports και 10 εντολες παραπανω απο οτι να το εκανα σε terminal, αυτο ακριβως κανω...

Όπως νομίζεις.Αν θες την γνώμη μου πρέπει πρώτα να επαναλάβεις την θεωρία.Τα παραπάνω λάθη δείχνουν μπέρδεμα στο θεωρητικό επίπεδο.Αλλιώς θα πηγαίνεις χακεύοντας να βρεις λύσεις με αποτέλεσμα να καταλήξεις να γράφεις κακό κώδικα.
f**k robin and batman i'm robbin with a bat man
User avatar
ThOdOr1s
Mbyte level
Mbyte level
Posts: 961
Joined: Thu Oct 25, 2012 5:17 pm
Academic status: 4th year
Gender:
Location: 36.86588,25.51602
Contact:

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ThOdOr1s » Mon Oct 14, 2013 11:57 pm

ja_the_invincible wrote:Wrong.Μια μέθοδος θα κάνει ΑΚΡΙΒΩΣ το ίδιο πράγμα είτε είναι static είτε instance.Απλά στην πρώτη περίπτωση μπορεί να χρησιμοποιηθεί χωρίς να δημιουργήσεις αντικείμενα της κλάσης και χρησιμοποιεί μόνο static μεταβλητές.Για την ακρίβεια δοκίμασε να κάνεις μια static μέθοδο instance και δες τις διαφορές.Συγκεκριμένα εδώ τα αντικείμενά σου έχουν ίδια συμπεριφορά στην static γιατί πολύ απλά χρησιμοποιείς static μεταβλητές.

I know dat... Τι αλλο θα χρησιμοποιουσα μεσα σε Static μεθοδους? Το ξερω πως ακομα και την instance μεθοδο να καλουσα, αμα ειχα static μεταβλητες μεσα... wait... I got it... Μου διεφυγε αυτο λιγακι. Τωρα καταλαβα γιατι αυτο που ρωτησα δεν γινεται in the first place.

thanks, :-D

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

Guess i ll do, any place you recommend?
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ja_the_invincible » Tue Oct 15, 2013 12:30 am

Το θέμα δεν είναι τι , το θέμα είναι πώς θα το διαβάσεις.Μπορείς να βγάλεις όλα τα slides της Java2 σε 4-5 μέρες.Βλέπεις όμως ότι δεν είναι δυνατόν να κατανοήσεις την θεωρία τελείως απλά διαβάζοντάς την.Π.χ δεν αμφιβάλλω ότι γνωρίζεις το concept των στατικών μεταβλητών/μεθόδων αλλά το γεγονός ότι προσπαθείς να δώσεις διαφορετικές τιμές χρησιμοποιώντας static μεταβλητές και μετά ότι νομίζεις πως για το διαφορετικό αποτέλεσμα φταίει ότι η μέθοδος είναι static σημαίνει ότι δεν έχεις εμπεδώσει ακριβώς την θεωρία.Συνεπώς δεν αρκούμαστε στο να την διαβάζουμε αλλά γράφουμε παραδειγματάκια κιόλας για να τα τεστάρουμε επί τόπου , να σιγουρέψουμε ότι καταλάβαμε σωστά τι διαβάσαμε :) .Έχω την εντύπωση ότι μια καλή αρχή θα είναι να δοκιμάσεις να τρέξεις και να τροποιήσεις τον κώδικα που σας δώσαμε στις διαλέξεις.Ακόμα καλύτερα μπορείς να πάρεις τα παραδείγματα από το cd του Deitel (αν είχατε αυτό το σύγγραμμα).
f**k robin and batman i'm robbin with a bat man
User avatar
ThOdOr1s
Mbyte level
Mbyte level
Posts: 961
Joined: Thu Oct 25, 2012 5:17 pm
Academic status: 4th year
Gender:
Location: 36.86588,25.51602
Contact:

Re: Individual Random outcome σε Static μεθοδο (Java)

Postby ThOdOr1s » Tue Oct 15, 2013 12:33 am

ja_the_invincible wrote:Το θέμα δεν είναι τι , το θέμα είναι πώς θα το διαβάσεις.Μπορείς να βγάλεις όλα τα slides της Java2 σε 4-5 μέρες.Βλέπεις όμως ότι δεν είναι δυνατόν να κατανοήσεις την θεωρία τελείως απλά διαβάζοντάς την.Π.χ δεν αμφιβάλλω ότι γνωρίζεις το concept των στατικών μεταβλητών/μεθόδων αλλά το γεγονός ότι προσπαθείς να δώσεις διαφορετικές τιμές χρησιμοποιώντας static μεταβλητές και μετά ότι νομίζεις πως για το διαφορετικό αποτέλεσμα φταίει ότι η μέθοδος είναι static σημαίνει ότι δεν έχεις εμπεδώσει ακριβώς την θεωρία.Συνεπώς δεν αρκούμαστε στο να την διαβάζουμε αλλά γράφουμε παραδειγματάκια κιόλας για να τα τεστάρουμε επί τόπου , να σιγουρέψουμε ότι καταλάβαμε σωστά τι διαβάσαμε :) .Έχω την εντύπωση ότι μια καλή αρχή θα είναι να δοκιμάσεις να τρέξεις και να τροποιήσεις τον κώδικα που σας δώσαμε στις διαλέξεις.Ακόμα καλύτερα μπορείς να πάρεις τα παραδείγματα από το cd του Deitel (αν είχατε αυτό το σύγγραμμα).

To ειχαμε... ok, sure ;)

Return to “Προγραμματισμός”

Who is online

Users browsing this forum: No registered users and 2 guests