Hallo
Ich habe begonnen ein Jump and Run zu programmieren. Das Ziel von dem was ich bis jetzt programmiert habe ist, dass sich der Hintergrund beim drücken der Pfeiltasten nach rechts und nach links bewegt. Das funktioniert auch soweit. Jedoch flackert das Bild und ich finde nicht heraus an was es liegt.
Vielen Dank für eure Hilfe schon mal im voraus.
PS: Ich bin mir nicht ganz sicher ob ich das mit dem Code hochladen so richtig gemacht habe. Falls nicht wäre ich froh wenn mir jemand erklären kann wie man es richtig macht. Ich habe das noch nie gemacht.
Java:
/**
*
* @author Beat
*
*/
public class Start {
public static void main(String[] args) {
GUI G = new GUI();
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Label;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class GUI_Jump_and_Run extends JFrame implements ActionListener{
Image img1;
Image img2;
int bewegung;
BufferedImage buffered;
public GUI_Jump_and_Run() {
setVisible(true);
setSize(1300, 780);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Jump and Run");
setLayout(null);
setLocationRelativeTo(null);
setFocusable(true);
ImageIcon u = new ImageIcon(getClass().getResource("Bild.jpg"));
img1 = u.getImage();
ImageIcon f = new ImageIcon(getClass().getResource("figur.png"));
img2 = f.getImage();
addKeyListener(new Steuerung());
var.time = new Timer(6, this);
var.time.start();
}
public void paint (Graphics g) {
super.paint(g);
Graphics2D f2 = (Graphics2D)g;
if(var.lauf*-1==var.nx2) { //Rückwerts gehen
System.out.println(var.lauf);
var.nx-=var.längebild;
var.nx2-=var.längebild;
System.out.println(var.nx2);
}
if(var.lauf*-1==var.nx) { //Vorwerts gehen
var.nx+=var.längebild;
var.nx2+=var.längebild;
var.nx3+=var.längebild;
}
f2.drawImage(img1,var.lauf+var.nx-1300,0,null);
f2.drawImage(img1,var.lauf+var.nx,0,null);
f2.drawImage(img1,var.lauf+var.nx2-var.längebild,0,null);
//f2.drawImage(img1, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer)
//f2.drawImage(img2, 20, 20, null);
}
@Override
public void actionPerformed(ActionEvent e) {
lauf();
repaint();
}
public static void lauf() {
if (var.lauf <0){
var.lauf += var.bewegenBild;
}
else {
var.lauf = -1;
}
}
}
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Steuerung extends KeyAdapter{
int x_bewegung;
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT) {
var.bewegenBild = 1;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
var.bewegenBild = -1;
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode()!=KeyEvent.VK_LEFT || e.getKeyCode()!=KeyEvent.VK_RIGHT){
var.bewegenBild = 0;
}
}}
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.Timer;
public class var {
static int bewegenBild;
static javax.swing.JPanel JPanel;
static int lauf=-1;
static Timer time;
static int längebild = 1300;
static int rechnen;
static int nx=1300;
static int nx2=0;
static int nx3=-1300;
public var() {
}}
Ich habe begonnen ein Jump and Run zu programmieren. Das Ziel von dem was ich bis jetzt programmiert habe ist, dass sich der Hintergrund beim drücken der Pfeiltasten nach rechts und nach links bewegt. Das funktioniert auch soweit. Jedoch flackert das Bild und ich finde nicht heraus an was es liegt.
Vielen Dank für eure Hilfe schon mal im voraus.
PS: Ich bin mir nicht ganz sicher ob ich das mit dem Code hochladen so richtig gemacht habe. Falls nicht wäre ich froh wenn mir jemand erklären kann wie man es richtig macht. Ich habe das noch nie gemacht.
Java:
/**
*
* @author Beat
*
*/
public class Start {
public static void main(String[] args) {
GUI G = new GUI();
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Label;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class GUI_Jump_and_Run extends JFrame implements ActionListener{
Image img1;
Image img2;
int bewegung;
BufferedImage buffered;
public GUI_Jump_and_Run() {
setVisible(true);
setSize(1300, 780);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Jump and Run");
setLayout(null);
setLocationRelativeTo(null);
setFocusable(true);
ImageIcon u = new ImageIcon(getClass().getResource("Bild.jpg"));
img1 = u.getImage();
ImageIcon f = new ImageIcon(getClass().getResource("figur.png"));
img2 = f.getImage();
addKeyListener(new Steuerung());
var.time = new Timer(6, this);
var.time.start();
}
public void paint (Graphics g) {
super.paint(g);
Graphics2D f2 = (Graphics2D)g;
if(var.lauf*-1==var.nx2) { //Rückwerts gehen
System.out.println(var.lauf);
var.nx-=var.längebild;
var.nx2-=var.längebild;
System.out.println(var.nx2);
}
if(var.lauf*-1==var.nx) { //Vorwerts gehen
var.nx+=var.längebild;
var.nx2+=var.längebild;
var.nx3+=var.längebild;
}
f2.drawImage(img1,var.lauf+var.nx-1300,0,null);
f2.drawImage(img1,var.lauf+var.nx,0,null);
f2.drawImage(img1,var.lauf+var.nx2-var.längebild,0,null);
//f2.drawImage(img1, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer)
//f2.drawImage(img2, 20, 20, null);
}
@Override
public void actionPerformed(ActionEvent e) {
lauf();
repaint();
}
public static void lauf() {
if (var.lauf <0){
var.lauf += var.bewegenBild;
}
else {
var.lauf = -1;
}
}
}
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Steuerung extends KeyAdapter{
int x_bewegung;
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT) {
var.bewegenBild = 1;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT) {
var.bewegenBild = -1;
}
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode()!=KeyEvent.VK_LEFT || e.getKeyCode()!=KeyEvent.VK_RIGHT){
var.bewegenBild = 0;
}
}}
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.Timer;
public class var {
static int bewegenBild;
static javax.swing.JPanel JPanel;
static int lauf=-1;
static Timer time;
static int längebild = 1300;
static int rechnen;
static int nx=1300;
static int nx2=0;
static int nx3=-1300;
public var() {
}}