Anpassungen GameInterface für Graphis2d

This commit is contained in:
andreas
2014-11-01 20:11:36 +01:00
parent 741e5a3c19
commit 2ea61e7435
2 changed files with 64 additions and 106 deletions
@@ -18,12 +18,14 @@ public class DynamicObject extends JComponent{
private static final long serialVersionUID = 1L;
//private Image image;
private BufferedImage bf1;
private Graphics2D g2d;
private double rescaleFactor = 0.0;
public DynamicObject() {
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d = (Graphics2D)g;
//this.image = Toolkit.getDefaultToolkit().getImage("src/de/heatup/resources/images/little_green_guy.png");
try {
if ( bf1 == null ) {
@@ -35,17 +37,23 @@ public class DynamicObject extends JComponent{
}
//g2d.rotate(0.3, 10, 10);
//g2d.scale(1.0, 1.0);
if ( rescaleFactor != 0.0 ) {
g2d.scale(rescaleFactor, rescaleFactor);
}
//g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2d.drawImage(bf1, 0, 0, this);
//g2d.setStroke(new BasicStroke(8.0f));
g2d.finalize();
System.out.println("paintComponent");
}
public void setImage(BufferedImage image) {
this.bf1 = image;
}
public void setRescale(double rescaleFactor) {
this.rescaleFactor = rescaleFactor;
//this.setBounds(x, y, width, height);
}
}
+47 -97
View File
@@ -1,152 +1,102 @@
package de.heatup.ui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import de.heatup.objects.Gegner;
import de.heatup.objects.Objekt;
import de.heatup.objects.DynamicObject;
import de.heatup.objects.StaticObject;
import de.heatup.objects.logic;
public class GameInterface extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel outerPanel;
private JPanel statusPanel;
private JPanel gamePanel;
private JPanel actionPanel;
private BufferedImage image;
//private BufferedImage image;
public void createGUI() {
final JFrame frame = new JFrame();
public GameInterface() throws IOException {
setTitle("HeatUP!");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setResizable(true);
frame.setTitle("HeatUP!");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(true);
//frame.createBufferStrategy(2);
createLayout();
pack();
}
public void createLayout() throws IOException {
/*
* outerPanel ist der Rahmen in dem das Spielfeld und der statusFrame vereinigt werden
*/
outerPanel = new JPanel();
outerPanel.setLayout(new BorderLayout());
outerPanel.setBorder(BorderFactory.createTitledBorder("outerPanel"));
outerPanel.setVisible(true);
/*
* statusPanel enthält Elemente wie Score, Zeit, Level etc.
*/
statusPanel = new JPanel();
statusPanel.setLayout(new GridLayout(1,4));
statusPanel.setPreferredSize(new Dimension(800,80));
statusPanel.setBorder(BorderFactory.createTitledBorder("statusPanel"));
/*
* gamePanel enthält das Spielfeld
*/
gamePanel = new JPanel();
gamePanel.setLayout(null);
gamePanel.setPreferredSize(new Dimension(800,600));
gamePanel.setBorder(BorderFactory.createTitledBorder("gamePanel"));
/*
* actionPanel enthält Informationen zum durchführen einer Tätigkeit
*/
actionPanel = new JPanel();
actionPanel.setLayout(new GridLayout(1,1));
actionPanel.setBorder(BorderFactory.createTitledBorder("actionPanel"));
actionPanel.setPreferredSize(new Dimension(800,80));
/*
* Panel korrekt im Layout ausrichten.
*/
this.getContentPane().add(outerPanel);
outerPanel.add(statusPanel,BorderLayout.NORTH);
outerPanel.add(gamePanel,BorderLayout.CENTER);
outerPanel.add(actionPanel,BorderLayout.SOUTH);
gamePanel.add(new StaticObject());
frame.add(outerPanel);
frame.pack();
frame.setVisible(true);
frame.repaint();
}
/*
* We need to use EQ for EDT
*/
public static void main(String[] args) throws IOException, InterruptedException {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
GameInterface gameWindow = new GameInterface();
gameWindow.createGUI();
/*
* Gegner Routine instanzieren
*/
Gegner g1 = new Gegner();
Gegner g2 = new Gegner();
Gegner g3 = new Gegner();
//Objekt o1 = new Objekt('0');
//o1.getLabel().setVisible(true);
Objekt s1 = new Objekt('0');
Objekt s2 = new Objekt('0');
Objekt s3 = new Objekt('0');
Objekt s4 = new Objekt('0');
Objekt s5 = new Objekt('0');
Objekt s6 = new Objekt('0');
/*
* Gegner auf Spielfläche hinzufügen und positionieren
*/
gameWindow.gamePanel.add(g1.getLabel());
gameWindow.gamePanel.add(g2.getLabel());
gameWindow.gamePanel.add(g3.getLabel());
//gameWindow.gamePanel.add(o1.getLabel());
g1.getLabel().setBounds(300, 100, 20, 20);
g2.getLabel().setBounds(300, 200, 20, 20);
g3.getLabel().setBounds(300, 300, 20, 20);
//Objekt bg = new Objekt("images/bg_gray.png");
//bg.setPosition(0, 0);
gameWindow.gamePanel.add(s1.getLabel());
gameWindow.gamePanel.add(s2.getLabel());
gameWindow.gamePanel.add(s3.getLabel());
gameWindow.gamePanel.add(s4.getLabel());
gameWindow.gamePanel.add(s5.getLabel());
gameWindow.gamePanel.add(s6.getLabel());
//gameWindow.gamePanel.add(bg.getLabel());
//bg.getLabel().repaint();
//gameWindow.gamePanel.setComponentZOrder(o1.getLabel(), 0);
//gameWindow.gamePanel.setComponentZOrder(bg.getLabel(), 5);
gameWindow.gamePanel.setComponentZOrder(g1.getLabel(), 1);
gameWindow.gamePanel.setComponentZOrder(g2.getLabel(), 1);
gameWindow.gamePanel.setComponentZOrder(g3.getLabel(), 1);
gameWindow.gamePanel.setComponentZOrder(s1.getLabel(), 2);
gameWindow.gamePanel.setComponentZOrder(s2.getLabel(), 2);
gameWindow.gamePanel.setComponentZOrder(s3.getLabel(), 2);
gameWindow.gamePanel.setComponentZOrder(s4.getLabel(), 2);
gameWindow.gamePanel.setComponentZOrder(s5.getLabel(), 2);
gameWindow.gamePanel.setComponentZOrder(s6.getLabel(), 2);
s1.setPosition(0, 0);
s2.setPosition(25, 0);
s3.setPosition(50, 0);
s4.setPosition(75, 0);
DynamicObject opponent1 = new DynamicObject();
opponent1.setBounds(0, 0, opponent1.getWidth(), opponent1.getHeight());
gameWindow.gamePanel.add(opponent1);
DynamicObject opponent2 = new DynamicObject();
opponent2.setBounds(0, 0, opponent2.getWidth(), opponent2.getWidth());
gameWindow.gamePanel.add(opponent2);
logic.startMovement(opponent1);
logic.startMovement(opponent2);
opponent1.setRescale(0.4);
}
});
}
public JPanel getGamePanel() {