IHateLove Δημοσ. 16 Σεπτεμβρίου 2012 Δημοσ. 16 Σεπτεμβρίου 2012 προσπαθώ να φτιάξω ένα φιδάκι, έχουμε και λέμε, το κεφάλι είναι ξεχωριστό από το υπόλοιπο σώμα, δηλαδή έχουν ένα Array για το σώμα. το σώμα ακολουθεί το κεφάλι εδώ είναι ένα κομμάτι κώδικα, το παιχνίδι δεν έχει τελειώσει και υπάρχουν μερικά πράγματα που δεν έχω κάνει, "όπως όταν πέφτει πάνω σε μήλο να μεγαλώνει", το λέω για τα διάφορα ακαταλαβίστικα στον κώδικα το πρόβλημα μου έχει να κάνει με την ουρά, δηλαδή όταν στρίβω πέφτει πάνω στο ξύλο, δείτε βίντεο http://tinypic.com/player.php?v=34znlw5&s=6 επίσης υπάρχει κάποιο θέμα με τον Recorder και ίσως το δείτε λίγο σε Fast mode ας πούμε. > protected override void Update(GameTime gameTime) { if (!isPaused) { if (GOTime.ElapsedMilliseconds < 1000 * 200) { UpdateInput(); UpdateMove(gameTime); const int NTIME = 100; if (sw.ElapsedMilliseconds > NTIME) { if (LookAt == Face.DOWN) { for (int i = MAX - 1; i > 0; i--) { Pos[i].Y = Pos[i - 1].Y - distance; Pos[i].X = Pos[i - 1].X; } } if (LookAt == Face.RIGHT) { for (int i = MAX - 1; i > 0; i--) { Pos[i].Y = Pos[i - 1].Y; Pos[i].X = Pos[i - 1].X - distance; } } if (LookAt == Face.LEFT) { for (int i = MAX - 1; i > 0; i--) { Pos[i].Y = Pos[i - 1].Y; Pos[i].X = Pos[i - 1].X + distance; } } if (LookAt == Face.UP) { for (int i = MAX - 1; i > 0; i--) { Pos[i].X = Pos[i - 1].X; Pos[i].Y = Pos[i - 1].Y + distance; } } } else sw.Start(); if (sw.ElapsedMilliseconds > NTIME) sw.Restart(); if (Pos[0].X > 800) Pos[0].X = 0; if (Pos[0].Y > 550) Pos[0].Y = 0; if (Pos[0].X < 0) Pos[0].X = 780; if (Pos[0].Y < 0) Pos[0].Y = 540; }//endofGOTIME else GameOver = true; NearApple(); } Unpuse(); base.Update(gameTime); }
Directx Δημοσ. 16 Σεπτεμβρίου 2012 Δημοσ. 16 Σεπτεμβρίου 2012 Τόσο το φιδάκι (κατά την είσοδο του στην πίστα) όσο και κάθε αντικείμενο της πίστας θα πρέπει να είναι τοποθετημένο κατά τέτοιον τρόπο που να υπακούει σε ένα νοητό GRID συγκεκριμένων διαστάσεων ώστε να μην έχεις τέτοιου είδους προβλήματα. Για να καταλάβεις τι εννοώ θα σου δείξω ένα snapshot από ένα φιδάκι που έγραψα πριν χρόνια, με ενεργοποιημένο το GRID mode: Κάθε σημείο στην πίστα αντιστοιχεί σε ένα συγκεκριμένων διαστάσεων (WxH) TILE οπότε όλες οι ρουτίνες μετακίνησης ακολουθούν το βήμα που προκύπτει από τις διαστάσεις του TILE. Με αυτό τον τρόπο οι έλεγχοι σύγκρουσης κλπ γίνονται άνετα & αξιόπιστα και δεν προκύπτουν οπτικά σφάλματα όπως η ουρά ή το σώμα να μην κεντράρουν σωστά και να ακουμπούν άλλα αντικείμενα της πίστας ή τον εαυτό τους. 1
IHateLove Δημοσ. 16 Σεπτεμβρίου 2012 Μέλος Δημοσ. 16 Σεπτεμβρίου 2012 κατάλαβα, το σκέφτηκα αυτό , δηλαδή να φτιάξω έναν ιστό W*H από Rectangles (32x32) ή (16Χ16) και να το κουνάω σε κάποιο κελί και όχι Χ++, Χ--, Υ++, Υ-- αυτό θα κάνω απλά τώρα το κάνω μπακαλίστικα γιατί στέκομαι πολύ στην εμφάνιση... *και λέω να φτιάξω και μια Ουρά αντί πίνακα για την προσθήκη κομματιών πίσω
IHateLove Δημοσ. 16 Σεπτεμβρίου 2012 Μέλος Δημοσ. 16 Σεπτεμβρίου 2012 υπάρχει κάπου ο κώδικας για το παραπάνω;
παπι Δημοσ. 16 Σεπτεμβρίου 2012 Δημοσ. 16 Σεπτεμβρίου 2012 Δες κανα tut για xna. Δεν υπαρχουν grid, ολα ειναι νοητα. Η λογικη για το φιδακι ειναι αρκετα απλη εφοσον εχεις μονο μια λιστα απο points με το πρωτο να ειναι το κεφαλι και τα υπολοιπα το σωμα. Για να παει μπροστα, αφαιρεις το τελευταιο point (απο την ουρα) και βαζεις νεο point στην αρχη (το κεφαλι δλδ) .
IHateLove Δημοσ. 16 Σεπτεμβρίου 2012 Μέλος Δημοσ. 16 Σεπτεμβρίου 2012 Δες κανα tut για xna. Δεν υπαρχουν grid, ολα ειναι νοητα. Η λογικη για το φιδακι ειναι αρκετα απλη εφοσον εχεις μονο μια λιστα απο points με το πρωτο να ειναι το κεφαλι και τα υπολοιπα το σωμα. Για να παει μπροστα, αφαιρεις το τελευταιο point (απο την ουρα) και βαζεις νεο point στην αρχη (το κεφαλι δλδ) . δεν υπάρχει, μάλλον θα πάρω το χαρτί και το μολύβι να το βγάλω μόνος μου, δεν είναι και τίποτα δύσκολο, άσε που καλό θα μου κάνει... να θυμηθώ και την αριθμητική-γεωμετρία.. μου άρεσε πολύ το μάθημα της αριθμητικής, ε καιρός να επανέλθω άλλαξε avatar , τρόμαξα
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα