Flash Game - finde Fehler nicht.

a*new*found*flo

Erfahrenes Mitglied
Hallo!

Eine Freundin von mir programmiert gerade folgendes Flash Spiel
und ich finde den Fehler nicht.

Bei dem Spiel geht es darum, dass ein Vogel durch das Bild fliegt und per
Zufall seine Exkremente ablässt. :)

Zum Aufbau:

MC Bambi lässt sich nach links und nach rechts steuern.

MC vogel_rot fliegt von links nach rechts.

MC kacke2 bewegt sich mit dem Vogel mit.

Wenn nun ein Zufallswert dem x-Wert des MC kacke2 entspricht soll bei diesem alles ab Frame 2 abgespielt werden.
Das funktioniert aber leider nicht.
Hier das Script dazu:

PHP:
var blau_fall = 0;
var flug = 0;
var flug_rot = 0;
var zufall_blau = 0;
var rot_fall = 0;

onEnterFrame = function() { 

// Bambi bewegen

if(Key.isDown(Key.RIGHT)) {
						
						bambi._x += 10;
						bambi.gotoAndStop(2);
						
						}
						
if(Key.isDown(Key.LEFT))
			{
					bambi._x -= 10;
					bambi.gotoAndStop(1);
					 }


//Vogel Flug
	
		// roter Vogel + mc kacke2
		if(vogel_rot._x <= 1100)
		{
			vogel_rot._x += 10;
		}
		else {
			vogel_rot._x = -20;
		}
		
		if(flug_rot == 0)
		{
			kacke2._x = vogel_rot._x;
		}
		
		// zufall rot
		if(rot_fall == 0) {
		rot_fall = 1;
		zufall_rot = Math.ceil(Math.random()*800);
		}
		
		
		rote_kacke = Math.ceil(kacke2._x);
		
		if(zufall_rot == rote_kacke)
		{
			flug_rot = 1;
			kacke2.gotoAndPlay(2);
		}
		
}

Freue mich auf Hilfe, vielen Dank, Flo
 
Was genau funktioniert nicht? Fliegt die "Kacke" nicht runter oder fliegt sie an einem nicht erwünschten Punkt herunter.

Könntest du bitte mal die .fla oder eine Beispiel Datei posten um einige Werte vielleicht zu checken
 
Hello!

Also die Kacke fliegt nicht runter.
Leider habe ich die fla nicht hier, kann sie erst morgen Vormittag posten, allerdings wurden alle Instanznamen von mir mehrmals überprüft und ich habe dabei nichts gefunden.

Ich habe auch Textfelder mit den Variablen "rot_fall", "rot_kacke" und "rot_zufall" angelegt um die werte überprüfen zu können und die werte stimmen alle.

Ab und zu, und dass ist das Mystische, fällt sie doch herunter, aber eben nur ganz selten.
Deswegen habe ich auch schon den Zufallswert und den x-Wert auf die nächste ganzzahl mit Math.ceil() gerundet.

Bin ratlos.
 
Abend!

So, habe das jetzt nochmal ganz schnell nachgebaut und auch nochmals den Code neu geschrieben, allerdings passiert bei einer Übereinstimmung noch immer nichts.
Im Anhang die .fla und hier nochmals der neue Code:
PHP:
var fall = 0; //Variable ob Kacke mitfliegt oder nicht
var einmal = 0; //Zufall nur einmal aufrufen

onEnterFrame = function() {
	
	//Bambi bewegen//
	if(Key.isDown(Key.RIGHT)) 
					{ 
                         
                        bambi._x += 10; 
                        bambi.gotoAndStop(2); 
                         
                        } 
                         
	if(Key.isDown(Key.LEFT)) 
            { 
                    bambi._x -= 10; 
                    bambi.gotoAndStop(1); 
                     } 
					 
	// Vogel bewegen
				
				if(vogel._x <= 540)
				{
					vogel._x += 5;
				}
				else
				{
					vogel._x = -20;
				}
				
	// Kacke mitbewegen
	
	if(fall == 0)
	{
		kacke._x = vogel._x;
	}
	
	// Zufall
	if(einmal == 0)
	{
	zufall = Math.ceil(Math.random()*500);
	einmal = 1;
	}
	kackexwert = Math.ceil(kacke._x);
	
	//Vergleichen und fallen lassen
	
	if(zufall == kackexwert)
	{
		kacke.gotoAndPlay(2);
		fall = 1;
		trace("Kacke");
	}
	
				
}
 

Anhänge

  • bambi.fla
    56 KB · Aufrufe: 33
ok ist ein logischer Fehler. Und zwar verschiebst du deinen Vogel bzw deine "Kacke" immer um 5 Pixel nach rechts. Allerdings wenn die Zufallszahl nicht durch 5 teilbar ist, ist es auch nicht möglich das es mal die gleiche Zahl sein kann wie der _x Wert zB 102 oder so.

Was du machen kannst anstatt == dies hier verwenden <=. Dann wird es bei der nächsten 5er Zahl abgeworfen ;)
 
Hallo!

Ah, das leuchtet natürlich ein ;)
Aber wenn ich den Operator <= verwende, heißt das dann nicht, dass sobald der Wert kleiner ist, der Vogel abwirft? Oder sehe ich das falsch?
Meiner Meinung nach (kanns grad nicht ausprobieren) müsste er dann immer abwerfen, wenn der x Wert kleiner bzw. gleich dem Zufallswert ist?
 
Kommt ganz darauf an was du links und rechts davon stehen hast. In dem Fall (<=) wird die Bedingung true sobald der rechte Wert größer ist als der Linke.
 
Danke, habs schon gelöst und zwar hab ich zwei variablen genommen
und in denen den Zufallswert einmal um 10 größer und einmal um 10 kleiner gemacht.
Dann habe ich einfach verglichen:

if(xwert <= zufall_gross && xwert >= zufall_klein)
{
}

Danke nochmals!
 
Was du natürlich auch machen könntest, wäre die Zufallszahl durch die Zahl teilen, welche auch den Vogel nach rechts verschiebt. Diese Zahl dann Runden und wieder mal die Zahl, welche den Vogel nach rechts verschiebt. Dann wäre sicher gestellt das die Zahl auch bei dem _x Wert des Vogels vorkommt
 

Neue Beiträge

Zurück