java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Spiele- und Multimedia-Programmierung

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 11.11.2006, 08:26   #1 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Standard Tetris

Hallo,

Ich bin gerade dabei ein Tetris zu programmieren.
Habe bis jetzt das Feld und ein Stein der runterfällt den ich auch bewegen kann.
Nun weiß ich aber nicht wie ich weitermachen soll.

Habt ihr vielleicht ein paar Tipps für mich?

Grüß Markus
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 11.11.2006, 08:37   #2 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 01.01.2005
Fachbeiträge: 131
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Naja, wenn der Stein unten ist, kommt halt der nächste Stein

cu
__________________
give it a try
niemand ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 11.11.2006, 09:31   #3 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
ja klar, aber ich hab erst einen einzelnen, ich brauch ja verschiedene Figuren und weiß nicht so genau wie ich das machen soll.

Mfg
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 11.11.2006, 09:42   #4 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.675
Abgegebene Danke: 0
Erhielt 2.570 Danke für 2.531 Beiträge
wenn das hier einer ist
Code:
--------------
|           |
|           |
|           |
|           |
-------------
dann sind zwei davon nebeneinander ein Zweier


Code:
---------------------------
|           |           |
|           |           |
|           |           |
|           |           |
--------------------------
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 11.11.2006, 11:06   #5 (permalink)
Stammbenutzer
Viertel Megabyte
 
Registriert seit: 10.05.2006
Fachbeiträge: 255
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hm ich weiss auch nicht wie man die Formen der Steine am besten repräsentiert. Eventuell durch ein boolean Array?


Code:
1000
1000
1000
1000

0000
1000
1000
1100

0000
0000
1100
1100

0000
0000
0100
1110
Das wären dann zum Beispiel einige typische Tetrissteine. Ist bestimmt ziemlich schnell und einfach.
LoN_Nemesis ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 11.11.2006, 12:25   #6 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Erstmal Danke für die Antworten!

Kann mir einer diesen Codeausschnitt erklären:
Darin wird ein "L" gespeichert:
Code:
       //L Rechts
        koordX[0][0] = 0; koordY[0][0] = 0;
        koordX[1][0] = 0; koordY[1][0] = 1;
        koordX[2][0] = 0; koordY[2][0] = 2;
        koordX[3][0] = 1; koordY[3][0] = 2;
        breite[0] = 2;
        hoehe[0] = 3;
        
        koordX[0][1] = 0; koordY[0][1] = 0;
        koordX[1][1] = 1; koordY[1][1] = 0;
        koordX[2][1] = 2; koordY[2][1] = 0;
        koordX[3][1] = 0; koordY[3][1] = 1;
        breite[1] = 3;
        hoehe[1] = 2;
        
        koordX[0][2] = 0; koordY[0][2] = 0;
        koordX[1][2] = 1; koordY[1][2] = 0;
        koordX[2][2] = 1; koordY[2][2] = 1;
        koordX[3][2] = 1; koordY[3][2] = 2;
        breite[2] = 2;
        hoehe[2] = 3;
        
        koordX[0][3] = 0; koordY[0][3] = 1;
        koordX[1][3] = 1; koordY[1][3] = 1;
        koordX[2][3] = 2; koordY[2][3] = 1;
        koordX[3][3] = 2; koordY[3][3] = 0;
        breite[3] = 3;
        hoehe[3] = 2;
Danke!
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 12.11.2006, 12:54   #7 (permalink)
Stammbenutzer
Viertel Megabyte
 
Registriert seit: 10.05.2006
Fachbeiträge: 255
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Das kann mit Sicherheit keiner, denn das einzige was man sieht ist ein 2-dimensionales Array, in das irgendwelche int Werte eingetragen werden. Was 0, 1, 2 oder 3 jeweils bedeutet, kann man ohne den Rest vom Code nicht sagen.
LoN_Nemesis ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 14.11.2006, 10:44   #8 (permalink)
Benutzer
double
 
Registriert seit: 07.11.2006
Fachbeiträge: 65
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hallo,

und ein "Klar kann man den Code verstehen!". Wer schonmal selbst Tetris programmiert hat, der weiß, was es für Schwierigkeiten gibt und wie man sie versucht zu überwinden.
Der Programmcode definiert dir in einem "breite x hoehe" Feld einen Stein - und zwar in allen vier Varianten, die durch Drehung des Steines entstehen können.
Stell dir einfach ein Koordinatensystem vor (wobei ich jetzt den Ursprung links oben gewählt habe - ist beliebig) und trage dort einfach mal an koordX und koordY ein X ein und du erkennst das "L". Hier mal die ersten beiden Beispiele:

- 0 1 2 3 - x
0 X
1 X
2 X X
3
|
y

- 0 1 2 3 - x
0 X X X
1 X
2
3
|
y


Anno dazumal hab ich auch ein Tetris programmiert, und ich habe die Steine ähnlich kodiert, wobei man sich bei mir ein 4x4 Feld vorstellen muss, das durchlaufend nummeriert ist:

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

Und dann hab ich einfach ein 3-dimensionales Array, wobei kurz ausgedrückt

BLOCK[steinart][drehung][bausteinnr]

den Zugriff steuert. Also über die erte Dimension bekommt man die verschiedenen Steine, über die zweite die verschiedenen Drehungen und über die dritte den Wert, an welcher Stelle "baustein"-Nr 1 bis 4 liegt (jeder Tetrisstein besteht ja aus 4-"Einzelbausteinen"). So sind dann alle Steine kodiert:

Code:
    public final static int[][][] BLOCK = {{   { 5, 6, 9,10},  //Quadrat
                                        { 5, 6, 9,10},
                                        { 5, 6, 9,10},
                                        { 5, 6, 9,10}},
                                    {   { 1, 5, 9,13},  //Stab
                                        { 8, 9,10,11},
                                        { 1, 5, 9,13},
                                        { 8, 9,10,11}},
                                    {   { 2, 6, 9,10}, //L
                                        { 5, 9,10,11},
                                        { 2, 3, 6,10},
                                        { 5, 6, 7,11}},
                                    {   { 1, 5, 9,10}, //umgekehrtes L
                                        { 5, 6, 7, 9},
                                        { 1, 2, 6,10},
                                        { 6, 8, 9,10}},
                                    {   { 1, 5, 6,10}, //umgekehrtes S
                                        { 5, 6, 8, 9},
                                        { 1, 5, 6,10},
                                        { 5, 6, 8, 9}},
                                    {   { 2, 5, 6, 9},//S
                                        { 4, 5, 9,10},
                                        { 2, 5, 6, 9},
                                        { 4, 5, 9,10}},
                                    {   { 1, 5, 9, 6},//...
                                        { 4, 5, 6, 9},
                                        { 1, 5, 9, 4},
                                        { 4, 5, 6, 1}}};
Vielleicht als Anregung, wie du selbst deine Steine kodieren kannst...

Viele Grüße
Zunera ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 15.11.2006, 15:42   #9 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
Danke, das hat mir sehr weitergeholfen!
Hab jetzt alle Steine implementiert.

Wie mach ich das jetzt am besten mit den Kolisionen? z.b. das er nicht an der Seite raus kann.

Gruß Markus
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 15.11.2006, 18:04   #10 (permalink)
Benutzer
double
 
Registriert seit: 07.11.2006
Fachbeiträge: 65
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Die Frage ist nicht leicht zu beantworten - ich weiß ja nicht, wie dein Tetrisprogramm aufgebaut ist. Bei mir stammten wie gesagt alle Steine-Objekte aus der Klasse "Block", dazu hatte ich eine Klasse "Player" (ich habe ein MultiplayerTetris programmiert, so dass es viele "Player" Objekte geben konnte). Jedes "Player"Objekt beinhaltete das Spielfeld des Spielers (ein einfaches int[][] (Array)), dessen Punkte, ... und unter anderem den aktuellen Stein. Jeder Stein kannte seine eigene Position. Nun habe ich nach jedem Zug mit folgender Funktion geprüft, ob der "aktuelle Stein" noch im Spielfeld ist und sich auch nicht auf einen anderen Stein drauf bewegt hat:

Code:
public boolean movePossible() {
        if(!mbLooser) {
            Point[] pt = getActBlockPos();
            for(int i = 0;i<4;i++) {
                if( pt[i].x>=TetrisGame.COLUMNS || pt[i].x<0 ||
                    pt[i].y>=TetrisGame.ROWS|| pt[i].y<0 ||
                    maaiField[pt[i].x][pt[i].y]!=EMPTY)
                        return false;
            }
        } else return false;
        return true;
    }
Also ich hab zuerst den Zug ausgeführt, dann geprüft ob er zulässig ist - wenn ja, fein; wenn nein, Zug zurück nehmen.

Grüße
Zunera ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tetris - Spielfeldgröße JavaKüken Java Basics - Anfänger-Themen 9 24.01.2009 17:01
Tetris - Problem JavaKüken Java Basics - Anfänger-Themen 2 22.01.2009 23:24
Cooles Tetris Video CyberKane Plauderecke 6 05.12.2008 08:44
J-Tetris ist fertig Chris_1980 Spiele- und Multimedia-Programmierung 7 24.02.2007 20:26
Tetris? El_Tomato Spiele- und Multimedia-Programmierung 8 15.01.2007 21:15


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de