Problema no render da imagem

6 respostas
java
D

galera to com erro aqui no joguinho aparece a janela mas ta dando erro no render alguem me ajuda. se for posta a classe vai ficar muito grande aqui talvez seja melhor compartilhar o projeto.

package dungeoncrawler.framework.gamestates;

import java.awt.Graphics;
import java.util.Stack;

public class GameStateManager {

	private Stack<GameState>states;
	
	public GameStateManager() {
		this.states = new Stack<>();
		
	}
	
	public void addState(GameState state) {
		this.states.add(state);
	}
	
	public void backToPreviousState(GameState state) {
		this.states.pop();
	}
	
	public void clearStack() {
		this.states.clear();
	}
	
	public void init() {
		this.states.peek().init();
	}
	
	public void loop() {
		this.states.peek().loop();
	}
	
	public void render(Graphics graphics) {
		this.states.peek().render(graphics);
	}
	
	public void KeyPressed(int keyCode) {
		this.states.peek().KeyPressed(keyCode);
	}
	public void KeyRealssed(int keyCode) {
		this.states.peek().KeyRealssed(keyCode);
	}		
}
package dungeoncrawler.framework.gamestates;

import java.awt.Graphics;

public abstract class GameState {
	
	protected GameStateManager gameStateManager;
	
	protected GameState(GameStateManager manager) {
		this.gameStateManager = manager;
		this.init();
	}
	
	protected abstract void init();
	protected abstract void loop();
	protected abstract void render(Graphics graphics);
	protected abstract void KeyPressed(int keyCode);
	protected abstract void KeyRealssed(int keyCode);
}
///// erro q ta dando e essse…

xception in thread AWT-EventQueue-0 java.util.EmptyStackException

at java.base/java.util.Stack.peek(Stack.java:101)

at dungeoncrawler.framework.gamestates.GameStateManager.render(GameStateManager.java:36)

at dungeoncrawler.framework.Engine$GameScreen.paintComponent(Engine.java:52)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)

at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5262)

at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)

at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)

at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)

at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1060)

at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)

at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:75)

at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:112)

at java.desktop/java.awt.Container.paint(Container.java:2002)

at java.desktop/java.awt.Window.paint(Window.java:3933)

at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:876)

at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)

at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)

at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)

at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)

at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)

at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)

at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Exception in thread AWT-EventQueue-0 java.util.EmptyStackException

at java.base/java.util.Stack.peek(Stack.java:101)

at dungeoncrawler.framework.gamestates.GameStateManager.loop(GameStateManager.java:32)

at dungeoncrawler.framework.Engine$MainGameLooping.actionPerformed(Engine.java:41)

at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:310)

at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:242)

at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)

at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)

at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

6 Respostas

S

É que a sua pilha states está vazia, não dá pra pegar o elemento do topo se ela está vazia.

D

to aprendendo no auto de data isso ate estava estudando pilhas mas nesse meu caso eu devo completar como para sena aparecer?

S

Você tem que inserir pelo menos um GameState na pilha.

D
aa sim eu tinha feito isso mas tb deu erro Exception in thread AWT-EventQueue-0 java.util.EmptyStackException

at java.base/java.util.Stack.peek(Stack.java:101)

at dungeoncrawler.framework.gamestates.GameStateManager.render(GameStateManager.java:36)

at dungeoncrawler.framework.Engine$GameScreen.paintComponent(Engine.java:52)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)

at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)

at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)

at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5262)

at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)

at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)

at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)

at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)

at java.desktop/javax.swing.JComponent.paint(JComponent.java:1060)

at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)

at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:75)

at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:112)

at java.desktop/java.awt.Container.paint(Container.java:2002)

at java.desktop/java.awt.Window.paint(Window.java:3933)

at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:876)

at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)

at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)

at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)

at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)

at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)

at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)

at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Exception in thread AWT-EventQueue-0 java.util.EmptyStackException

at java.base/java.util.Stack.peek(Stack.java:101)

at dungeoncrawler.framework.gamestates.GameStateManager.loop(GameStateManager.java:32)

at dungeoncrawler.framework.Engine$MainGameLooping.actionPerformed(Engine.java:41)

at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:310)

at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:242)

at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)

at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)

at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)

at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)

at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)

at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)

at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)

at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
S

Se deu esse erro aí, então você não inseriu nada na pilha, pois é exceção de pilha vazia.
🤷🏻

D

posso mana o projeto para vc da uma bizoiada^^
eu tava seguindo esse video… Creating a Dungeon Crawler game in Java Swing | Coding Timelapse - YouTube
abaixo meu projeto.
New DUNGEON - Google Drive

Criado 12 de março de 2022
Ultima resposta 14 de mar. de 2022
Respostas 6
Participantes 2