![]() |
|
| #1 (permalink) | |
|
Nicht angemeldet
Fachbeiträge: n/a
|
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 |
| #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 |
|
|
| #4 (permalink) | |
|
Java-Forum Team
Moderator
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:
-------------- | | | | | | | | ------------- ![]() Code:
--------------------------- | | | | | | | | | | | | -------------------------- |
|
|
| #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 |
|
|
| #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;
|
| #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.
|
|
|
| #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}}};
Viele Grüße |
|
|
| #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;
}
Grüße |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| 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 |
|
|