Problem bei Tetris Clone 3D
Übersicht

BB-FanBetreff: Problem bei Tetris Clone 3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt auch mehrdimensionale Arrays
Dim Klotz(weit,breit,hoch) |
||
solitaire |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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é |
![]() Antworten mit Zitat ![]() |
---|---|---|
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é |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder du machst deinen Hintergrund schwarz und die Steine nicht und machst dann ne FarbPixelAbfrage. | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nein, nur das nicht ![]() Manage dein Spielfeld in einem Array, das ist wirklich das einfachste und beste! grüße |
||
http://bl4ckd0g.funpic.de |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay, ich werde eure Ratschläge beherzigen, und probieren was am besten passt.
Big thx |
||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probier erst'ne 2d tetris zu machen... | ||
Norweger...
Spreche aber verdammt gut 8086 |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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? ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Dann nimmst du halt einfach ein 3 Dimensionalen Array... Kommt dann fast aufs gleiche raus. grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
quote david... ![]() |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das ja sowieso, ich meine yetzt nur für die Reihen, die verschwinden sollen. | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alles 3D.
Die Steine dreidimensional, sowie auch das Spielfeld, welches sich auf einer drehfähigen Kugel befindet. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group