Tetris-Stein wird nicht gezeichnet!

Status
Nicht offen für weitere Antworten.

JavaKüken

Mitglied
so leute der hut brennt :) am dienstag ist abgabe meines projektes und ich schaffe es einfach nicht dass mein stein von der preview ins spielfeld kommt...

ich programmiere das spiel tetris, hab schon öfters einige fragen hier gestellt und auch super schnelle und tolle antworten bekommen. dankeschön auf diesem wege :)


ich hab eine application gemacht, ein panel reingezogen und dann folgendes gemacht:

Code:
previewPanel = new PreviewPanel(preStone);


hier ein ausschnitt aus der klasse PreviewPanel:

Code:
public PreviewPanel(Stones preStone) {
		super();
		initialize(); 
}


Wenn ich die Applikation nun ausführen, erschein links unten das Kästchen mit der Preview in der auch der Stein randommäßig gezeichnet wird. Wenn ich nun auf den Startbutton drücke, müsste der Stein der in der Preview ist herunterfliegen.

Nur wie mach ich das? Ich hab schon alles mögliche probiert... Bitte um Hilfe. Bin echt schon verzweifelt.

Code:
private int[][] stoneArray = new int[20][20]; 


public Stones(int type){
		super();
		rotation = 0;

		
		sType = type;
		switch (sType) {
		case 1: // bar
			bar0(stoneArray);
			break;
		case 2: //square
			square(stoneArray);
			break;
		case 3: //triangle
			triangle0(stoneArray);
			break;
		case 4: //rightL
			rightL0(stoneArray);
			break;
		case 5: //leftL
			leftL0(stoneArray);
			break;
		}
	}

Falls ihr noch mehr Quellcode benötigt, bitte sagen.

Vielen Dank für die Hilfe.
 

0x7F800000

Top Contributor
Nur mit der Ruhe :)

Zuerst mal: was soll das hier sein?
Code:
public PreviewPanel(Stones preStone) {
      super();
      initialize();
}
Was wird denn mit preStone gemacht, in dem code scheint's keine verwendung zu finden, woher soll das panel denn wissen was es zeichnen soll?

Dann: was soll uns der zweite code-abschnitt sagen?

Und dann hätte ich noch eine Frage: was hat dieser Start-Button mit dem PreviewPanel zu tun? Sollte es nicht viel mehr so sein, dass das Spiel selbst, inklusive PreviewPanel von irgendeinem Thread gesteuert wird, der vom Start-button lediglich in gang gesetzt wird? Dann haben die beiden Probleme nämlich nichts mehr miteinander zu tun.
 

JavaKüken

Mitglied
hallo. ich hab eh eine klasse mit einem thread

die schaut wie folgt aus:
Code:
public class MainGameThread extends Thread {

	TetrisGameApplication game;
	private MainGameThread thread;
	private boolean pause = true;
	
	public MainGameThread(TetrisGameApplication game) {
		super();
		this.game = game;
	}
	
	//check if thread is stopped
	public boolean stopPressed() {
		return pause;
	}
	
	//reset and start the thread
	public void reset(){
		setPause(false);
		if(!isAlive()) {
			this.start();
			
		}
	}
	

	public void setPause(boolean pause) {
		this.pause = pause;
		
	}

	@Override
	public void run() {
		while(thread == this) {
			//game.handleTimer();
			
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			//sleep if pause is pressed
			while(pause&& thread ==this){
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			
		}

	}

}

und beim start-button schauts dann so aus:

Code:
startButton.addActionListener(new java.awt.event.ActionListener() {
				

				public void actionPerformed(java.awt.event.ActionEvent e) {
					startGame();
				}


und die methode startGame();

Code:
private void startGame() {
		score = 0;
		scoreLabel.setText("Score: " + score);
		if(thread == null) {
			thread = new MainGameThread(this);
			thread.start();}
		
		else { thread.setPause(false);
		}
	}


das müsst eigentlich so funktionieren... nur kann ich es noch nicht testen, da ich bis jetzt erst den stein in der preview habe. mit welcher methode soll ich den stein von der preview ins spielfeld fallen lassen? :(

Mit dem preStone wird der Type vom Stein festgelegt. Ob es jetzt ein Quadrat, das L oder die Stufe ist.
 

JavaKüken

Mitglied
hab jetzt mal einen code im internet gefunden... jedoch is mir einiges nicht klar... was passiert in diesen methoden?


Code:
private int xSquare(int square, int rot)
switch(rot) {
case 0: return shape[square].x;
case 1: return -shape[square].y;
case 2: return -shape[square].x;
default: return shape[square].y;


Code:
private boolean collision(int toX, int toY, int toRotation) {
for(int i=0; i<4; i++) {
int x = toX/size + xSquare(i, toRotation);
if y = toY/size + ySquare(i, toRotation);
if(!insideShape(x,y) && !board.positionFree(x,y)) {
return true; 

}
} return false;
}



Code:
private boolean insideShape(int x, int y) {
for(int i=0; i<shape.length; i++) {
if (x== shapeX/size + xSquare(i, rot) && y == shapeY/size + ySquare(i, rot)) {
return true; 
}
}
return false;
}


bitte um kurze erklärung!!!

size = die größe vom spielfeld!

danke!
 

Quaxli

Top Contributor
Laß mich raten: Du willst Tetris nachbauen - und zwar komplett in Swing, oder? ???:L

Was Dir momentan nicht hilft, wenn Dir an einer schnellen Lösung gelegen ist:
- hier nur Methoden bzw. deren Fragemente zu posten, mit denen keiner etwas anfangen kann oder bei denen man auf Mutmaßungen angewiesen ist.
- gleiches gilt für Codefragmente aus dem Internet, die gar nicht zu Deinem Code passen.

Poste doch mal den Teil, wo Dein Stein konkret gezeichnet wird.
Oder stell Dein Projket gelich mal unter eigene Dateien hier rein.
 

JavaKüken

Mitglied
ja genau in swing :)

so ich hab jetzt meinen bisherigen code gepostet... viel tut sich da aber noch nicht... :(

wie gesagt morgen ist abgabe und ich bin schon langsam am verzweifeln...

danke für die hilfe!!!
 
G

Gast

Gast
Hmmmm, falls ich das richtig verstehe, willst du, nachdem der aktuelle Stein gefallen ist, den Stein ins Spielfeld bringen, der gerade im PreviewPanel angezeigt wird.

erweitere Doch dein PreviewPanel um eine getPreSone();

Ich stell mir das mal simpel dann so vor:

if ( steinGefallen){

aktuekllerStein = panel.getPreStone();
lassSteinRunterPurzeln(aktuellerStein);
panel.setNeuerPreStone(neuerZufallsStein);

}


}
 

JavaKüken

Mitglied
der stein fällt ja noch gar nicht. wenn man die applikation startet, wird lediglich die preview im previewPanel angezeigt. drück ich auf start passiert nichts :(

hier meine startGame(); methode

Code:
private void startGame() {
		score = 0;
		scoreLabel.setText("Score: " + score);
		if(thread == null) {
			thread = new MainGameThread(this);
			thread.start();}
		
		else { thread.setPause(false);
		}
	}
 

cheezburgla

Neues Mitglied
Hm.. was soll denn da passieren?
In

Code:
public void run() { 
      while(thread == this) { 
         //game.handleTimer(); 
          
         try { 
            Thread.sleep(500); 
         } catch (InterruptedException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
         } 
          
         //sleep if pause is pressed 
         while(pause&& thread ==this){ 
            try { 
               Thread.sleep(1000); 
            } catch (InterruptedException e) { 
               // TODO Auto-generated catch block 
               e.printStackTrace(); 
            } 
         } 
          
          
      } 

   }

ist ja nur .sleep drin. Sonst nichts.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Rotation von Formen in Tetris Java Basics - Anfänger-Themen 4
J "Tetris" - Problem bei der Grafik Java Basics - Anfänger-Themen 5
H Tetris anfang Java Basics - Anfänger-Themen 6
L Tetris-Segment "malen" Java Basics - Anfänger-Themen 7
K Tetris Spielschleife Java Basics - Anfänger-Themen 3
J Tetris - Spielfeldgröße Java Basics - Anfänger-Themen 9
J Tetris - Problem Java Basics - Anfänger-Themen 2
D Schwierigkeiten bei Stein.Schere.Papier-Aufgabe Java Basics - Anfänger-Themen 9
S Schere, Stein, Papier Java Basics - Anfänger-Themen 13
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
J Schere, Stein, Papier Spiel - Logikfrage Java Basics - Anfänger-Themen 6
J Stein Schere Papier Java Basics - Anfänger-Themen 7
Antoras Schere-Stein-Papier Spiel Java Basics - Anfänger-Themen 18
V Stein, Schere, Papier Java Basics - Anfänger-Themen 3
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
F Session wird mehrfach erzeugt Java Basics - Anfänger-Themen 11
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
H GridPane wird nicht angezeigt Java Basics - Anfänger-Themen 0
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
kodela Hauptklasse wird nicht gefunden Java Basics - Anfänger-Themen 3
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
P Bedingung in Schleife wird nicht ausgeführt Java Basics - Anfänger-Themen 5
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
N package wird doppelt im exporer angezeigt Java Basics - Anfänger-Themen 2
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
H Wie wird ein String intern gespeichert? Java Basics - Anfänger-Themen 10
A char array wird überschrieben Java Basics - Anfänger-Themen 6
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
S setContentView(R.Layout.XXX) wird Rot angezeigt Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben