• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-03-2010, 09:40   #1 (permalink)
Neuer User
 
Benutzerbild von eaten
 
Registriert seit: Jul 2009
Ort: bei Berlin
Beiträge: 22
Fehler/Problem beim "Rundenbasiert" (Beat em up)

Hi Leute

Oh Gott ich hoffe die Überschrift ist irgendwie verständlich, aber ich wusste nicht wie ich mein Prolem kurz ausdrücken soll.

Ich hab hier mein Beat em up, bloß das es rundenbasiert ist, funktioniert nicht. Leider. Also nach der ersten Runde soll sie zweite Folgen, dann die Dritte, wer mehr gewonnen hat - Gewinner.
Das ganze Spiel war mal in zwei Dateien, einmal der Menü Datei und der Spieler Datei. Jetzt kuddel muddel ich das zusammen zu einer Demoversion.
Wir hatten damals mehrere Spielerauswahlmöglichkeiten. Die habe ich rausgenommen etc. Abspeckungen eben.
Aber das rundenbasierte soll ja dennoch bleiben.
Das ganze Spiel ist auf Spieler vs. Computer (Ki)
Spieler vs Spieler gibt es hier nicht.

Ich komme mal zum Code. Den ganzen werde ich nicht posten, denn der ist mittlerweile auch schon 860 Zeilen lang.
Achso, das ganze ist AS 2.

Zu Beginn die Variablen etc.
Dann kommt die "Ampel" - die Anzeige wer gewonnen hat, grün gewonnen, gelb draw und rot verloren.

Zu Beginn habe ich noch die beiden Variablen. Natürlich habe ich mehr, aber der Rest ist für die Spieler.
Code:
var runde:Number = 1;
var gewinner_arr:Array = new Array();
dann
Code:
ampelstand();
function ampelstand()
{
	
//----------------------
// Rundenbuttons Spieler
//----------------------
	
	if(runde > 1)
		{
			if(gewinner_arr[0] == "Spieler")			// Spieler gewinnt
				{
					ampel_mc_s_1.gotoAndStop(2);			// grüner  Button
				}
			
			if(gewinner_arr[0] == "KI")				// KI gewinnt
				{
					ampel_mc_s_1.gotoAndStop(4);			// roter Button
				}
			
			if(gewinner_arr[0] == "Unentschieden")	// Unentschieden
				{
					ampel_mc_s_1.gotoAndStop(3);			// gelber Button
				}
		}		
	
	if(runde > 2)
		{
			if(gewinner_arr[1] == "Spieler")		
				{
					ampel_mc_s_2.gotoAndStop(2);
				}
			
			if(gewinner_arr[1] == "KI")
				{
					ampel_mc_s_2.gotoAndStop(4);
				}
			
			if(gewinner_arr[1] == "Unentschieden")
				{
					ampel_mc_s_2.gotoAndStop(3);
				}
		}		
	
	if(runde > 3)
		{
			if(gewinner_arr[2] == "Spieler")
				{
					ampel_mc_s_3.gotoAndStop(2);
				}
			
			if(gewinner_arr[2] == "KI")
				{
					ampel_mc_s_3.gotoAndStop(4);
				}
			
			if(gewinner_arr[2] == "Unentschieden")
				{
					ampel_mc_s_3.gotoAndStop(3);
				}
		}		
	
//---------------------------
// Rundenbuttons KI
//---------------------------
	
	if(runde > 1)
		{
			if(gewinner_arr[0] == "KI")
				{
					ampel_mc_ki_1.gotoAndStop(2);
				}
			
			if(gewinner_arr[0] == "Spieler")
				{
					ampel_mc_ki_1.gotoAndStop(4);
				}
			
			if(gewinner_arr[0] == "Unentschieden")
				{
					ampel_mc_ki_1.gotoAndStop(3);
				}
		}		
	
	if(runde > 2)
		{
			if(gewinner_arr[1] == "KI")
				{
					ampel_mc_ki_2.gotoAndStop(2);
				}
			
			if(gewinner_arr[1] == "Spieler")
				{
					ampel_mc_ki_2.gotoAndStop(4);
				}
			
			if(gewinner_arr[1] == "Unentschieden")
				{
					ampel_mc_ki_2.gotoAndStop(3);
				}
		}		
	
	if(runde > 3)
		{
			if(gewinner_arr[2] == "KI")
				{
					ampel_mc_ki_3.gotoAndStop(2);
				}
			
			if(gewinner_arr[2] == "Spieler")
				{
					ampel_mc_ki_3.gotoAndStop(4);
				}
			
			if(gewinner_arr[2] == "Unentschieden")
				{
					ampel_mc_ki_3.gotoAndStop(3);
					
				}
		}	
		
}//END ampelstand();
So dann folg der this.onEnterFrame = function() mit der Spielersteuerung, Lebensabzug... Funktioniert alles einwandfrei.
Unten kommt dann:

Code:
//----------------------
// TimeOut/ "Rundenzeit"
//----------------------

var sec:Number = 60; 									// 60 Sekunden Rundencountdown
var timerNum:Number;
timerNum = setInterval(countDown, 1000);				// Sekundentakt
zeit_txt.text = sec;									// Ausgabefenster für den Countdown

function countDown() 
	{
		sec--;											// Sekunden minus eins
		zeit_txt.text = sec;
		
		if ( sec == 0 || leben == 0 || leben2 == 0 ) 
			{
				if (leben < leben2) 												//Ki gewinnt
					{
						spieler_mc.gotoAndStop("verloren");   						//Ki gewinnt
						ki_mc.gotoAndStop("stand2"); 
						gewinner_arr[ (runde - 1) ] = "KI";
						mySound2.start (0, 1);
					}
				
				if (leben2 < leben) 												// Spieler gewinnt
					{
						ki_mc.gotoAndStop("verloren2");  							// Spieler gewinnt
						spieler_mc.gotoAndStop("stand");
						gewinner_arr[ (runde - 1) ] = "Spieler";
						mySound3.start (0, 1);
					}
				
				if (leben == leben2)												// Timeout / Unentschieden
					{
						spieler_mc.gotoAndStop("verloren"); 
						ki_mc.gotoAndStop("verloren2"); 
						gewinner_arr[ (runde - 1) ] = "Unentschieden";
					}
					
				clearInterval(timerNum);											// Countdown wieder auf 60 sek stellen
				aktiv=true;															// SPieler wird zurückgesetzt
				aktiv_ki=true;														// Ki wird zurückgesetzt
				repeat = false;	
				runde++;														// nächste Runde
					
				if(runde < 4)													// Drei Runden
					{
						countdown_mc._visible = true;								// 3, 2, 1, FIGHT movieclip
						countdown_mc.play();
					}
				else
					{
						ampelstand();												// Kuller werden übernommen s.o.
						for(var i = 0; i < gewinner_arr.length; i++)
							{
								if(gewinner_arr[i] == "Spieler")				// Nach der Runde bekommt der Spieler einen Kuller
									{
										punktespieler++;
									}
								if(gewinner_arr[i] == "KI")					// Nach der Runde bekommt die KI einen Kuller
									{
										punkteki++;
									}
							}//END for
						
						if(punktespieler > punkteki)
							{
								trace("Spieler gewinnt!")
								spieler_mc.gotoAndStop("sieg");
								ki_mc.gotoAndStop("niederlage2"); 
								mySound3.start (0, 1);
							}
							
						if(punkteki > punktespieler)
							{
								trace("KI gewinnt!")
								spieler_mc.gotoAndStop("niederlage");
								ki_mc.gotoAndStop("sieg2"); 
								mySound2.start (0, 1);
							}
							
						if(punkteki == punktespieler)
							{
								countdown_mc._visible = true;
								countdown_mc.play();
							}
					}//else END
			}//if END
	}//countDown END

Ich hoffe mir kann jemand weiterhelfen.
Ich kann auch den ganazen Code nochmal posten.
Die Datei ist leider schon 90MB groß, durch die ganzen Grafiken.
__________________
Ich glaube ich bin manchmal arg Kompliziert
eaten ist offline   Mit Zitat antworten
Alt 03-03-2010, 10:55   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.109
ääääh, gibts dazu auch eine frage?
__________________
die ultimative antwort auf alle programmierfragen: der debugger!
- vor eine programmzeile klicken (==roter punkt)
- im menü "debuggen" aufrufen
- auf den grünen pfeil klicken
- im swf etwas machen (der programmablauf hält beim roten punkt)
- links die objekte auswählen, variable, interne... mal alles ansehen!
mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen.

mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-03-2010, 12:18   #3 (permalink)
Neuer User
 
Benutzerbild von eaten
 
Registriert seit: Jul 2009
Ort: bei Berlin
Beiträge: 22
Ja ^^
Warum geht es nicht? Übersehe ich etwas? Ist der Aufbau falsch?
__________________
Ich glaube ich bin manchmal arg Kompliziert
eaten ist offline   Mit Zitat antworten
Alt 03-03-2010, 12:29   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.109
WAS geht nicht - die hupe oder der blinker? was soll den gehen und tut es nicht?
wer soll den aus diesen fragmenten erraten können was dir im kopf rumschwirrt?
__________________
die ultimative antwort auf alle programmierfragen: der debugger!
- vor eine programmzeile klicken (==roter punkt)
- im menü "debuggen" aufrufen
- auf den grünen pfeil klicken
- im swf etwas machen (der programmablauf hält beim roten punkt)
- links die objekte auswählen, variable, interne... mal alles ansehen!
mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen.

mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (03-03-2010 um 12:48 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 03-03-2010, 12:31   #5 (permalink)
Neuer User
 
Benutzerbild von eaten
 
Registriert seit: Jul 2009
Ort: bei Berlin
Beiträge: 22
Sorry
Warum funktioniert es nicht, dass nach der ersten Runde, Runde zwei startet.
Denn wenn Runde eins beendet ist, "hängt" es.
__________________
Ich glaube ich bin manchmal arg Kompliziert
eaten ist offline   Mit Zitat antworten
Alt 03-03-2010, 12:47   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.109
traces einbauen und/oder mal den debugger benützen.

function countDown() {
trace("test1: countDown wird aufgerufen");
..
trace("test2: bedingung ist "+( sec == 0 || leben == 0 || leben2 == 0 ) );
if ( sec == 0 || leben == 0 || leben2 == 0 ) {
...
trace("test3: bin bei runde++");
runde++;
__________________
die ultimative antwort auf alle programmierfragen: der debugger!
- vor eine programmzeile klicken (==roter punkt)
- im menü "debuggen" aufrufen
- auf den grünen pfeil klicken
- im swf etwas machen (der programmablauf hält beim roten punkt)
- links die objekte auswählen, variable, interne... mal alles ansehen!
mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen.

mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler beim mp3 "in Bibliothek importieren" dizzytom Flash Einsteiger 2 14-09-2007 12:23
Unerklärlicher Fehler: "Target not found: Target="0" Base="_level0"....." JuL! Flash MX 2004 3 13-10-2004 23:40
"Barneys" Film - fehler bei bilder import flash mx problem? joeljoejoel ActionScript 1 1 05-11-2002 19:57
"Fehler beim öffnen eines leeren dokuments" derschally Flash MX 1 19-03-2002 22:36
"Fehler beim öffnen des Dokuments." Falk Flash 4 und Flash 5 9 24-12-2001 17:22


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele