Grafik problemer! Tegner ikke noget
MyelloHar et problem med min grafik.
Jeg har en firkant(fly) som skal tegnes og flyttes, nu er det bare sådan at der bliver ikek tegnet noget på skærmen og jeg får en stackoverflow exception så snart jeg trykker på en pil tast.
KODE
------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//Vores Flyver!!
class fly
{
private int x;
private int y;
private int b;
private int h;
public fly(int x, int y, int b, int h)
{this.x=x;this.y=y;this.b=b;this.h=h;}
public void tegn(Graphics g,int hor, int ver)// Tegner vores \"seje\" fly!
{
g.setColor(Color.lightGray);
g.fillRect(ver,hor,b,h);
g.drawRect(ver,hor,b,h);
}
}
public class falcon extends Frame implements KeyListener
{
final public int maxsteps = 2;
final public int antalkeys = 7; //antal knapper der skal bruges til at spille med
final public int antalSpil = 1; // Bruges til at diffinerer start stedet for spilleren!
public boolean key[] = new boolean[antalkeys]; //en tabel over de keys der bruges
public int xPos[] = new int[antalSpil]; //får x positionen for spiller 1
public int yPos[] = new int[antalSpil]; //får y positionen for spiller 1
public int face[] = new int[antalSpil]; //animation af spiller i den pågældende retning
public boolean moving[] = new boolean[antalSpil];
fly f = new fly(320,430,50,50);
public falcon()
{
super(\"Fighting Falcon\");
setSize(640, 480);
addWindowListener(new CloseCatcher ());
addKeyListener(this);
show();
for (int i = 0;i < antalSpil; ++i) //Starte stedet for vores spiller
{
xPos[i] = 430;
yPos[i] = 320;
}
for (int i = 0;i < antalkeys; ++i) //Løber vores tabel af keys igennem
{
key[i] = false; //Sætter dem til default fra starten af for vi har jo ikke trykket på nogen endnu
}
}
public void gameloop()//Skulle gerne starte spillet
{
repaint();
while(true)
{
moving(xPos[0], yPos[0], face[0]);
buttonpres();
}
}
public void moving(int x, int y, int f)//Flytter vores Fly
{
switch(f)
{
case 1: //frem
{
y=y-maxsteps;
break;
}
case 2: //tilbage
{
y=y+maxsteps;
break;
}
case 3://venstre
{
x=x-maxsteps;
break;
}
case 4://højre
{
x=x+maxsteps;
break;
}
}
}
public void buttonpres() //Flytter vores spiller med de taster der er trykket ned
{
if(key[0])//frem
{
yPos[0] = yPos[0] - maxsteps;
face[0] = 1;
repaint();
}
if(key[1])//tilbage
{
yPos[0] = yPos[0] + maxsteps;
face[0] = 1;
repaint();
}
if(key[2])//venstre
{
xPos[0] = xPos[0] - maxsteps;
face[0] = 1;
repaint();
}
if(key[3])//højre
{
xPos[0] = xPos[0] + maxsteps;
face[0] = 1;
repaint();
}
if(key[0]&&key[2])//Nordvest
{
yPos[0] = yPos[0] - maxsteps;
xPos[0] = xPos[0] - maxsteps;
face[0] = 1;
repaint();
}
if(key[0]&&key[3])//NordØst
{
yPos[0] = yPos[0] - maxsteps;
xPos[0] = xPos[0] + maxsteps;
face[0] = 1;
repaint();
}
if(key[1]&&key[2])//SydVest
{
yPos[0] = yPos[0] + maxsteps;
xPos[0] = xPos[0] - maxsteps;
face[0] = 1;
repaint();
}
if(key[1]&&key[3])//SydØst
{
yPos[0] = yPos[0] + maxsteps;
xPos[0] = xPos[0] + maxsteps;
face[0] = 1;
repaint();
}
}
public void paint(Graphics g) //Skulle tegne
{
switch (face[0]) {
case 1: //Opad
{
f.tegn(g,xPos[0],yPos[0]);
break;
}
case 2: //Nedad
{
f.tegn(g,xPos[0],yPos[0]);
break;
}
case 3: //venstre
{
f.tegn(g,xPos[0],yPos[0]);
break;
}
case 4: //højre
{
f.tegn(g,xPos[0],yPos[0]);
break;
}
}
paint(g);
}
public static void main(String args[])
{
new falcon().gameloop();
}
public void keyPressed(KeyEvent ke) //Tester på om vi har trykket på en tast
{
if(ke.getKeyCode()==ke.VK_UP)//frem
{
key[0] = true;
key[1] = false;
key[2] = false;
key[3] = false;
key[4] = false;
key[5] = false;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_DOWN)//tilbage
{
key[0] = false;
key[1] = true;
key[2] = false;
key[3] = false;
key[4] = false;
key[5] = false;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_LEFT)//venstrer
{
key[0] = false;
key[1] = false;
key[2] = true;
key[3] = false;
key[4] = false;
key[5] = false;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_RIGHT)//højre
{
key[0] = false;
key[1] = false;
key[2] = false;
key[3] = true;
key[4] = false;
key[5] = false;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_CONTROL)//SKYD!!
{
key[0] = false;
key[1] = false;
key[2] = false;
key[3] = false;
key[4] = true;
key[5] = false;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_ALT)//Skifte Våben
{
key[0] = false;
key[1] = false;
key[2] = false;
key[3] = false;
key[4] = false;
key[5] = true;
key[6] = false;
}
if(ke.getKeyCode()==ke.VK_SPACE)//Aktiverer special Udstyr
{
key[0] = false;
key[1] = false;
key[2] = false;
key[3] = false;
key[4] = false;
key[5] = false;
key[6] = true;
}
}
public void keyReleased(java.awt.event.KeyEvent keyEvent) {
}
public void keyTyped(java.awt.event.KeyEvent keyEvent) {
}
}
class CloseCatcher extends WindowAdapter
{public void windowClosing(WindowEvent e){System.exit(0);}}
------------------------------------------------------
