Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-11-2011, 15:41   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 8
Flashgame Safe knacken

Ich habe für ein Flashgame ein Rätsel programmiert welches ein Tastenfeld mit den Tasten 0-9 hat. Jetzt soll der richtige Code herausgefunden werden.
Bei richtiger Eingabe bleibt die Zahl stehen bei falscher Eingabe kommt "falsch" und man muss von vorne anfangen.
Wenn man aber die erste Zahl 2 mal drückt bleibt die 1 stehen und ich weiss nicht wie ichs ändern kann

Hier mal der Code
Code:
public function Safe():void
		{
			Eins.addEventListener(MouseEvent.CLICK, clicked);
			Zwei.addEventListener(MouseEvent.CLICK, clicked);
			Drei.addEventListener(MouseEvent.CLICK, clicked);
			Vier.addEventListener(MouseEvent.CLICK, clicked);
			Fuenf.addEventListener(MouseEvent.CLICK, clicked);
			Sechs.addEventListener(MouseEvent.CLICK, clicked);
			Sieben.addEventListener(MouseEvent.CLICK, clicked);
			Acht.addEventListener(MouseEvent.CLICK, clicked);
			Neun.addEventListener(MouseEvent.CLICK, clicked);	
			
			Text.width = 150;
			Text.height = 40;
			Text.x = 60;
			Text.y = 20;
			addChild(Text);
			format.align = TextFormatAlign.CENTER;
			Text.text = " ";
		}
	public function clicked ( event : MouseEvent ): void { 	
	switch(event.target)
	{
		case Eins:
			Text.text = "1";
			Text.setTextFormat(format);
			if(Text.text == "1")
			{
				Text.text = "Falsch";
			}
			break;
		case Zwei:
				Text.text = "Falsch";
				Text.setTextFormat( format );
			break;
		case Drei:
			if (Text.text == "1")
			{
				Text.text = "13";
				Text.setTextFormat( format );
			}
			else
			{
				Text.text = "Falsch";
				Text.setTextFormat( format );
			}
			break;
usw...

Kann mir jemand sagen wie ich beim 2ten Buttonklick ein falsch ausgeben kann?

Danke und Mfg, Carter
CarterC ist offline   Mit Zitat antworten
Alt 26-11-2011, 16:28   #2 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Und wenn du den Code ändern willst, schreibst du dann diese komplette switch case konstrukt noch mal?

nee

Du solltest deinen Code (welche Reichenfolge der Knöpfe zum Erfolg führt) variabel halten.

//Hier flux ein Schrank aus Berlin
PHP-Code:
package 
{
    
import flash.display.Sprite;
    
import flash.events.Event;
    
import flash.events.MouseEvent;
    
    
/**
     * Ein Kleiderschrank der Frima Franz Jäger, Berlin für einen gewissen dänischen Herren.
     * @author milchreis
     */
    
public class Main extends Sprite 
    
{
        private var 
code:Array;
        private var 
currentIndex:int 0;
        
        public function 
Main():void 
        
{
            if (
stageinit();
            else 
addEventListener(Event.ADDED_TO_STAGEinit);
        }
        
        private function 
init(e:Event null):void 
        
{
            
removeEventListener(Event.ADDED_TO_STAGEinit);
            
// entry point
            
            
code = [132456798];
            
            var 
s:Sprite;
            for (var 
i:int 09; ++i)
            {
                
= new Sprite();
                
s.graphics.beginFill(0);
                
s.graphics.drawRect(003030);
                
s.graphics.endFill();
                
                
s.name = (i+1).toString();
                
                
s.10;
                
s.10 40;
                
                
addChild(s);
                
                
s.addEventListener(MouseEvent.CLICKbuttonclicked);
            }
            
            
        }
        
        private function 
buttonclicked(e:MouseEvent):void 
        
{
            if (
code[currentIndex] == int(e.currentTarget.name))
            {
                
currentIndex++;
                
trace("richtiger button");
            }
            else
            {
                
currentIndex 0;
                
trace("falscher button, von vorne anfangen!");
            }
            
            if (
currentIndex == code.lengthtrace ("code komplett richtig");
        }
        
    }
    

Der code ist in meinem Beispiel aus Zahlen aufgebaut.
Jedem Knopf ist eindeutig eine Zahl zugeordnet und in dessem Namen abgelegt.
Das ist nicht sonderlich sauber. In deinem Fall könntest du dort direkt die vorhandenen Instanznamen eintragen und die Referenzen direkt vergleichen.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 26-11-2011, 21:19   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 8
Danke, könnte ich auch jeden button der geklickt wurde ausgeben?

Geändert von CarterC (26-11-2011 um 22:06 Uhr)
CarterC ist offline   Mit Zitat antworten
Alt 27-11-2011, 10:07   #4 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Zitat:
Zitat von CarterC Beitrag anzeigen
Danke, könnte ich auch jeden button der geklickt wurde ausgeben?
ja klar, das Prinzip ist das gleiche:
In der Event handler funktion wird über currentTarget auf den aktuell gedrückten button zugegriffen.

Die traces die ich ausgeben lassen seien nur exemplarisch und können natürlich durch das ersetzt werden, was eben passeiren soll, wenn ein richtiger, ein falscher Knopf oder der gesamte Code eingegeben wurden.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 27-11-2011, 12:47   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 8
ja aber ich mein das die gedrückten buttons nacheinander ausgegeben werden, also 132 usw
CarterC ist offline   Mit Zitat antworten
Alt 27-11-2011, 14:11   #6 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Zitat:
Zitat von CarterC Beitrag anzeigen
ja aber ich mein das die gedrückten buttons nacheinander ausgegeben werden, also 132 usw
Ich verstehe das "aber" nicht. Deine Aussage steht doch in keinem Widerspruch zu dem was ich gesagt habe

Wie gesagt: ersetze oder ergänze die Aufrufe vom jeweiligen trace mit dem, was du tun möchtest.

Möchtest du also die bisherigen korrekten Tastenbetätigungen (also den bisher richtig eingegebenen Teil des Codes) ausgeben, so wäre es am einfachsten du gibstden Code bis zur aktuellen Stelle aus.

Also bei richtigem Knopf, Code bis zur aktuell richtigen Stelle ausgeben, bei falschen Knopf, Textfeld zurücksetzen.

Sollte dir das nicht weiterhelfen, versuche noch mal genau zu beschreiben, wo genau das Problem liegt.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 27-11-2011, 15:25   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 8
Mein Problem ist leider offensichtlich das ich zu starke Programmierdefizite hab.
Meine Einschätzung ist das ich die korrekten Tastenkombinationen("e.currentTarget.name") in einen String? übergeben muss der dann abspeichert und bis zur aktuellen Stelle ausgibt? Ich weiss nur nicht wie ich abspeicher bzw den letzten und nicht den aktuellen anspreche.
Sowas wie lastTarget.
CarterC ist offline   Mit Zitat antworten
Alt 27-11-2011, 17:37   #8 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Zitat:
Zitat von CarterC Beitrag anzeigen
Meine Einschätzung ist das ich die korrekten Tastenkombinationen("e.currentTarget.name") in einen String? übergeben muss der dann abspeichert und bis zur aktuellen Stelle ausgibt?
Da hast du recht.
Du kannst dir natürlich alle richtig gedrückten Tasten abspeichern.
Wenn dann eine falsche Taste gedrückt wird, leerst du diesen Speicher.
So ein Speicher ließe sich durch eine String Variable realisieren.

ABER:

Das wäre nicht sonderlich clever.
Du hast ja den Code vorliegen! Also musst du dir die richtigen Tasten nicht merken, sondern kannst einfach aus einer aktuell gedrückten, richtigen Taste schlussfolgern, wie weit der Code schon richtig eingegeben wurde.

Ändere also die entsprechende Zeile so ab und führe das ganze aus, probiere herum.
PHP-Code:
trace("richtiger button, code bisher:" code.join("").substring(0currentIndex)); 
Die Zeile ist etwas kryptisch, zugegeben:
code -> wir nehmen das Array aus Zahlen, das den bekannten Code enthält
code.join("") -> alle Elemente werden zu einem String verbunden, das würde dem gesamten Code entsprechen, jetzt muss noch der Teil abgeschnitten werden, der noch nicht eingegeben wurde
code.join("").substring(0, currentIndex) -> das passiert hier. substring schneidet bei der aktuellen button nummer ab.

das Ergebnis ist ein String, du kannst diesen also der .text Eigenschaft des Textfeldes zuweisen.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 28-11-2011, 06:19   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 548
Wie soll das Spiel eigentlich ablaufen? Man probiert 1-9 für die erste Stelle durch bis er "richtig" sagt, dann dasselbe für die 2. Stelle usw.? So einen Safe hätt ich gern mal vor mir :-)
joeydee ist offline   Mit Zitat antworten
Alt 28-11-2011, 08:17   #10 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.040
Zitat:
Zitat von joeydee Beitrag anzeigen
So einen Safe hätt ich gern mal vor mir :-)
Wie gesagt, Franz Jäger
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 28-11-2011, 08:20   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 8
Bin ja auch nicht beim Sicherheitsdienst angestellt

Danke @ Milchreis auf den join substring kram wär ich im Leben nicht von selbst gekommen
CarterC 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
Safe knacken Tastenfeld CarterC ActionScript 3 1 09-11-2011 17:59
PHP Exec, Safe Mode & Flv2jpg.exe kasaa PHP und MySQL 4 19-01-2005 19:34
move_uploaded_file()....+safe mode pilzebub PHP und MySQL 5 13-11-2004 10:45
function thread-safe machen nickinicki Softwarearchitektur und Entwurfsmuster 18 13-06-2004 05:50
Object.prototype.copy (MX-safe) k7c4 Softwarearchitektur und Entwurfsmuster 12 26-02-2003 13:49


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

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


Copyright ©1999 – 2012 Marc Thiele