Ergebnis 1 bis 7 von 7
Like Tree2Likes
  • 1 Post By NipponDaniel
  • 1 Post By NipponDaniel

Thema: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

  1. #1
    NipponDaniel ist offline Grünschnabel
    registriert
    10-08-2020
    Beiträge
    5

    Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Hallo erstmal,

    bin neu im Forum.

    ich programmiere grade ein Browsergame, zum Spass und zur Übung. Man bekommt Punkte beim klicken auf Objekte, bzw. sollte ein Treffer als "hit-", und ein Klick daneben, als "missed" gewertet werden.
    Nur leider wird, je nach dem aus welchem Scope ich abgreife, entweder nur das letzte Objekt im Loop, oder alle gewertet. Damit die Statistik stimmt, und auch Partikeleffekte usw. gehen, sollte nur einmal hit oder missed gewertet werden. Es ist eigentlich simpel, aber ich steh hier schon zu lange auf dem Schlauch. Ich denke grade an ein temporäres Array, welches bei jedem Klick mit Bools gefüllt wird, und ein tempArray.indexOf(true). Aber gibts noch eine elegantere Lösung? Bzw. hat jemand Tipps für die Implementierung?

    Ich benutze p5.js.

    Code:
       
    
    let tom = [Tomate, ...];
    let mx = mouseX;
    let my = mouseY;
    let mOver = false;
    let hit = 0;
    let missed = 0;
    /*
    ...
    */
    function mouseClicked(){
      hitBox();
    }
    
    function hitBox(){
    
     for (let i = 0; i < tom.length; i++) {
    
       if (mx > tom[i].pos.x - hb &&
            mx < tom[i].pos.x + hb &&
            my > tom[i].pos.y - hb &&
            my < tom[i].pos.y + hb) {
            
            mOver = true;
            hit += 1;
    
          } else {
    
            mOver = false;
            missed += 1;
          }
      }
    }
    vielen Dank für deine Zeit. lg
    Geändert von mikdoe (16-08-2020 um 09:13 Uhr) Grund: Gelöst gesetzt

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.779

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Hi und willkommen!
    Kannst du ein Fiddle machen, das den unerwünschten Effekt zeigt?
    Vielleicht ein Reihenfolgeproblem, Thema Callback, Asynchronität usw.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  3. #3
    NipponDaniel ist offline Grünschnabel
    registriert
    10-08-2020
    Beiträge
    5

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Hier ist das Fiddle:

    https://jsfiddle.net/Nippels/5qtpunj7/27/

    Das Game ist eigentlich ein Zombie und kein Tomaten shooter^^
    Für Killertomaten habe ich die rechte nicht lol.
    Das Game selbst kann ich auch im p5 Editor posten, aber unzensiert.

    Spass bei Seite. Danke schon mal für die Hilfe.

    lg

    - - - Aktualisiert - - -

    Ich habe einen Tipp bekommen und jetzt gehts:

    https://jsfiddle.net/Nippels/5qtpunj7/39/

    ich lasse aber den thread noch offen, bis ich es integriert habe.
    Ob das so mit dem game harmoniert, weiss ich noch nicht.

    .
    Geändert von mikdoe (12-08-2020 um 09:12 Uhr) Grund: LINK

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.779

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Was muss man denn bei dem Game machen? Zählt bei mir nur die hits hoch.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  5. #5
    NipponDaniel ist offline Grünschnabel
    registriert
    10-08-2020
    Beiträge
    5

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Nein, das ist nur ein Fiddle, dass das Problem eingrenzt. Das Game ist immo schon sehr viel umfangreicher. Grafisch ist es aber simpel. Sind alles Strichmännchen. Die Motions sind größtenteils stopmotion. keine Physics. Nur ein paar Partikeleffekte, wenn man schießt. Man spawnt in einem noch recht schlichten Büroflur und bewegt sich auf x und y. Aus Türen und gewissen Spawnpunkten kommen die Zombies, die dem Spieler hinterher laufen und ihn killen wollen.
    Man klickt auf die Zombies zum schießen. Denen, werden entsprechend der Waffe und der Stelle wo man sie trifft eine bestimmte Menge HP abgezogen. Neutralisierte Zombies werden aus dem Array entfernt, oder kommen auf idle. Weil es in Javascript so leicht geht, werden sie im Moment einfach aus dem Array gespliced (ich mache mir daher Gedanken, zwecks Portierbarkeit zu Java etc.). Nachdem man eine bestimmte Anzahl an Zombies erledigt hat kommt die nächste Welle mit noch mehr Zombies. usw. Es ist fast wie beim Call of Duty BlackOps Zombie Mode, nur in einer art 2D Top Down Retro Format. Wenn es so weit ist wird noch ein System mit Credits gemacht, mit denen man sich Percs, bessere Waffen usw. kaufen kann. Bin aber noch nicht ganz so weit.



    Es gibt schon eine spielbare Version die ich hosten kann. Bei PN schick ich vielleicht mal den link, wenn jemand als Tester oder Coder contributen will. Weil es aber ein bisschen blutig ist, ich recht viel Arbeit reingesteckt habe, es nur eine Übung ist und noch keine Rechte für Soundeffekte habe, und weil es meiner Meinung nach noch nicht so weit ist, will ichs nicht öffentlich posten, bzw. nicht viel offenlegen. Aber mehr Screenshots kann ich ggf. machen.

    Im Grunde dachte ich, dass es für mich keine schwierige Sache mehr ist, ein funktionierendes Zählsystem zu entwerfen, oder dass sich die Klassen-, oder Prototypen - Atribute dynamisch ändern. All diese Spiellogiken sollten möglichst funktional aus einem Modul herraus berechnet werden. Nur im Moment brauch ich noch etwas mehr Zeit um Spagetticode vorzubeugen. Es ist immerhin alles von scratch, ohne gaming library oder game maker etc. Wie ich oben schon schrieb ist das Game auch als Übung gedacht, nichts ernstes also. Die Frage aus der Überschrift ist mit dem letzten Post eigendlich gelößt, ich warte nur noch auf Reaktionen. Ich bin grade noch dabei den code aufzuräumen, dann werde ich den Thread hier schließen und den Code bei Interesse in einem neuem posten.
    mikdoe likes this.

  6. #6
    NipponDaniel ist offline Grünschnabel
    registriert
    10-08-2020
    Beiträge
    5

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Hallo again!

    Ich werde den Thread jetzt schließen. Die Lösung war ein leeres Returnstatement am Ende des Loops einzusetzen (siehe Fiddle oben). Nach dem return wird der Loop unterbrochen und keine darunterliegende Zeile Code mehr ausgeführt. Ich musste die betroffenen Loops daher in seperate Funktionen auslagern. Die Basis des Games steht so weit. Jetzt bau ich noch ein paar Rewards ein und, dass man nach 3 Leben Game Over ist, dann werd ich mal ne Demo posten. Danke fürs lesen lg

    [edit] kann es sein, dass ich den Thread gar nicht selber schließen kann? Oder hab ich zu wenig geschlafen? lol
    Geändert von NipponDaniel (15-08-2020 um 10:56 Uhr)
    mikdoe likes this.

  7. #7
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.779

    AW: Wie kann ich ein einziges Ergebnis aus for loop erhalten?

    Zitat Zitat von NipponDaniel Beitrag anzeigen
    [edit] kann es sein, dass ich den Thread gar nicht selber schließen kann?
    Ja.

    Freue mich auf das Game!
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

Ähnliche Themen

  1. erhalten von Thumbnails
    Von Razora im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 24-05-2011, 11:17
  2. Antworten: 2
    Letzter Beitrag: 21-02-2009, 19:49
  3. Werte erhalten in <textarea>
    Von Mannix im Forum Serverseitige Programmierung
    Antworten: 30
    Letzter Beitrag: 30-07-2006, 16:40
  4. Antworten: 2
    Letzter Beitrag: 16-09-2000, 18:43

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •