Hey!
Ich hab (zugegeben n bisschen aus nem Tutorial, aber bin ja noch Anfänger) ein 2D spiel gemacht.
Es ist noch nicht fertig, es ist aber ein schwerwiegender Fehler drin. :C
Hier mal der Code:
Code vom Frame:
Code vom Game:
Code von der Sprung animation:
Wenn man das alles zsm laufen lässt, funktioniert allles, wenn man aber die Leertaste gedrückt hält, buggt die figur total rum.... hat jmd ne idee? ich verzweifel schon xD
VG
N0__ESCAPE
Ich hab (zugegeben n bisschen aus nem Tutorial, aber bin ja noch Anfänger) ein 2D spiel gemacht.
Es ist noch nicht fertig, es ist aber ein schwerwiegender Fehler drin. :C
Hier mal der Code:
Code vom Frame:
Java:
package Fishi;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class frame extends JFrame implements ActionListener {
private JButton schliessen;
private JButton einstellung;
private JButton ende;
public static void main (String[]args) throws Exception {
frame frame = new frame("Fishi");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(521, 379);
frame.setLocation(650, 300);
frame.setResizable(false);
frame.setLayout(null);
JLabel Hintergrund = new JLabel(new ImageIcon(frame.class.getResource("flashlandscape.bx.fl.2007.png")));
Hintergrund.setSize(521, 379);
frame.add(Hintergrund);
frame.setVisible(true);
}
public frame(String title) {
super(title);
schliessen = new JButton(new ImageIcon(frame.class.getResource("JMneu.jpg")));;
schliessen.setBounds(170, 40, 160, 45);
schliessen.addActionListener(this);
add(schliessen);
einstellung = new JButton(new ImageIcon(frame.class.getResource("JMneu3.jpg")));;
einstellung.setBounds(170, 120, 160, 45);
einstellung.addActionListener(this);
add(einstellung);
ende = new JButton(new ImageIcon(frame.class.getResource("JMneu2.jpg")));;
ende.setBounds(170, 200, 160, 45);
ende.addActionListener(this);
add(ende);
JLabel label = new JLabel("(V 0.1)");
label.setBounds(475,330,150,20);
add(label);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == schliessen) {
fenster();
}
if (e.getSource() == einstellung) {
// auswahl();
}
if (e.getSource() == ende) {
System.exit(0);
}
}
public static void fenster() {
JFrame fenster = new JFrame("Fishi");
fenster.setSize(812, 512);
fenster.setLocation(100, 100);
fenster.setResizable(false);
fenster.setDefaultCloseOperation(fenster.EXIT_ON_CLOSE);
fenster.add(new Game());
fenster.setVisible(true);
}
}
Code vom Game:
Java:
package Fishi;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Game extends JPanel implements ActionListener
{
Image img2;
Image img;
int key;
int lauf;
int X_bild;
int nx,nx2;
int anzahl = 0;
int anzahl2 = 0;
int verzögerung = 10;
int figur_y = 335;
int left;
Timer time;
public Game()
{
nx = 0;
nx2 = 1024;
key = 0;
lauf = 0;
setFocusable(true);
ImageIcon u = new ImageIcon(Game.class.getResource("game_background.jpg"));
img = u.getImage();
ImageIcon i = new ImageIcon(Game.class.getResource("fishi.png"));
img2 = i.getImage();
addKeyListener(new al());
time = new Timer(5, this);
time.start();
Sprung sprung = new Sprung();
}
public void actionPerformed(ActionEvent e)
{
bewegen();
figur_y = Sprung.sprungposition;
repaint();
}
public void paint(Graphics g){
super.paint(g);
Graphics2D f2 = (Graphics2D)g;
if(getXbild() <= -1024){
X_bild+= 1024;
}
f2.drawImage(img, X_bild, 0, null);
f2.drawImage(img, X_bild + 1024, 0, null);
if(X_bild >= -1024){
X_bild-= 1024;
}
f2.drawImage(img2,left, figur_y, null );
}
private int getXbild()
{
return X_bild;
}
public void bewegen()
{
if (lauf != -2)
{
if (left + lauf <= 230)
{
left+= lauf;
}
else
{
X_bild -= lauf;
nx -= lauf;
nx2 -= lauf;
}
}
else
{
if(left - lauf < 0)
{
left -= lauf;
}
}
}
private class al extends KeyAdapter
{
public al()
{
}
public void keyPressed(KeyEvent e)
{
key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT)
{
lauf = -1;
}
if (key == KeyEvent.VK_RIGHT)
{
lauf = 1;
}
if (key == KeyEvent.VK_SPACE)
{
Sprung();
}
}
public void keyReleased(KeyEvent e)
{
key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)
{
lauf = 0;
}
}
}
public void Sprung()
{
Sprung SprungAnimation = new Sprung();
SprungAnimation.start();
}
public static void main(String[] args)
{
}
}
Code von der Sprung animation:
Java:
package Fishi;
public class Sprung extends Thread
{
static boolean fertig = true;
static boolean hochpunkt = false;
int sprunghoehe = 85;
static int ursprungY = 335;
static int sprungposition = ursprungY;
public Sprung()
{
}
public void run()
{
fertig = false;
int verzögerung = 4;
while(fertig == false)
{
Sprung();
try
{
Thread.sleep(verzögerung);
}
catch(Exception e)
{
}
}
hochpunkt = false;
}
public void Sprung()
{
if(hochpunkt == false)
{
sprungposition--;
}
if(sprungposition == (ursprungY - sprunghoehe))
{
hochpunkt = true;
}
if(hochpunkt == true && sprungposition <= ursprungY)
{
sprungposition++;
if(sprungposition == ursprungY)
{
fertig = true;
}
}
}
}
Wenn man das alles zsm laufen lässt, funktioniert allles, wenn man aber die Leertaste gedrückt hält, buggt die figur total rum.... hat jmd ne idee? ich verzweifel schon xD
VG
N0__ESCAPE
Zuletzt bearbeitet von einem Moderator: