Προς το περιεχόμενο

Snake movement


Προτεινόμενες αναρτήσεις

Δημοσ.

προσπαθώ να φτιάξω ένα φιδάκι,

 

έχουμε και λέμε, το κεφάλι είναι ξεχωριστό από το υπόλοιπο σώμα, δηλαδή έχουν ένα 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);
    }

Δημοσ.

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

 

Για να καταλάβεις τι εννοώ θα σου δείξω ένα snapshot από ένα φιδάκι που έγραψα πριν χρόνια, με ενεργοποιημένο το GRID mode:

 

post-41640-0-78780500-1347778209_thumb.jpg

 

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

 

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

  • Like 1
Δημοσ.

κατάλαβα, το σκέφτηκα αυτό , δηλαδή να φτιάξω έναν ιστό W*H από Rectangles (32x32) ή (16Χ16) και να το κουνάω σε κάποιο κελί και όχι Χ++, Χ--, Υ++, Υ--

 

αυτό θα κάνω απλά τώρα το κάνω μπακαλίστικα γιατί στέκομαι πολύ στην εμφάνιση...

 

*και λέω να φτιάξω και μια Ουρά αντί πίνακα για την προσθήκη κομματιών πίσω

Δημοσ.

Δες κανα tut για xna. Δεν υπαρχουν grid, ολα ειναι νοητα.

 

Η λογικη για το φιδακι ειναι αρκετα απλη εφοσον εχεις μονο μια λιστα απο points με το πρωτο να ειναι το κεφαλι και τα υπολοιπα το σωμα. Για να παει μπροστα, αφαιρεις το τελευταιο point (απο την ουρα) και βαζεις νεο point στην αρχη (το κεφαλι δλδ) .

Δημοσ.

Δες κανα tut για xna. Δεν υπαρχουν grid, ολα ειναι νοητα.

 

Η λογικη για το φιδακι ειναι αρκετα απλη εφοσον εχεις μονο μια λιστα απο points με το πρωτο να ειναι το κεφαλι και τα υπολοιπα το σωμα. Για να παει μπροστα, αφαιρεις το τελευταιο point (απο την ουρα) και βαζεις νεο point στην αρχη (το κεφαλι δλδ) .

 

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

 

μου άρεσε πολύ το μάθημα της αριθμητικής, ε καιρός να επανέλθω

 

 

άλλαξε avatar , τρόμαξα :P

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...