Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Γνωρίστε το Πρόγραμμα - Πίνακας
- Βήμα 3: Γνωρίστε το Πρόγραμμα - Πλακάκι
- Βήμα 4: Γνωρίστε το Πρόγραμμα - Παιχνίδι
- Βήμα 5: Σημαντικές μέθοδοι - Κίνηση
Βίντεο: Προγραμματίστε το δικό σας παιχνίδι 2048 W/Java!: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:31
Από PranP1My (Μη πλήρης) SiteFollow Περισσότερα από τον συγγραφέα:
Λατρεύω το παιχνίδι 2048. Και έτσι αποφάσισα να προγραμματίσω τη δική μου έκδοση.
Είναι πολύ παρόμοιο με το πραγματικό παιχνίδι, αλλά ο προγραμματισμός του μου δίνει την ελευθερία να αλλάξω ό, τι θέλω όποτε θέλω. Εάν θέλω ένα παιχνίδι 5x5 αντί για το τυπικό 4x4, μια απλή αλλαγή χρησιμοποιώντας τον κατασκευαστή "Board" θα μου το επιτρέψει. Πείτε ότι θέλω να κάνω το παιχνίδι πιο δύσκολο, προσθέτοντας κομμάτια σε θέσεις που θα το κάνουν πιο πολύπλοκο για τον παίκτη παρά τυχαία. Χρησιμοποιώντας έναν απλό αλγόριθμο, μπορώ να κάνω ακριβώς αυτό. Παρόλο που δεν θα καλύψω όλες αυτές τις τροποποιήσεις σε αυτό το Instructable, σκοπεύω να προσθέσω περισσότερες όσο προχωρώ.
Προς το παρόν, ωστόσο, θα προγραμματίσουμε το τυπικό σας παιχνίδι του 2048.
Ας αρχίσουμε!
(Μια δευτερεύουσα σημείωση: Αυτό το Instructable απαιτεί μέτρια γνώση προγραμματισμού - συγκεκριμένα με Java)
Βήμα 1: Υλικά
Δεν θα χρειαστείτε πολλά για αυτό το έργο, καθώς είναι απλώς ένας προγραμματισμός.
Υλικά:
- ΦΟΡΗΤΟΣ ΥΠΟΛΟΓΙΣΤΗΣ
- Eclipse (ή οποιοδήποτε IDE της επιλογής σας)
Ναι. Αυτό είναι.
Βήμα 2: Γνωρίστε το Πρόγραμμα - Πίνακας
Ανέβασα όλο τον κωδικό μου στο GitHub - ελέγξτε τον εδώ:
Χώρισα το παιχνίδι σε 3 κατηγορίες: Επιτραπέζιο, Πλακάκι και Παιχνίδι.
Σανίδα:
Περιγραφή: Η τάξη Board ασχολείται με τον πίνακα παιχνιδιών, δημιουργώντας μια σειρά από στοιχεία "Tile", παίρνοντας την τρέχουσα βαθμολογία και το υψηλότερο κεραμίδι και βάζοντας τον πίνακα σε μια συμβολοσειρά (που θα χρησιμοποιηθεί αργότερα στο "Game"). Το μεγαλύτερο μέρος της λογικής είναι επίσης εδώ, η τάξη παρέχει μεθόδους για την αναπαραγωγή 2 και 4 σε τυχαίες τοποθεσίες, μετακίνηση πάνω, κάτω, αριστερά και δεξιά και ενημέρωση των παικτών όταν τελειώσει το παιχνίδι.
Κατασκευαστές:
/ * Προεπιλεγμένος κατασκευαστής για τον πίνακα - ρυθμίζει έναν πίνακα 4x4 */
δημόσιο συμβούλιο () {…}
/ * Κατασκευαστής για τον πίνακα - δημιουργεί μια μήτρα με καθορισμένο μέγεθος πλέγματος */
δημόσιος πίνακας (int grids) {…}
Μέθοδοι:
/ * Μέθοδος Getter που επιστρέφει τον πίνακα */
δημόσιο πλακάκι getBoard () {…}
/ * Μέθοδος Getter που επιστρέφει τη βαθμολογία */
public int getScore () {…}
/ * Βρίσκει το υψηλότερο πλακίδιο στον πίνακα και το επιστρέφει */
public int getHighTile () {…}
/ * Εκτυπώνει την πλακέτα στην κονσόλα - για σκοπούς δοκιμής */
δημόσια κενή εκτύπωση () {…}
/ * Επιστρέφει τον πίνακα ως συμβολοσειρά - χρησιμοποιείται στο GUI */
public String toString () {…}
/ * Αναπαράγει 2 (ή 4) σε κενό χώρο πολύ γρήγορα γίνεται μια κίνηση */
public void spawn () {…}
/ * Ελέγχει εάν ο πίνακας έχει μαυρίσει εντελώς και αν είναι, θα ωθήσει τους παίκτες να κάνουν επανεκκίνηση */
δημόσιο boolean blackOut () {…}
/ * Ελέγχει αν το παιχνίδι έχει τελειώσει - όταν ο πίνακας έχει μαυρίσει και κανένα από τα πλακίδια δεν μπορεί να συνδυαστεί */
δημόσιο boolean gameOver () {…}
/ * Καλείται όταν πατηθεί το "w" ή το επάνω βέλος - καλεί "verticalMove" για κάθε πλακίδιο στον πίνακα με την παράμετρο "up" */
public void up () {…}
/ * Καλείται όταν πατηθεί το 's' ή το κάτω βέλος - καλεί 'verticalMove' για κάθε πλακίδιο στον πίνακα με την παράμετρο 'down' */public void down () {…}
/ * Καλείται όταν πατηθεί το «d» ή το δεξί βέλος - καλεί το «horizontalMove» για κάθε πλακίδιο στον πίνακα με την παράμετρο «δεξιά» */public void right () {…}
/ * Καλείται όταν πιέζεται το "a" ή το αριστερό βέλος - καλεί "horizontalMove" για κάθε πλακίδιο στον πίνακα με την παράμετρο "αριστερά" */
δημόσιο κενό αριστερά () {…}
/* Συγκρίνει τιμές δύο πλακιδίων μαζί και αν είναι ίδιες ή αν μία είναι ίση με 0 (απλό κεραμίδι) - προστίθενται οι τιμές τους (με την προϋπόθεση ότι τα πλακίδια που συγκρίνουμε είναι δύο διαφορετικά πλακίδια και κινούνται προς την κατάλληλη κατεύθυνση) - αναδρομικά κινείται στη σειρά */
public void horizontalMove (int row, int col, String direction) {…}
/* Συγκρίνει τιμές δύο πλακιδίων μαζί και αν είναι ίδιες ή αν μία είναι ίση με 0 (απλό κεραμίδι) - προστίθενται οι τιμές τους (με την προϋπόθεση ότι τα πλακίδια που συγκρίνουμε είναι δύο διαφορετικά πλακίδια και κινούνται προς την κατάλληλη κατεύθυνση) - κινείται αναδρομικά μέσα από τη στήλη */
public void verticalMove (int row, int col, String direction) {…}
Ναι, αυτές είναι πολλές μέθοδοι - αλλά μην ανησυχείτε, οι περισσότερες είναι εξαιρετικά εύκολες στην κατανόηση. Επιπλέον, η τάξη "Board" είναι η πιο περίπλοκη, οπότε όλα μετά από αυτό θα είναι σχετικά απλά.
Βήμα 3: Γνωρίστε το Πρόγραμμα - Πλακάκι
Πλακάκι:
Περιγραφή: Η κλάση Tile ασχολείται με τα μεμονωμένα πλακίδια και είναι η μικρότερη από όλες τις κλάσεις. Κάθε κεραμίδι έχει μια ακέραια τιμή και ένα χρώμα. Διαθέτει δύο κατασκευαστές που δημιουργούν πλακίδια με τιμή 0 (προεπιλογή) ή τιμή #. Οι μέθοδοι είναι ως επί το πλείστον αυτονόητες, με τις μεθόδους «getter» και «setter» να αποτελούν το μεγαλύτερο μέρος του συνόλου.
Κατασκευαστές:
/ * Κατασκευάζει ένα βασικό πλακίδιο με τιμή 0 */
δημόσιο πλακάκι () {…}
/ * Κατασκευάζει ένα πλακίδιο με τιμή αριθμού */
δημόσιο πλακάκι (αριθμός int) {…}
Μέθοδοι:
/ * Παίρνει την τιμή του κεραμιδιού */
public int getValue () {…}
/ * Ορίζει την τιμή του κεραμιδιού - χρησιμοποιείται όταν προσθέτετε δύο πλακίδια μαζί */
public void setValue (int value) {…}
/ * Αντιπροσωπεύει το κεραμίδι ως συμβολοσειρά - χρησιμοποιείται στο GUI */
public String toString () {…}
/ * Ορίζει το χρώμα του κεραμιδιού με βάση την τιμή του */
public void setColor () {…}
/ * Παίρνει το χρώμα του κεραμιδιού */
public void getColor () {…}
Βήμα 4: Γνωρίστε το Πρόγραμμα - Παιχνίδι
Παιχνίδι
Περιγραφή: Το Game Class περιλαμβάνει την κύρια μέθοδο, τις περισσότερες από τις μεθόδους GUI και τις βασικές αλληλεπιδράσεις. Παίρνει και τις τάξεις Tile και Board και τους επιτρέπει να συνεργάζονται.
Κατασκευαστές:
Κανένας
Μέθοδοι:
/ * ρυθμίζει το GUI με τα κατάλληλα μεγέθη και προσθέτει ένα Key Listener */
δημόσιο στατικό κενό setUpGUI () {…}
/ * Ελέγχει για να διαπιστωθεί εάν πατούν τα πλήκτρα wasd ή βέλους και εκτελεί τις κατάλληλες ενέργειες - ενημερώνει το JFrame με κάθε κίνηση */
public void keyPressed (KeyEvent e) {…}
/ * Ζωγραφίζει το GUI με μια σειρά από χορδές, τον πίνακα, τα πλακάκια και εξασφαλίζει ότι ξαναβαφτούν όταν τελειώσει το παιχνίδι */
δημόσιο κενό χρώμα (Γραφικά g) {…}
/ * σχεδιάζει ένα μεμονωμένο κεραμίδι - καλείται από τη μέθοδο βαφής */
public void drawTiles (Graphics g, Tile tile, int x, int y) {…}
/ * Κύρια μέθοδος - ρυθμίζει το GUI και ξεκινά το παιχνίδι */
δημόσιο στατικό κενό κεντρικό (String args) {…}
Βήμα 5: Σημαντικές μέθοδοι - Κίνηση
Οι μέθοδοι κίνησης είναι οι πιο σημαντικές για κατανόηση, αλλά τα καλά νέα είναι ότι μόλις κατανοήσετε τις κάθετες κινήσεις, μπορείτε να εφαρμόσετε αυτήν την κατανόηση στις οριζόντιες κινήσεις. Στην πραγματικότητα, οι τρεις μέθοδοι κάθετης κίνησης είναι ακριβώς οι ίδιες με τις τρεις οριζόντιες κινήσεις μεθόδου, εκτός από τη μία που κινείται σε γραμμές και την άλλη κατά μήκος των στηλών. Για το λόγο αυτό, ας επικεντρωθούμε μόνο στις μεθόδους κάθετης κίνησης.
ιδιωτικό κενό verticalMove (int row, int col, String direction)
{Αρχικό κεραμίδι = σανίδα [περίγραμμα] [κολ]; Σύγκριση πλακιδίων = σανίδα [σειρά] [κολ]; εάν (αρχικό.getValue () == 0 || αρχικό.getValue () == compare.getValue ()) {αν (σειρά> περίγραμμα || (κατεύθυνση. ισούται ("κάτω") && (σειρά <περίγραμμα))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); compare.setValue (0); }} else {if (direction.equals ("down")) {border--; } else {border ++; } verticalMove (σειρά, κολόνα, κατεύθυνση); }}
Η παραπάνω μέθοδος, verticalMove, καλείται με τις μεθόδους "πάνω" και "κάτω". Ας ρίξουμε μια ματιά στη μέθοδο «επάνω».
δημόσιο κενό ()
{for (int i = 0; i <grids; i ++) {border = 0; για (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up") ? }}}}}
Αυτή η μέθοδος περνάει από ολόκληρο τον πίνακα και καλεί το verticalMove για κάθε πλακίδιο με την παράμετρο "επάνω". Το verticalMove συγκρίνει το πλακίδιο στη θέση «j» και «i» με το πλακίδιο στη θέση «περίγραμμα» και «i». Αν τα δύο είναι ίσα, συνδυάζονται. Εάν δεν είναι, το πλακίδιο περιγράμματος αυξάνεται κατά 1 (καθώς η παράμετρος στη θέση του είναι "επάνω") και το verticalMove καλείται ξανά.
Συνιστάται:
Φτιάξτε το δικό σας παιχνίδι 1D Pong: 5 βήματα (με εικόνες)
Make Your Own 1D Pong Game: Για αυτό το έργο θα σας δείξω πώς συνδύασα έναν πίνακα MDF με κουμπιά βομβητή, LED και ένα Arduino Nano για να δημιουργήσω ένα παιχνίδι 1D Pong που είναι πραγματικά διασκεδαστικό να παίζεις. Στην πορεία θα σας δείξω πώς να δημιουργήσετε το κύκλωμα ηλεκτρονικών και πόσο διαφέρει
Προγραμματίστε το Arduino σας με συσκευή Android μέσω Bluetooth: 6 βήματα (με εικόνες)
Προγραμματίστε το Arduino σας με μια συσκευή Android μέσω Bluetooth: Γεια σας κόσμο, σε αυτό το Instructable θέλω να σας δείξω πώς να προγραμματίσετε το Arduino Uno με τη συσκευή σας Android μέσω Bluetooth. Είναι πολύ απλό και τόσο φθηνό. Επίσης, μας επιτρέπει να προγραμματίσουμε το Arduino μας όπου θέλουμε μέσω ασύρματου bluetooth … Έτσι
Γράψτε το δικό σας παιχνίδι Tic Tac Toe σε Java: 6 βήματα
Γράψτε το δικό σας παιχνίδι Tic Tac Toe σε Java: Είμαι βέβαιος ότι όλοι γνωρίζετε για το κλασικό παιχνίδι του Tic Tic Toe. Από τα δημοτικά μου χρόνια, το Tic Tac Toe ήταν ένα δημοφιλές παιχνίδι που συνήθιζα να παίζω με τους φίλους μου. Πάντα με γοήτευε η απλότητα του παιχνιδιού. Στο πρωτοετές μου έτος
Πώς να ελέγξετε αν ένα παιχνίδι θα τρέξει στον υπολογιστή σας πριν αγοράσετε το παιχνίδι .: 4 βήματα
Πώς να ελέγξετε αν ένα παιχνίδι θα τρέξει στον υπολογιστή σας πριν αγοράσετε το παιχνίδι .: Πρόσφατα απέκτησα το Call of Duty 4 από έναν φίλο (δωρεάν θα μπορούσα να προσθέσω) επειδή δεν θα εκτελεστεί στον υπολογιστή του. Λοιπόν, ο υπολογιστής του είναι αρκετά νέος και με μπέρδεψε γιατί δεν θα λειτουργούσε. Έτσι, μετά από μερικές ώρες αναζήτησης στο διαδίκτυο, συνάντησα
Προγραμματίστε τον υπολογιστή σας να απενεργοποιείται αυτόματα, ορίζοντας ποια ώρα θέλετε να το κάνετε αυτό: 4 βήματα
Προγραμματίστε τον υπολογιστή σας να απενεργοποιείται αυτόματα, αναφέροντας ποια ώρα θέλετε εν μία νυκτί, δεν ήθελα να διατηρήσω τον υπολογιστή μου ανοιχτό όλη τη νύχτα μετά την ολοκλήρωση των λήψεων και στις