Προς το περιεχόμενο
  • 0
Συνδεθείτε  
IHateLove

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);
    }

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

5 απαντήσεις σε αυτή την ερώτηση

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

  • 0

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

 

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

 

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

 

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

 

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

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

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

 

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

 

 

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

 

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.