Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   - JAVA - Tetris - volle Reihen entfernen... (https://www.delphipraxis.net/42219-java-tetris-volle-reihen-entfernen.html)

atreju2oo0 16. Mär 2005 23:09

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Das Problem ist doch aber gerade, dass er nur eine Liste hat in der alle Blöcke noctiert sind.
Somit kann man nicht mit ner einfachen Schleife alles durchgehen, da nach nem Stein aus Reihe 2 wieder einer aus Reihe 1 kommen kann.
Somit ist meine Version wo einfach nur der Wert in der Zeile um eins erhöht wird doch besser...
Da braucht man sich um den Rest keinen Kopf zu machen.

Dass shl shr schon schöne Sachen sind will ich damit natürlich nicht aberkennen und sicherlich geht deine Version!
:)

Pr0g 16. Mär 2005 23:32

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Zitat:

Zitat von atreju2oo0
Da denk ich ist meine Version besser geeignet oder hab ich Dich falsch verstanden?

Zitat:

Zitat von atreju2oo0
Somit ist meine Version wo einfach nur der Wert in der Zeile um eins erhöht wird doch besser...

Deine Version? Vielleicht habe ich das schon drei Posts vor dir vorgeschlagen :zwinker:

flomei 16. Mär 2005 23:56

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Ich hab jetzt Folgendes hier:
Code:
   private void pruefeReihen()
   {
      int[] lReihen = { 225,245,265,285,305,325,345,365,385,405,425,445,465,485,505,525,545,565,585,605,625,645 };
      int    lCounter = 0 ,lIndex = 0;
      
      for(lIndex=0;lIndex==21;lIndex++)
      {
         hatBlockliste.zumAnfang();
         while(!hatBlockliste.istDahinter())
         {
            if(hatBlockliste.erbitteBlock().erbitteY() == lReihen[lIndex])
            {
               lCounter++;
            }
            hatBlockliste.vor();
         }
         if(lCounter == 9)
         {
            hatBlockliste.zumAnfang();
            while(!hatBlockliste.istDahinter())
            {
               if(hatBlockliste.erbitteBlock().erbitteY() == lReihen[lIndex])
               {
                  hatBlockliste.entferneAktuelles();
                  hatBlockliste.vor();
               }
            }
            hatBlockliste.zumAnfang();
            while(!hatBlockliste.istDahinter())
            {
               oBlock1 = hatBlockliste.erbitteBlock();
               oBlock2 = hatBlockliste.erbitteBlock();
               oBlock3 = hatBlockliste.erbitteBlock();
               
               if(this.kannAbwaerts())
               {
                  this.bewegeAbwaertsOhnePause();
               }
            }
         }
      }      
   }
Scheint aber irgendwie nicht ganz zu funktionieren. Sieht irgendwer von euch nen Fehler?

Werde das nachher auch nochmal meinem Lehrer zeigen, dann kann der sehen was er mir da aufgebrummt hat. Vielleicht kann ich dann später abgeben... *hoff*

MfG Florian :hi:

sniper_w 17. Mär 2005 13:00

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Zitat:

Statt dem Array könntest Du auch die ersten 10 Bit eines Integers verwenden. Damit würdest Dir das "Array" sparen und würdest noch Kenntnisse mit BitOperatoren nachweisen.
Ich wollte absichtlich diese Lösung nicht vorschlagen, da es IMHO zu Profesionell für eine Schularbeit ist. Bestimmt wäre dies die beste Lösung und schnellste auch.
Aber ARRAY könnte man trotzdem nicht sparen :wink: , denn für jede Reie braucht man ein Integer, d.h.
Delphi-Quellcode:
const Hoche = 20;
var Reien : array[0..Hoche]of Integer;

GuenterS 17. Mär 2005 14:26

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Zitat:

Zitat von sniper_w
Zitat:

Statt dem Array könntest Du auch die ersten 10 Bit eines Integers verwenden. Damit würdest Dir das "Array" sparen und würdest noch Kenntnisse mit BitOperatoren nachweisen.
Ich wollte absichtlich diese Lösung nicht vorschlagen, da es IMHO zu Profesionell für eine Schularbeit ist. Bestimmt wäre dies die beste Lösung und schnellste auch.
Aber ARRAY könnte man trotzdem nicht sparen :wink: , denn für jede Reie braucht man ein Integer, d.h.
Delphi-Quellcode:
const Hoche = 20;
var Reien : array[0..Hoche]of Integer;


Du brauchst eben kein array, Du hast ja eine Liste. Mag sein, dass es mit array performanter wäre, aber notwendig ist es nicht. Man muss ja auch beachten, dass manche Steine aufgrund von vorher entfernten nachrutschen, also müßtest dein Array auch immer wieder neu aufbauen.

Pr0g 17. Mär 2005 14:34

Re: - JAVA - Tetris - volle Reihen entfernen...
 
Zitat:

Zitat von GuenterS
Man muss ja auch beachten, dass manche Steine aufgrund von vorher entfernten nachrutschen, also müßtest dein Array auch immer wieder neu aufbauen.

Aber viel ist da eigentlich nicht zu machen, da beim Entfernen einer Reihe einfach nur die Werte der anderen Reihen um eins nach unten verschoben werden und die oberste Reihe wieder zu 0 wird. Es ist ja nicht so, dass die Steine in irgendwelche Lücken nachrutschen, die durch das Entfernen weiter unten frei werden könnten. Erst dann müsste man alles berechnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz