minicrispie: Die wollen nicht richtig fliegen ...

Hallo,

ich hab mal wieder ein problem :(
es geht um das Spiel.

ich weiß echt nicht mehr weiter: die supermänner sollten von links nach rechts und von rechts nach links fliegen. nur die supermänner, die von rechts nach links fliegen sollen fliegen komisch.

wenn ihr ein klein wenig wartet fliegt ganz oben irgendwann ein supermann von rechts nach links. bei diesem habe ich das setTimeout auf eine sekunde gestellt. somit könnt ihr sehn wie alle von diesen Rechts-nach-links-typen fliegen und ihr könnt sehn, was mein problem ist.

ich hoffe ihr könnt mir helfen und danke schon mal im vorraus ^^

MfG. Christoph

--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
Go to this
  1. bei mir fliegen sie nur von links nach rechts.

    310 Punkte, ist das gut?

    1. bei mir fliegen sie nur von links nach rechts.

      sind gar keine Supermänner, sondern allenfalls superboys...

      310 Punkte, ist das gut?

      beim zweiten Versuch 340 Punkte...

      1. 310 Punkte, ist das gut?

        beim zweiten Versuch 340 Punkte...

        350 beim dritten...

        1. 310 Punkte, ist das gut?

          beim zweiten Versuch 340 Punkte...

          350 beim dritten...

          450 beim fünften... wieviel ist denn maximal erreichbar?

          1. Hallo,

            450 beim fünften... wieviel ist denn maximal erreichbar?

            dir scheint das spaß zu machen :)
            es gibt eigentlich keine maximale grenze weil der "zufall"(wie wir wissen ist es ja kein richtiger zufall) die menge bestimmt.

            MfG. Christoph

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
          2. 310 Punkte, ist das gut?

            beim zweiten Versuch 340 Punkte...

            350 beim dritten...

            450 beim fünften... wieviel ist denn maximal erreichbar?

            560 beim sechsten

            1. 590 - Pause! ;-)

              1. Hallo,

                590 - Pause! ;-)

                Das geht trotzdem noch ni ... (die von rechts nach links)

                MfG. Christoph

                --
                Wo die Sprache aufhört, fängt die Musik an...
                Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
                Go to this
      2. Hallo,

        bei mir fliegen sie nur von links nach rechts.

        kann sein. meine schätzungen:
        die männer fliegen von left=500px nach left=50px und dann stufenweise bis -50px (so sieht es jedenfalls bei mir aus)

        nur ich weis leider nicht an was das liegt. ich würde sie gern genauso fliegen lassen wie die von-links-nach-rechts-supermänner. kannst du mir sagen an was das liegen könnte ?

        sind gar keine Supermänner, sondern allenfalls superboys...

        wiso denn das ?

        beim zweiten Versuch 340 Punkte...

        das ist doch gut :)

        MfG. Christoph

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
        Go to this
        1. sind gar keine Supermänner, sondern allenfalls superboys...

          wiso denn das ?

          sie sehen so jungenhaft aus.

          beim zweiten Versuch 340 Punkte...

          das ist doch gut :)

          längst überholt ;-)

          1. Hallo,

            wiso denn das ?

            sie sehen so jungenhaft aus.

            achso ... dann eben supermännchen-schiessen ^^

            MfG. Christoph

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
  2. Hallo,

    Hallo!

    Also Du hast etwas entscheidendes übersehen!!! Superman kann man nicht erschiessen! (Es sei denn Du hast ein Kryptonit-Laser-Gewehr erfunden oder so...)

    MfG. Christoph

    Me(benso)fG Tattergreis

    1. Also Du hast etwas entscheidendes übersehen!!! Superman kann man nicht erschiessen! (Es sei denn Du hast ein Kryptonit-Laser-Gewehr erfunden oder so...)

      so ein blödsinn, chuck norris kann sehrwohl superman erschießen

      1. Hallo,

        so ein blödsinn, chuck norris kann sehrwohl superman erschießen

        jap ... ^^
        könnt ihr mir auch helfen ?

        MfG. Christoph

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
        Go to this
        1. könnt ihr mir auch helfen ?

          ich für meinen teil nicht - mein javascript-wissen reicht nicht so weit

          1. Hallo,

            ich für meinen teil nicht - mein javascript-wissen reicht nicht so weit

            ...um den bösen zu helfen, damit er supermann in einem richtig funktionierendem spiel abschiessen kann ?

            MfG. Christoph

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
            1. ...um den bösen zu helfen, damit er supermann in einem richtig funktionierendem spiel abschiessen kann ?

              nein leider, mein wissen ist breit gefächert aber in vielen teilbereichen dadurch natürlich nicht so stark vertieft ;)

              bekämpfung von guten superhelden ist eines der themen, in denen ich eher weniger bewandert bin

              1. Hallo,

                und wie wärs mit einem JS, was ein Bild in regelmäßigen Abständen(10px) von 500px auf -50px runterbringt (style.left)?

                MfG. Christoph

                --
                Wo die Sprache aufhört, fängt die Musik an...
                Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
                Go to this
                1. und wie wärs mit einem JS, was ein Bild in regelmäßigen Abständen(10px) von 500px auf -50px runterbringt (style.left)?

                  wie gesagt, mein javascript-wissen ist begrenzt - und mit superhelden hab ich nichts zu tun - aber ich würds in etwa so machen (nicht getestet und nur kompatiblem mit superschurken)

                  function fly(interval, villain, pos) {  
                    document.getElementById('villain').style.left = pos + 'px';  
                    pos = pos + 10;  
                    if (pos > -50) {  
                      setTimeout('fly(' + interval + ', ' + villain + ', ' + pos + ')',interval);  
                    )  
                  }  
                    
                  fly('10', 'mrevil', '500');
                  

                  <img src="mrevil.png" id="mrevil" alt="Mr. Evil" />

                  1. Hallo,

                    wie gesagt, mein javascript-wissen ist begrenzt

                    ich vermute, das das daran liegt, dass Javascript Dich zu oft zwingt, Großbuchstaben zu nutzen ...

                    Freundliche Grüße

                    Vinzenz

                    1. ich vermute, das das daran liegt, dass Javascript Dich zu oft zwingt, Großbuchstaben zu nutzen ...

                      ja, das könnte daran liegen - ich finde scriptsprache, die case-sensitive sind und gewissen camel-case-schreibweisen erfordern nicht sonderlich benutzerfreundlich

                      in ASP/VB ist es egal ob man Response.Write oder resonse.write schreibt - in javascript ist es fatal, getelementbyid zu schreiben ;)

                      1. Hi,

                        ich finde scriptsprache, die case-sensitive sind und gewissen camel-case-schreibweisen erfordern nicht sonderlich benutzerfreundlich

                        ich finde CamelCase eigentlich ganz praktisch, es verbessert die Lesbarkeit zusammengesetzter Namen teils erheblich. Mir geht es nur mächtig gegen den Strich, wenn der Anfangsbuchstabe des gesamten Begriffs dann klein geschrieben wird. Das ist nicht konsequent.

                        in ASP/VB ist es egal ob man Response.Write oder resonse.write schreibt - in javascript ist es fatal, getelementbyid zu schreiben ;)

                        Deswegen sind die Funktionen der C-Standardbibliothek wohl auch alle konsequent klein geschrieben. ;-)

                        So long,
                         Martin

                        --
                        Zwei Mäuse treiben's miteinander. Sagt der Mäuserich: "Hoffentlich ist nicht wieder alles für die Katz."
                        1. ich finde CamelCase eigentlich ganz praktisch, es verbessert die Lesbarkeit zusammengesetzter Namen teils erheblich. Mir geht es nur mächtig gegen den Strich, wenn der Anfangsbuchstabe des gesamten Begriffs dann klein geschrieben wird. Das ist nicht konsequent.

                          ich finde das von der lesbarkeit auch besser - nur in systemen die case-senstive sind, muss man dann 5x überlegen wies jetzt geschrieben wurde

                          hat jemand das objekt oTollesObjekt oder otollesObjekt oder OToolesObjekt oder doch otoolesobjekt genannt?

                          ich bevorzuge die verbesserung der lesbarkeit zur unterstriche

                          meine_variable im vergleich zu meinevariable oder MeineVariable

                          1. Hallo,

                            ich finde CamelCase eigentlich ganz praktisch, es verbessert die Lesbarkeit zusammengesetzter Namen teils erheblich. Mir geht es nur mächtig gegen den Strich, wenn der Anfangsbuchstabe des gesamten Begriffs dann klein geschrieben wird. Das ist nicht konsequent.

                            ich finde das von der lesbarkeit auch besser - nur in systemen die case-senstive sind, muss man dann 5x überlegen wies jetzt geschrieben wurde

                            <wink size="zaunpfahl">
                                ich finde die Lesbarkeit Texten jeder Art bei Verwendung von Groß- und
                                Kleinschreibung auch viel besser.
                            </wink>

                            Freundliche Grüße

                            Vinzenz

                            1. <wink size="zaunpfahl">
                                  ich finde die Lesbarkeit Texten jeder Art bei Verwendung von Groß- und
                                  Kleinschreibung auch viel besser.
                              </wink>

                              Error Line 1, Column 11: there is no attribute "size".
                              Error Line 1, Column 22: element "wink" undefined.

                              du musst immer brav eine dtd mitliefern, das geht garnicht so :p

                          2. Hallo,

                            ich bevorzuge die verbesserung der lesbarkeit zur unterstriche

                            autsch, sieht doch scheußlich aus - die vermeide ich, wo immer möglich, zugunsten anderer Varianten.
                            In Programmiersprachen verwende ich stattdessen gern CamelCase, in manchen Modulen auch radikale Kleinschreibung ohne Trennfuge; in Dateinamen nutze ich Leerzeichen, wo es erlaubt ist; und in Ressourcennamen verwende ich einen Bindestrich oder einen Punkt als Trennstelle, wenn's unbedingt sein muss.

                            Ciao,
                             Martin

                            --
                            Ungeschehene Ereignisse können einen katastrophalen Mangel an Folgen nach sich ziehen.
                              (Unbekannter Politiker)
                  2. Hallo,

                    function fly(interval, villain, pos) {

                    document.getElementById('villain').style.left = pos + 'px';
                      pos = pos + 10;
                      if (pos > -50) {
                        setTimeout('fly(' + interval + ', ' + villain + ', ' + pos + ')',interval);
                      )
                    }

                    fly('10', 'mrevil', '500');

                      
                    Es müsste document.getElementById(villain) heißen, ohne die Anführungsstriche. Schließlich soll die Variable verwendet werden.  
                      
                    Und Zahlen übergibt man als Zahlen, nicht als Strings, also ebenfalls ohne Anführungsstriche: fly(10, 'mrevil', 500)  
                      
                    Außerdem soll hier wohl heruntergezählt werden, nicht 10 addiert werden.  
                      
                    Wobei es natürlich unnötig ist, immer wieder getElementById auszuführen. Das verlangsamt die Animation unter Umständen. Aber wenn man solche Überlegungen anstellt, ist es natürlich auch ein Performance-Killer und schlechter Stil, setTimeout einen zusammengebastelten String zu übergeben. Aber dann kommt man schon zu der von mir angesprochenen objektorientierten Lösung, die wäre dann übersichtlicher und ausbaufähiger.  
                      
                    Mathias
                    
                    -- 
                    [SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)
                    
      2. so ein blödsinn, chuck norris kann sehrwohl superman erschießen

        Naja, da hast wohl recht, aber ich glaub kaum, dass Cuck Norris minicrispies Spiel spielt :D

        btw http://www.youtube.com/watch?v=Ac_I28s6Yss

        Und ob ich helfen kann? Nö! Kenn mich weder in JavaScript aus und beherrsche auch kein roundhouse-kick. I'm sorry!

        Grütze
        tattergreis

  3. Hallo Christoph,

    ich hab mal wieder ein problem :(
    es geht um das Spiel.

    ich weiß echt nicht mehr weiter: die supermänner sollten von links nach rechts und von rechts nach links fliegen. nur die supermänner, die von rechts nach links fliegen sollen fliegen komisch.

    ja klar. Du sagst denen ja auch, dass sie an der Position 0 nach links losfliegen sollen. Es wäre keine schlechte Idee, wenn die Supermännchen bei 500 losfliegen würden.

    function Rechtsreinfliegen()  
      {  
        var S        = Math.floor(Math.random() * (5    - 1 + 1))   + 1;  
        var Tempo    = Math.floor(Math.random() * (100  - 50 + 1))  + 50;  
        var Abstand  = Math.floor(Math.random() * (1000 - 500 + 1)) + 500;  
      
        if(document.getElementById("Text_S"+S).value=="0")  
          {  
            // Da baust Du den Fehler ein:  
            // Eine solcher hardcodierter Wert ist übrigens schlecht zu finden  
            var Funktion = "RechtsReinS" + S + "("+Tempo+", '0')";  
            // Was bewirkt der zweite Parameter von RechtsRein?  
            /*--------------------------------------------------*/  
            document.getElementById("Text_S"+S).value="1";  
      
            // Hättest Du den Startwert über eine Konfigurationsvariable  
            // geregelt, wäre Dir dieser nicht unterlaufen, hier benötigst Du  
            // die 500 ja wieder. Du machst Dir Änderungen schwer - und  
            // nirgendwo sind die Maße dokumentiert.  
            document.images["S"+S].style.left="500px";  
            document.images["S"+S].style.visibility="visible";  
            setTimeout(Funktion, 1);  
          }  
      
        var Zeit=parseFloat(document.getElementById('zeit').value);  
        if(Zeit>3) {setTimeout("Rechtsreinfliegen()", Abstand);}  
      }  
      
    function RechtsReinS2(Tempo, B)  
      {  
        if(document.getElementById('Text_S2').value=="1")  
          {  
            // wo soll er also losfliegen? Richtig: bei 0  
            // Wo sollte er losfliegen? Richtig: bei 500  
            B = parseFloat(B);  
            B = (B - 10);  
            document.images["S2"].style.left=B + 'px';  
            if(B>-50) {setTimeout("RechtsReinS2("+Tempo+", "+B+")", Tempo);}  
            else {document.images["S2"].style.visibility="hidden"; document.images["S2"].style.left='-40px';document.getElementById('Text_S2').value="0";}  
          }  
      }  
      
      
    
    

    Ach ja:
    Viele Deiner Funktionen sind überflüssig. Eine für die Startwerte und eine für die Bewegung wären völlig ausreichend.

    Ganz wichtiger Hinweis:
    Kommentiere Deinen Code. Schreib' beispielsweise zuerst als Kommentar, was Du tun willst, dann schreib' Deinen Code.

    Noch eine Anmerkung:
    Irgendwo hier in der Forumshauptdatei kannst Du nachlesen, wie man das Stringzusammenbauen für setTimeout() vermeiden kann. Ich glaube, es ist in Felix' Thread zu seinem Fader-Framework.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      Hey danke!!!! Jetzt funktioniert das ganze ^^
      das mit den Kommentaren und der Anzahl der Funktionen werd ich noch überdenken

      MfG. Christoph

      --
      Wo die Sprache aufhört, fängt die Musik an...
      Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
      Go to this
    2. ja klar. Du sagst denen ja auch, dass sie an der Position 0 nach links losfliegen sollen. Es wäre keine schlechte Idee, wenn die Supermännchen bei 500 losfliegen würden.

      In dem Chaos den Fehler zu finden, Respekt!

      Struppi.

  4. Hallo,

    Wieso speicherst du Werte, die du nur im JavaScript brauchst, in versteckten Eingabefeldern? Schon einmal was von globalen Variablen gehört? Am besten nutzt du ein globales Objekt, an dem du all deine Daten speicherst. Und zwar nicht wie deine siebenunddreißig Funktionen, die alle denselben Aufbau haben, sondern in geeigneten Datenstrukturen wie u.a. Arrays.

    var richtungen = new Object();  
    richtungen.links = true;  
    richtungen.rechts = false;  
      
    var status = new Object();  
    status.fliegend = true;  
    status.unsichtbar = false;  
      
    var spieldaten = new Object();  
      
    spieldaten.supermen = new Array();  
      
    var neuerSuperman = new Object();  
    neuerSuperman.status = status.fliegend;  
    neuerSuperman.richtung = richtungen.links;  
    neuerSuperman.position = 150;  
    neuerSuperman.geschwindigkeit = 20;  
    neuerSuperman.zugehörigesBild = document.images.S1;  
      
    spieldaten.supermen.push(neuerSuperman);  
    // Superman-Objekt steht jetzt unter spieldaten.supermen[0]
    

    Ein Superman-Objekt kann man über die Nummer im Array ansprechen und dann die Objekteigenschaften auslesen/abfragen und ändern, z.B. wenn der Superman gestartet wird oder zwischendrin im Flug.

    Die Superman-Objekte kann man am Anfang in einer Schleife erstellen.

    Noch besser wäre es, das ganze objektorientiert lösen, also mit einem Konstruktor, der Superman-Objekte erzeugt. Ein Superman könnte dann Methoden haben, die ihn fliegen lassen.

    Mathias