Hallo,
ich versuche mich gerade an einem Spiel ähnlich dem Handygame Bounds.
Es geht darum einen kleinen Ball durch eine Welt zu steuern. Ich bin noch nicht besaonders weit, denn die grafische Dastellung (vor allem die redraw()-Methode) mach mir Probleme.
Auf einen tastendruck hin soll der Ball springen, aber es passiert optisch einfach nichts.
Hier mal mein Code. Es gibt bis jetzt vier Klassen:
Die Startklasse Spiel:
Die GUI-Klasse:
Das Spielfeld nochmal separat(mit KeyListenern und der paint()-Methode):
und den Ball:
Ich hoffe Ihr könnt mir helfen.
Danke im Vorraus für jeden gut gemeinten Rat und jede Kritik.
Gruß
Bob
ich versuche mich gerade an einem Spiel ähnlich dem Handygame Bounds.
Es geht darum einen kleinen Ball durch eine Welt zu steuern. Ich bin noch nicht besaonders weit, denn die grafische Dastellung (vor allem die redraw()-Methode) mach mir Probleme.
Auf einen tastendruck hin soll der Ball springen, aber es passiert optisch einfach nichts.
Hier mal mein Code. Es gibt bis jetzt vier Klassen:
Die Startklasse Spiel:
Java:
public class Spiel {
public static void main(String[] args) {
ball = new Ball(ausdehnung);
oberflaeche = new GUI(ausdehnung);
}
public static GUI getGUI(){
return oberflaeche;
}
public static Ball getBall(){
return ball;
}
private static Ball ball;
private static GUI oberflaeche;
private static int ausdehnung = 600;
}
Die GUI-Klasse:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
protected GUI( int ausdehnung) {
groesse = ausdehnung;
setTitle("Test123");
setSize(ausdehnung, ausdehnung/3*2);
Button start = new Button("Start");
start.setBackground(Color.ORANGE);
Button load = new Button("Laden");
load.setBackground(Color.ORANGE);
Button save = new Button("Speichern");
save.setBackground(Color.ORANGE);
Button timeout = new Button("Pause");
timeout.setBackground(Color.ORANGE);
Panel menuPanel = new Panel();
menuPanel.setSize(ausdehnung, 20);
menuPanel.setLayout(new GridLayout(1, 4));
menuPanel.setBackground(Color.orange);
gamePanel = new Spielfeld(ausdehnung);
menuPanel.add( start);
menuPanel.add( timeout);
menuPanel.add( save);
menuPanel.add( load);
add( menuPanel);
add( gamePanel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public int getAusdehnung(){
return groesse;
}
public Spielfeld getSpielfeld(){
return gamePanel;
}
private int groesse;
private Spielfeld gamePanel;
}
Das Spielfeld nochmal separat(mit KeyListenern und der paint()-Methode):
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Spielfeld extends Panel {
public Spielfeld(int ausdehnung){
setBackground(Color.white);
setSize(ausdehnung, ausdehnung-20);
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP){
Spiel.getBall().spring();
}
}
});
}
public void paint(Graphics g){
Point position = Spiel.getBall().getPosition();
g.drawOval(position.x, position.y, 5, 5);
}
}
und den Ball:
Java:
import java.awt.Point;
public class Ball {
public Ball(int ausdehnung){
position = new Point (10, ausdehnung/3*2-100);
}
public Point gehLinks(){
position.x -= 2;
return position;
}
public Point gehRechts(){
position.x += 2;
return position;
}
public Point spring (){
if (position.y <= Spiel.getGUI().getAusdehnung()/3*2-100){
position.y +=1;
if (position.y <= Spiel.getGUI().getAusdehnung()/2){
position.y +=1;
if (position.y <= Spiel.getGUI().getAusdehnung()/1.5){
position.y +=1;
}
}
}
Spiel.getGUI().getSpielfeld().repaint();
return position;
}
public Point fallen(){
position.y -= 3;
return position;
}
public Point getPosition(){
return position;
}
private Point position;
}
Ich hoffe Ihr könnt mir helfen.
Danke im Vorraus für jeden gut gemeinten Rat und jede Kritik.
Gruß
Bob