T
ToNyXXL
Gast
Moin, ich bin dabei mein erstes kleines Spiel zu programmieren und bin nur auf ein Problem gestoßen! Hab vorher nur in der Schule mit Applets gearbeitet aba will jetzt attiv einsteigen und hab mich an Frames und richtige Klasse gewagt.
Mein Problem ist gerade, dass ich nicht weiter weiß, wie ich den KeyAdapter richtig verwenden soll, um meinen Array zu "bewegen"! Wäre nett wenn ihr Profis euch das mal anschaun könntet (auch wenns schwer fällt) und mit eventuell einen kleinen Tipp geben würdet. Ich denke mal das wird standard objekt oritierente Logik sein, die ich einfach noch net hab... *PHP Coder sei ;D*
Vielen vielen DANK!!
Mein Problem ist gerade, dass ich nicht weiter weiß, wie ich den KeyAdapter richtig verwenden soll, um meinen Array zu "bewegen"! Wäre nett wenn ihr Profis euch das mal anschaun könntet (auch wenns schwer fällt) und mit eventuell einen kleinen Tipp geben würdet. Ich denke mal das wird standard objekt oritierente Logik sein, die ich einfach noch net hab... *PHP Coder sei ;D*
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Start extends JFrame implements ActionListener
{
public static void main(String[] args)
{
// FRAME WIRD INITIALISIERT
Start start = new Start("Das Spiel!");
start.pack();
start.setSize(1024,768);
start.setVisible(true);
}
Start(String titel)
{
// TITEL WIRD GESETZT
super(titel);
// DESIGN WIRD AUF METALL LOOK GESTELLT
try
{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}
catch(Exception ex)
{
System.err.println("Fehler bei LookandFeel\n");
}
int level=0;
Tastatureingabe tasta = new Tastatureingabe();
DasSpielfeld spielfeld = new DasSpielfeld(tasta);
add(spielfeld); //JPanel DasSpielfeld adden
setBackground(Color.yellow);
}
public void paint(Graphics g)
{
// GEPAINTET WIRD IM JPanel DasSpielfeld
}
// BEI KLICK AUF X FENSTER SCHLIESSEN
public void actionPerformed(ActionEvent e)
{
String quelle = e.getActionCommand();
if(quelle.equals("Programm beenden"))
System.exit(0);
return;
}
}
class DasSpielfeld extends JPanel
{
// SPIELFELD GRÖSSE
int s_width=100;
int s_height=100;
// FELDGRÖSSE
int feldgröße=30;
// POSITIONSBESTIMMUNGEN
int pos_x, pos_y;
// ARRAY HILFSVARIABLE
int Rect_x=0, Rect_y=0;
// Spielerposition
int spieler_x, spieler_y;
public DasSpielfeld(KeyListener tasta)
{
addKeyListener(tasta); // RICHTIG SO?
}
//BEWEGUNGSABLÄUFE START
public void up()
{
spieler_y--;
}
public void down()
{
spieler_y++;
}
public void left()
{
spieler_x--;
}
public void right()
{
spieler_x++;
}
// BEWEGUNGSABLÄUFE ENDE
public void paint(Graphics g)
{
g.translate(200,200);
g.fillRect(0,0,1000, 1000);
g.setColor(Color.red);
// MITTELPOSITION WIRD BERECHNET
pos_x=(spieler_x-390)/feldgröße;
pos_y=(spieler_y-270)/feldgröße;
// SPIELERDATEN WERDEN BERECHNET *WIP*
Rect_x=pos_x;
Rect_y=pos_y;
// ALPHA GRUNDGERÜST WIRD GEZEICHNET
for(int y=0; y<(s_height); y++)
{
for(int x=0; x<(s_width); x++)
{
g.drawRect(x*feldgröße, y*feldgröße, feldgröße, feldgröße);
g.drawString(Rect_x+" "+Rect_y, x*feldgröße, y*feldgröße+feldgröße);
g.fillRect((13*feldgröße), (9*feldgröße), feldgröße, feldgröße);
Rect_x++;
}
Rect_x=pos_x;
Rect_y++;
}
Rect_y=pos_y;
}
}
class Feld
{
// FÜR SPÄTER
}
class Tastatureingabe extends KeyAdapter
{
String action;
public void keyPressed(KeyEvent event)
{
Frame source = (Frame)event.getSource();
if (event.getKeyCode() == KeyEvent.VK_UP)
{
// Hier weiß ich nicht weiter
}
if (event.getKeyCode() == KeyEvent.VK_DOWN)
{
// Hier weiß ich nicht weiter
}
if (event.getKeyCode() == KeyEvent.VK_LEFT)
{
// Hier weiß ich nicht weiter
}
if (event.getKeyCode() == KeyEvent.VK_RIGHT)
{
// Hier weiß ich nicht weiter
}
}
public String gibAction()
{
return action;
}
}
Vielen vielen DANK!!