ich habe beschlossen, dass spiel space invaders ganz simpel in einem JFrame mit einem Panel und einem Button(start) zu programmieren. ich bin jetzt so weit, dass ich mein raumschiff(weisse polygonlinie) in einem schwarzen panel habe. um das raumschiff horizantal bewegen zu können habe ich einen keylistener eingebaut, und das das ganze funzt habe ich mir gedacht brauche ich sicher einen thread der paralell immer lauft.
so jetzt das problem:
wenn ich das programm starte passiert wenig...
ich sehe einen schwarzen bilsschirm mit einem wessen raumschiff, so weit so gut, aber das raumschiff lässt sich leider nicht mit meinen pfeiltasten bewegen -.- .
es wäre nett wenn mir jemand helfen könnte.
hiermal meine keypressed methode:
und heir mein ganzes programm^^:
Danke im voraus
wenn mir jemand andere tipps geben könnte, wie ich mich leichter tue wäre ich natürlich sicherlich auch nicht böse^^
so jetzt das problem:
wenn ich das programm starte passiert wenig...
ich sehe einen schwarzen bilsschirm mit einem wessen raumschiff, so weit so gut, aber das raumschiff lässt sich leider nicht mit meinen pfeiltasten bewegen -.- .
es wäre nett wenn mir jemand helfen könnte.
hiermal meine keypressed methode:
Java:
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT) schiffPosx = schiffPosx +5;
if(e.getKeyCode()==KeyEvent.VK_LEFT) schiffPosx = schiffPosx -5;
}
und heir mein ganzes programm^^:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Graphik extends javax.swing.JFrame implements Runnable, KeyListener
{
private Thread t;
private Graphics gRaumschiff;
private int panbreite;
private int panhoehe;
private int [] arx;
private int [] ary;
private int schiffPosx;
private int schiffPosy;
public Graphik()
{
initComponents();
t = new Thread(this);
gRaumschiff = panFlaeche.getGraphics();
panFlaeche.setBackground(Color.black);
panbreite = panFlaeche.getWidth();
panhoehe = panFlaeche.getHeight();
schiffPosx = panFlaeche.getWidth()/2;
schiffPosy = panFlaeche.getHeight()-35;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
btnStart = new javax.swing.JButton();
panFlaeche = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
btnStart.setText("Start");
btnStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
onClickStart(evt);
}
});
getContentPane().add(btnStart, java.awt.BorderLayout.PAGE_END);
panFlaeche.setBackground(new java.awt.Color(0, 0, 0));
javax.swing.GroupLayout panFlaecheLayout = new javax.swing.GroupLayout(panFlaeche);
panFlaeche.setLayout(panFlaecheLayout);
panFlaecheLayout.setHorizontalGroup(
panFlaecheLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
panFlaecheLayout.setVerticalGroup(
panFlaecheLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 277, Short.MAX_VALUE)
);
getContentPane().add(panFlaeche, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>
private void onClickStart(java.awt.event.ActionEvent evt)
{
t.start();
}
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new Graphik().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnStart;
private javax.swing.JPanel panFlaeche;
// End of variables declaration
public void run()
{
for(int i = 0;i==0;)
{
berechneRaumschiff();
gRaumschiff.setColor(Color.WHITE);
gRaumschiff.drawPolyline(arx, ary, arx.length);
try
{
Thread.sleep(50);
} catch (InterruptedException ex) {
Logger.getLogger(Graphik.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void keyTyped(KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT) schiffPosx = schiffPosx +5;
if(e.getKeyCode()==KeyEvent.VK_LEFT) schiffPosx = schiffPosx -5;
}
public void keyReleased(KeyEvent e)
{
}
public void berechneRaumschiff()
{
int [] helpx = {schiffPosx,schiffPosx-10,schiffPosx-10,schiffPosx-25,schiffPosx-25,schiffPosx-30,schiffPosx-35,schiffPosx-35,schiffPosx+35,schiffPosx+35,schiffPosx+30,schiffPosx+25,schiffPosx+25,schiffPosx+10,schiffPosx+10,schiffPosx};
int [] helpy = {schiffPosy-30,schiffPosy,schiffPosy+10,schiffPosy+10,schiffPosy,schiffPosy-10,schiffPosy,schiffPosy+30,schiffPosy+30,schiffPosy,schiffPosy-10,schiffPosy,schiffPosy+10,schiffPosy+10,schiffPosy,schiffPosy-30};
arx = helpx;
ary = helpy;
}
}
Danke im voraus
wenn mir jemand andere tipps geben könnte, wie ich mich leichter tue wäre ich natürlich sicherlich auch nicht böse^^