Problem bei Tetris Clone 3D

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

BB-Fan

Betreff: Problem bei Tetris Clone 3D

BeitragMi, Nov 03, 2004 4:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin grad dabei einen Tertis Clone zu coden, und habe dabei ein kleines Problem.

Wie mache ich eine Abfrage, wenn ich eine Linie voll habe, die dann verschwinden soll?


Und wie würde sich dies verhalten, wenn ich meinen 3D Tetris Clone nicht als flache Map mache, sondern das Ganze Spielfeld eine Kugel ist?

soli

BeitragMi, Nov 03, 2004 7:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt auch mehrdimensionale Arrays
Dim Klotz(weit,breit,hoch)
solitaire
 

David

BeitragMi, Nov 03, 2004 8:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Eine Kugel? Wie muss man sich das Vorstellen??? :-/

Abfragen ob eine oder mehrere Reihen voll sind kannst du, indem du das Spielfeld in einem Array verwaltest und prüfst welche Felder belegt sind.

grüße
http://bl4ckd0g.funpic.de
 

BB-Fan

BeitragMi, Nov 03, 2004 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Stell dir einfach eine Fläche vor, auf der man tetris spielen kann.

Und nun nimm diese Fläche, und "texturiere" damit eine Kugel.

Markus Rossé

BeitragMi, Nov 03, 2004 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, Tetris.. wie speicherst du, ob ein Klotz wo liegt?

Ich benutze ein Map(x,y) Array. Hier meine Function aus quatros ( https://www.blitzforum.de/viewtopic.php?t=6838 )
Code: [AUSKLAPPEN]

         For y=0 To MapHeight-1
            filled=True
            For x=0 To MapWidth-1
               If Map(x,y)=0 Then filled=False
            Next
            If filled=True Then
               For yline=y To 1 Step -1
                  For xline=0 To MapWidth-1
                     Map(xline,yline)=Map(xline,yline-1)
                  Next
               Next
               lineCount=lineCount+1
               PlayerLines=PlayerLines+1
            End If
         Next


vielleicht hilft es dir was

cu, Markus Rossé

Kabelbinder

Sieger des WM-Contest 2006

BeitragMi, Nov 03, 2004 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du machst deinen Hintergrund schwarz und die Steine nicht und machst dann ne FarbPixelAbfrage.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>
 

David

BeitragDo, Nov 04, 2004 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Nein, nur das nicht Neutral
Manage dein Spielfeld in einem Array, das ist wirklich das einfachste und beste!

grüße
http://bl4ckd0g.funpic.de
 

BB-Fan

BeitragDo, Nov 04, 2004 1:38
Antworten mit Zitat
Benutzer-Profile anzeigen
okay, ich werde eure Ratschläge beherzigen, und probieren was am besten passt.

Big thx

eXceptION

BeitragDo, Nov 04, 2004 1:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier erst'ne 2d tetris zu machen...
Norweger...

Spreche aber verdammt gut 8086
 

David

BeitragDo, Nov 04, 2004 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Meinst du die Grafik oder das Spielfeld?
Denn ein 2D Spielfeld mit 3D Grafik ist nicht wirklich komplizierter wie alles in 2D Grafik zu programmieren...

grüße
http://bl4ckd0g.funpic.de

eXceptION

BeitragDo, Nov 04, 2004 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ach so...

ich dachte du wolltest 'ne voll 3d tetris machen, mit eine drei dimensionale array etc...



na gut... wie fragst du also nach ob eine linie voll ist? Smile

erst mal, jede stein besteht aus 4 sub-steine... mach ein array die so aussieht:Code: [AUSKLAPPEN]
Dim Block(6, 3, 3, 1) ;Block(block_type%, substein_idx%, rotation%, coordinate%)


7 verschiedene typen:Code: [AUSKLAPPEN]
XX  X   XX XX  X     X
XX XXX XX   XX XXX XXX XXXX


4 rotationen:Code: [AUSKLAPPEN]
 X   X      X
XXX XX XXX  XX
     X  X   X


4 sub-steine:Code: [AUSKLAPPEN]
X X X X


2 coordinaten:Code: [AUSKLAPPEN]
x% und y%


----

spielareal:
Code: [AUSKLAPPEN]
Dim SpielAreal$(24) ;12 breit MIT wand, original tetris war auch nur 20 hoch. wir brauchen aber ein bisschen wand über den bildschirm

SpielAreal$(0) = "X          X"
SpielAreal$(1) = "X          X"
SpielAreal$(2) = "X          X"
SpielAreal$(3) = "X          X"
SpielAreal$(4) = "X          X"
SpielAreal$(5) = "X          X"
SpielAreal$(6) = "X          X"
SpielAreal$(7) = "X          X"
SpielAreal$(8) = "X          X"
SpielAreal$(9) = "X          X"
SpielAreal$(10) = "X          X"
SpielAreal$(11) = "X          X"
SpielAreal$(12) = "X          X"
SpielAreal$(13) = "X          X"
SpielAreal$(14) = "X          X"
SpielAreal$(15) = "X          X"
SpielAreal$(16) = "X          X"
SpielAreal$(17) = "X          X"
SpielAreal$(18) = "X          X"
SpielAreal$(19) = "X          X"
SpielAreal$(20) = "X          X"
SpielAreal$(21) = "X          X"
SpielAreal$(22) = "X          X"
SpielAreal$(23) = "X          X"
SpielAreal$(24) = "XXXXXXXXXXXX"


jedes mal ein stein triffst was in SpielAreal$, machst du folgende sachen:

1. Gib punkte
2. Speichere jeweiligen block in SpielAreal$ als "X"Code: [AUSKLAPPEN]
SpielAreal$(21) = "X          X"
SpielAreal$(22) = "X  X       X"
SpielAreal$(23) = "X XXX      X"
SpielAreal$(24) = "XXXXXXXXXXXX"

3. Teste jede linie von 1 bis 23 (NICHT 24) ob es voll ist:Code: [AUSKLAPPEN]
For idx% = 1 To 23
  If (SpielAreal$(idx%) = "XXXXXXXXXXXX") Then
    ;Schieb jede linie von 1 bis (idx% - 1), ein nach unten... Beides in SpielAreal$ und die tatsächlichen 3d blöcke
    ;Zähl anzahl linien die verschwinden, gib punkte dazu...
  End If

4. Setzte neue block als gleich vorschau, setzte am oben rand.
5. Generier neues vorschau.
Norweger...

Spreche aber verdammt gut 8086
 

BB-Fan

BeitragFr, Nov 05, 2004 1:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke vielmals.

Wollte es schon voll 3D machen, aber da hab ich es wohl falsch geschrieben.

Auch auf einer Kugel ergeben die Steine ja eine Linie, nur im dreidimensionalen Raum.

Wie ich das in 2D mache, hab ich schon verstanden, was aber muss ich bei 3D machen?

Ist echt nett, dass du mir hilfst.
 

David

BeitragFr, Nov 05, 2004 8:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Dann nimmst du halt einfach ein 3 Dimensionalen Array...
Kommt dann fast aufs gleiche raus.

grüße
http://bl4ckd0g.funpic.de

eXceptION

BeitragFr, Nov 05, 2004 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
quote david... Smile
Norweger...

Spreche aber verdammt gut 8086

Kabelbinder

Sieger des WM-Contest 2006

BeitragFr, Nov 05, 2004 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das ja sowieso, ich meine yetzt nur für die Reihen, die verschwinden sollen.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>
 

David

BeitragFr, Nov 05, 2004 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich bin mir nich sicher, was du genau meinst.
Willst du ein 2 Dimensionales Spielfeld mit 3 Dimensionaler Grafik, oder soll das Spielfeld 3 Dimensional sein und die Grafik ebenfalls?!?

grüße
http://bl4ckd0g.funpic.de
 

BB-Fan

BeitragFr, Nov 05, 2004 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles 3D.

Die Steine dreidimensional, sowie auch das Spielfeld, welches sich auf einer drehfähigen Kugel befindet.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group