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

staroski

É 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?

staroski

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)
staroski

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