AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein - JAVA - Tetris - volle Reihen entfernen...
Thema durchsuchen
Ansicht
Themen-Optionen

- JAVA - Tetris - volle Reihen entfernen...

Ein Thema von flomei · begonnen am 16. Mär 2005 · letzter Beitrag vom 17. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

- JAVA - Tetris - volle Reihen entfernen...

  Alt 16. Mär 2005, 00:39
Hallo!
Freitag is Abgabe meiner Facharbeit und momentan hänge ich an einem wichtigen Punkt fest.
Und zwar hapert es Entfernen komplett gefüllter Reihen.
Ich weiss nicht wie ich das klären soll...
Habe in einer Liste alle gelegten Blöcke und kann diese nach ihrer X und Y Position fragen. In eine Reihe passen 10 Blöcke nebeneinander.
Wie kann ich nun am Besten überprüfen ob 10 Blöcke direkt nebeneinander in meiner Liste rumgammeln.
Habe mal mit Paint ne Skizze gemacht um das anschaulich zu machen...

Der Rest ist eigentlich kaum nen Problem.
Ich würde die Reihe entfernen und würde dann alle Blöcke die noch da sind versuchen "einen tiefer" rutschen zu lassen...

Also wie mach ich das jetzt am Besten?

MFG Florian

P.S.: Bitte ne Lösung mit Schleifen und meiner Liste. Hab genug Streß weil ich 1,5mal neu anfangen durfte...
Miniaturansicht angehängter Grafiken
untitled_801.jpg  
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

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

  Alt 16. Mär 2005, 12:35
Jedes mal wenn ein Block runterfählt, merkst du das in einem Feld (10*Hoche) (2d array). Danach überprüfst du ob eine ganze Reie voll "besetz" ist.
z.B. so ungefähr
Delphi-Quellcode:
const Hoche : integer = 20; // das kannst du ändern

var Field:array[0..9] of array[0..Hoche] of Boolean;

// ANNAHME -> Wenn Field[x,y]=TRUE dann ist das besetzt, sonst frei

function ReieVoll(reie:integer):Boolean;
 var i:integer;
begin
 result := True;
 for i:=0 to 9 do
   if Field[i,reie] then
    begin
     Result := False;
     Exit;
    end;
end;
....
 for a:=0 to Hoche-1 do
  if ReieVoll(a) then
   begin
      // heir machst du was du schon willst
   end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#3

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

  Alt 16. Mär 2005, 21:12
Einfachere Lösungsmöglichkeiten?
Würde gerne heute Abend bzw. Nacht die Arbeit vollenden, bzw. so gut wie vollenden...
Notfalls lass ich das Entfernen der Reihen halt raus. Ist zwar nicht toll aber ich schreib dann schon was Nettes in die Bewertung der Arbeit...

MFG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#4

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

  Alt 16. Mär 2005, 21:16
Ich würde es auch so machen, wie sniper_w vorgeschlagen hat.

Oder du nimmst ein weiteres Arrays, in welchem du für jede Reihe die Anzahl der besetzen Blöcke speicherst. Nach jedem Stein musst du halt ausrechnen wie viele Blöcke welcher Reihe hinzugefügt werden, danach kannst du das Array durchgehen und prüfen ob eine Reihe voll ist. Wenn ja, die Reihe löschen und alle Werte (in dem Array und in deinem Array mit den Blöcken) eins nach unten schieben, bzw. nach oben je nach dem, wie du es aufgebaut hast.

MfG Pr0g
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

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

  Alt 16. Mär 2005, 21:38
Zitat:
Einfachere Lösungsmöglichkeiten?

Und das war nicht einfach ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#6

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

  Alt 16. Mär 2005, 22:05
Das war schon einfach aber ob es für den Lehrer einfach genug ist...

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#7

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

  Alt 16. Mär 2005, 22:16
Ich denke mal Du willst das Array umgehen, da Du ja ne Liste hast, richtig?

Dann würde ich einfach ne Funktion schreiben die das so macht:

Delphi-Quellcode:
procedure getReihe
var reihe:array[1..Hoehe]of integer;
begin
   while Blockliste.next <> nil do // Wie das mit JAva geht weiß ich nciht... gemeint ist halt die Liste mit deinen Blöcken
    begin
      Blockliste:=Blockliste.next;
      inc(reihe[Blockliste.y]);
    end;
    // Diese while Schleife durchläuft deine ganzen Blöcke und erhöht jeweils den Eintrag der Liste in dem der Stein ist.
       Wenn jetzt am Ende ein Feld der reihe=10 ist so muss zwangsläufig die Reihe voll sein!
       Wie Du das prüfst und so schaffste schon alleine!

end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#8

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

  Alt 16. Mär 2005, 22:55
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.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#9

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

  Alt 16. Mär 2005, 23:06
Nen Array braucht man aber trotzdem, da ja pro Zeile Werte von 0 bis 10 gespeichert werden müssen.
Da denk ich ist meine Version besser geeignet oder hab ich Dich falsch verstanden?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#10

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

  Alt 16. Mär 2005, 23:17
Nun du brauchst pro Zeile eine Zahl, die aber sicher größer als 10 wird.

Wenn Du jede Reihe durchgehst und das entsprechende Bit setzt oder löscht, je nachdem ob da ein Stein ist oder nicht, kommst Du auf eine bestimmten Wert der Reihe. Wenn die Reihe voll ist, brauchst Du die Wertigkeit der Reihe nur mit 1023 vergleichen. Ist sie gleich, ist die Reihe voll, wenn nicht fehlt mindestens 1 Stein.

Dazu fängt man unten an und geht mit einer schleife nach oben. Nicht vergessen darf man aber, nach jedem erfolgreichen durchgehen die Steine runterrutschen lassen.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz