Hallo. Ich habe mir jetzt auch mal das Tutorial von Quaxli angeguckt. Ich find es echt toll. Voralle dem, das dort Sachen beschrieben werden, an die man so garnicht denkt .
Jetzt hab ich nur ein Problem. Heli wird angezeigt. Jetzt will ich den aber steuern.
Hab auch die Steuerung auf 2 verschiedene Wege eingebunden... jedoch tut sich nichts...
Meine ESC Taste, die ich dazu eingebaut habe, funktioniert aber... also kann es nicht am KeyListener() liegen oder? Hier mal mein Code:
Eine Exception gibt es nicht. Ein Hinweis vielleicht noch... ich habe anstatt ein JFrame Fenster ein Fullscreen eingebaut...
Woran kann das liegen das der Heli nicht fliegt??? Sprit leer?
Greetz Radiac
Hier die Dateien File-Upload.net - GamePanel.rar
Jetzt hab ich nur ein Problem. Heli wird angezeigt. Jetzt will ich den aber steuern.
Hab auch die Steuerung auf 2 verschiedene Wege eingebunden... jedoch tut sich nichts...
Meine ESC Taste, die ich dazu eingebaut habe, funktioniert aber... also kann es nicht am KeyListener() liegen oder? Hier mal mein Code:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package gamepanel;
/**
*
* @author Radiac
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.*;
public class GamePanel extends JPanel implements Runnable{
private static final long serialVersionUID = 1L;
boolean game_running = true;
// Screenabmessung
static int w;
static int h;
// FPS Messung
long delta =0;
long last =0;
long fps = 0;
// BilderNamen Deklarieren
Sprite copter;
Vector<Sprite> actors;
// Toolbox laden für Desktop Screenabmessung
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension scrDim= tk.getScreenSize();
// Steuerung Instanzieren
boolean up = false;
boolean down = false;
boolean left = false;
boolean right = false;
int speed = 50;
public GamePanel(){
this.setPreferredSize(new Dimension(scrDim));
JFrame frame = new JFrame("Game");
frame.setLocation(0,0);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.setIgnoreRepaint(false);
frame.setResizable(false);
frame.add(this);
frame.pack();
frame.setVisible(true);
//Keyzeugs
frame.addKeyListener(new MyKeyListener());
// Ablesen der Screenmaße wxh
w=scrDim.height;
h=scrDim.width;
doInitializations();
}// Ende GamePanel
public static void main (String[] args){
new GamePanel();
}
private void doInitializations() {
BufferedImage[] heli = this.loadPics("pics/heli.gif", 4);
last = System.nanoTime();
actors = new Vector<Sprite>();
copter = new Sprite(heli,800,600,100,this);
actors.add(copter);
Thread t = new Thread(this);
t.start();
}
public void run() {
while (game_running){
computeDelta();
checkKeys();
doLogic();
moveObjects();
repaint();
try {
Thread.sleep(10);
}catch (InterruptedException e) {}
}
}
private void computeDelta() {
delta = System.nanoTime() - last;
last = System.nanoTime();
fps = ((long) 1e9)/delta;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawString("FPS:" +Long.toString(fps), 20, 20);
g.drawString("Aktuelle Auflösung: " +w+"x"+h, 20, 40);// Zeigt Aktuelle Screenabmessung an.
if(actors!=null){
for(Drawable draw:actors){
draw.drawObjects(g);
}
}
}
private BufferedImage[] loadPics(String path, int pics){
BufferedImage[] anim = new BufferedImage[pics];
BufferedImage source = null;
URL pic_url = getClass().getClassLoader().getResource(path);
try {
source = ImageIO.read(pic_url);
} catch (IOException e) {}
for(int x=0;x<pics;x++){
anim[x] = source.getSubimage(x*source.getWidth()/pics, 0,
source.getWidth()/pics,source.getHeight());
}
return anim;
// Steuerung Instanzieren
}
private void checkKeys() {
// Steuerung Instanzieren
if(up){
copter.setVerticalSpeed(-speed);
}
if(down){
copter.setVerticalSpeed(speed);
}
if(right){
copter.setVerticalSpeed(speed);
}
if(left){
copter.setVerticalSpeed(-speed);
}
if(!up&&!down){
copter.setVerticalSpeed(0);
}
if(!left&&!right){
copter.setVerticalSpeed(0);
}
}
private void doLogic(){
for(Movable mov:actors){
mov.doLogic(delta);
}
}
private void moveObjects(){
for(Movable mov:actors){
mov.doLogic(delta);
}
}
class MyKeyListener extends KeyAdapter{
// e = (event)
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_UP){
up = true;
}
if (e.getKeyCode()==KeyEvent.VK_DOWN){
down = true;
}
if (e.getKeyCode()==KeyEvent.VK_LEFT){
left = true;
}
if (e.getKeyCode()==KeyEvent.VK_RIGHT){
right = true;
}
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
setVisible(false);
System.exit(0);
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_UP){
up = false;
}
if (e.getKeyCode()==KeyEvent.VK_DOWN){
down = false;
}
if (e.getKeyCode()==KeyEvent.VK_LEFT){
left = false;
}
if (e.getKeyCode()==KeyEvent.VK_RIGHT){
right = false;
}
}
}
}
Eine Exception gibt es nicht. Ein Hinweis vielleicht noch... ich habe anstatt ein JFrame Fenster ein Fullscreen eingebaut...
Woran kann das liegen das der Heli nicht fliegt??? Sprit leer?
Greetz Radiac
Hier die Dateien File-Upload.net - GamePanel.rar
Zuletzt bearbeitet: