Ich würde die Aufrufe mit setTimeout aufrufen.
Damit sollte das Problem gelöst sein.
Hallo,
ich versuche ein Memory mit Computergegner zu erstellen.
Nun haberts an der Stelle, dass das AS wesentlich schneller mit der Abarbeitung ist als mein MovieClip.
Problem (Feinheiten wie: "richtige Karten" erstmal außen vor):
AS: der PC ist dran, wählt eine Karte*
MC: die Karte dreht sich herum
AS: der PC wählt eine 2. Karte*
MC: die 2. Karte dreht sich herum
AS: der PC bestätigt sein Vorgang -> nächster Spieler
nun läuft es so ab, dass ein menschlicher Spieler niemals hinterher kommen würde.
an den stellen * wäre ein sleep/delay/waitfor ganz hilfreich
Eigene Events hab ich probiert: scheidert an der Tatsache das sich die Funktionen gegenseitig aufrufen und ich mehrer verschieden Verzweigungen (also viele neue Funktionen) haben würde
PAP:
(I) ist PC dran?
--> nein --> .... -> do_click(pos) --> .... --> nächster Spieler --> (I)
--> ja --> kennt PC schon Karten? --> ja --> ... [hier erstmal egal]
_____________________________--> nein --> wähle Karte --> do_click(pos)
_____________________________________--> wähle 2. Karte --> do_click(pos)
und die do_click(pos:Array) soll am Ende einfach kurz warten.
wie ihr seht ruft jeder in unterschiedlichen zuständen do_click(pos) auf.
Geändert von blackfreeze (06.04.2011 um 22:08 Uhr) Grund: Problem behoben, Danke für die Hilfe :)
Ich würde die Aufrufe mit setTimeout aufrufen.
Damit sollte das Problem gelöst sein.
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
mach ich derzeit auch
nur hab ich problem dann mit ein paar variablen
beispiel:
function npc_click() {
....
setTimeout(do_click, 2000, pos);
___ if(in_memory(open_cards[0]) {
______ setTimeout(do_click, 2000, pos_des_passenden_gegenstücks);
___ } else {
______ setTimeout(do_click, 2000, pos_random);
___ }
in der abfrage "ob die gewählte karte den selben wert hat wie eine die sich im speicher befindet"
braucht open_cards welche von do_click(pos) gefüllt wird
}
Dann Speichere sie doch in normalen Variabeln die du dann abfragst:
gegenstueck = pos_des_passenden_gegenstücks
random = pos_random
Übrigens kannst du zum Code einfügen, den PHP- Button benutzen, dass macht das lesen einfacher.
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
das war anscheinend nicht gut formuliert
in do_click steht fest was für ein bild(id) unter der karte war und weil ich die id für den nächsten schritt in ncp_click brauche ist die verzögerung kontra produktiv und führt zu falschen abläufen
ich werd das ganze mal auf endlichen automatentheorie ausweiten auch wenn ich das für den 'kleinen' zusammenhang übertrieben finde
danke erstmal
jetzt ist es soweit fertig
das ganze läuft nun über 2 frames
der erste ist als code hier dargestellt und der zweite macht einfach gotoAndPlay(currentFrame-1)
PHP-Code:/* GAME_STATE
*
* 0 = warte bis timer erreicht
* 1 = nächster Spieler
* 2 = NPC ist dran 1. Karte
* 3 = NPC ist dran 2. Karte
* 4 = NPC hat fertig | Karten prüfen
* 5 = Spieler wählt 1. Karte
* 6 = Spieler wählt 2. Karte
* 7 = Spieler hat fertig | Karten prüfen
*/
switch (curr_state) {
case 0:
enable_clicks(false);
if(timer <= getTimer()) {
curr_state = next_state;
timer = 0;
}
break;
case 1:
enable_clicks(false);
next_player();
break;
case 2:
npc_click(my_game.get_player_at(start_player));
break;
case 3:
npc_click(my_game.get_player_at(start_player));
break;
case 4:
check_open_cards();
break;
case 5:
enable_clicks(true);
break;
case 6:
enable_clicks(true);
break;
case 7:
check_open_cards();
break;
default:
break;
}
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)