Jump to content



Recommended Posts

Υπάρχει κάποιος "έξυπνος" τρόπος για μορφοποίηση κειμένου; 

 

Είναι κάπως πχ αν θες να κάνεις το παρακάτω κάμποσες φορές:

asd: qwerty, asdsafsafe asdasdas

Ναι με css. Oh wait java app είναι άρα όχι αλλά μπορείς να επιλέξεις πολλαπλά controls και να βάλεις πχ γραμματοσειρά και κάποια κοινά appearance properties τα ίδια σε όλα.

 

 

  • 4 weeks later...

Έχω ένα board 10x10 από κουμπιά και δύο πιόνια που θα μετακινούνται μέσα σε αυτό.

 

Ποιος είναι ο καλύτερος τρόπος να τα μεταφέρω από θέση σε θέση;

LOL? Τι 10χ10 απο κουμπιά? 100 JButtons σε ένα JWindow? Να υποθέσω με ονόματα JButton1...JButton100?

 

Δεν ανεβάζεις ένα screenshot? αυτό πρέπει να το δω.

πριν 1 ώρα, το μέλος nucleus έγραψε:

Screenshot δεν βλέπω. Τα πιόνια πως μετακινούνται?

Εε σε αυτό ζητάω να μου δώσετε μια ιδέα. 

 

Εκεί είναι το πρόβλημα, στο πως θα μετά κινούνται. 

PS: Δεν είμαι σπίτι. 

Θα πρέπει να δείχνει animation? αν ναι δεν έχω ιδέα πως μπορείς να το κάνεις σε java. Αν όχι υπάρχει κάποιο "βήμα" για την μετακίνηση? πχ κινούνται πάντα ανα 1 ή κάποιο άλλο αριθμό τετραγώνων κάθε φορά? Επίσης μπορεί να μετακινηθούν διαγώνια ή όχι?

πριν 58 λεπτά, το μέλος nucleus έγραψε:

Θα πρέπει να δείχνει animation? αν ναι δεν έχω ιδέα πως μπορείς να το κάνεις σε java. Αν όχι υπάρχει κάποιο "βήμα" για την μετακίνηση? πχ κινούνται πάντα ανα 1 ή κάποιο άλλο αριθμό τετραγώνων κάθε φορά? Επίσης μπορεί να μετακινηθούν διαγώνια ή όχι?

Όχι, δεν θα υπάρχει animation, νομίζω ότι δεν αξίζει τον κόπο και τον χρόνο στην προκειμένη περίπτωση.

 

Τα πιόνια θα μετακινούνται ανάλογα τι θα δείξει το ζάρι.

Διαγώνια όχι, αν και νομίζω αυτό αφορά του animation. Εφόσον δεν θα υπάρχει δεν μας απασχολεί ( ; ).

 

Κάτι απλό που σκέφτηκα είναι να προσθέτω και να κάνω remove ένα JLabel ή JPanel, ή μόνο μια εικόνα αλλά δεν λειτουργεί το remove.

Τα "κουτιά" του board μπορούν να είναι οτιδήποτε. JPanel, JLabel, JButtons etc. Απλά τα έχω βάλει κουμπιά γιατί απλά κάνω ένα .setText("") γιατί νομίζω ότι βολεύουν καλύτερα σε αυτά που κάνω.

Πιο ζάρι ποιές είναι οι τιμές 1-6? Την κατεύθυνση την καθορίζει ο παίχτης? πρέπει απλώς να μετακινηθεί τόσες θέσεις όσες έφερε το ζάρι σε όποια κατεύθυνση θέλει?

Υπάρχει ένα ζάρι και δίνει από 1 έως 6.

Οι παίχτες αρχίζουν από τη θέση 1 και πρέπει να φτάσουν ακριβώς στην 100 (δηλαδή αν είναι στην 97 θα πρέπει να φέρουν ακριβώς 3 αλλιώς ξαναπαίζουν την επόμενη γύρα).

 

Το board πάει έτσι.

Snakes_and_ladders.png

 

Βασικά αν δεν υπάρχει animation το μόνο που παίζει σημασία είναι πως θα εξαφανίζεται το πιόνι στον επόμενο γύρο, δηλαδή στην επόμενη κίνηση του παίχτη.

 

Οπότε η κίνηση είναι "γραμμική" απο ότι κατάλαβα ωραία

class BoardPoint {
	bool IsEmpty {get;set;}
	int rowIndex {get;set;}
	int columnIndex {get;set;}
}

 

το board είναι ένα array απο 100 BoardPoints

 

Μετά έχεις το class Pawn ή Player

class Player
{
	BoardPoint currentPosition {get;set;}
}

Τα dummy classes είναι σε C#.

 

Για το πως θα αναπαραστήσεις το board στο UI εύκολο. JLabels.

 

https://docs.oracle.com/javase/7/docs/api/javax/swing/JLabel.html

 

Αν δεις εκεί στα Methods inherited from class javax.swing.JComponent έχει την https://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setBackground(java.awt.Color)   . Απλώς αποφασίζεις ποιο Color θα είναι το αντίστοιχο empty board point color και ποιο χρώμα αναπαριστά το κάθε πιόνι.

 

Αν θες μπορείς να προστέσεις τα JLabels καρφωτά και όταν αρχικοποιείς τα BoardPoints να βάλεις ένα επιπλέον property που είναι ποιο JLabel το αναπαριστά.

 

Δηλαδή αν κατάλαβα καλά να το κάνω αλλάζοντας το χρώμα του JLabel, σωστά;

Αν ναι, πάνω στο JLabel μπορεί να υπάρχουν και άλλα objects, πχ μια φωτογραφία. Επίσης αν τύχει και οι δύο παίκτες είναι στο ίδιο σημείο ο δεύτερος θα κρύβει τον πρώτο.

 

PS: Προς το παρόν τα έχω αφήσει JButtons διότι έχω ένα style για τα JLabel που περνάει και στο board αν γίνουν JLabels και δεν το θέλω.

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

(edited)

Μπορείς να βάλεις και εικόνες αν θες αντί για JLabels και ανάλογα να φορτώνεις την σωστή απο κάποιο path. 4 θέλει όλες και όλες. Μια για το άδειο board point. Μια για το ένα πιόνι,μια για το άλλο πιόνι και μια για το αν είναι και τα 2 πιόνια. Πόσο καλός είσαι με το Paint? :p

Έγινε επεξεργασία από nucleus

Νομίζω είχα δοκιμάσει στην αρχή με το setBackground. Ξαναδοκιμάζω μια και επανέρχομαι.

Ξέχασα να αναφέρω ότι φτιάχτηκε και παίζει με το παρακάτω.

game.getBoard().getButton(z).add(this.pawnIcon);
game.getBoard().getButton(previousPos).remove(this.pawnIcon);
previousPos = this.getPosition(true);
game.getBoard().refresh();

 

Θέλω να προσθέσω έναν timer που απλά θα αυξάνετε ανά δευτερόλεπτα για να μου δείχνει πόση ώρα είναι ο παίχτης στην εφαρμογή.

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

 

Έχει κάνεις κάτι αντίστοιχο;

https://docs.oracle.com/javase/7/docs/api/java/awt/event/WindowListener.html

 

Πρέπει να γράψεις ένα δικό σου custom window listener. Βάλε ένα property στο βασικό παράθυρο της εφαρμογής σου που θα είναι ένα timestamp.

Όταν ανοίγει το παράθυρο θα παίρνεις το current timestamp εκείνη την στιγμή και θα το βάζεις στο property. Όταν κλείνει το παράθυρο θα διαβάζεις το property και θα βλέπεις πόσα λεπτά ή δευτερόλεπτα έχουν περάσει από τότε και θα το γράφεις σε ένα αρχείο. Η άλλη λύση είναι να δεις και να χρησιμοποιείς κάποιο logger.

 

Παράδειγμα για window listeners:

 

https://docs.oracle.com/javase/tutorial/uiswing/events/windowlistener.html

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.