# 2D Blockade Programmieren



## Koti (6. Apr 2015)

Ich versuche seit 3 Tagen ein Spiel zu Programmieren ohne jegliche Java kentnisse. Jetzt stehe ich vor dem Problem das ich es geschafft habe die Rechte Blockade zu erstellen, aber ich kriege es auf biegen und brechen nicht rechts hin. Also was ich genau will: Die Figur "img2" soll nicht zu rechten Seite raus, und auch nicht zu linken aus dem Bild raus, nur auf der Linken Seite habe ich es schon geschaff (Dont ask me how )

Quellcode:

```
package frame;
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.JPanel;
import javax.swing.ImageIcon;
import javax.swing.Timer;

public class gui extends JPanel implements ActionListener{
	
	Timer time;
	Image img;
	Image img2;
	int X_Bild;
	int nx,nx2;
	int anzahl = 0;
	int anzahl2 = 0;
	int key;
	int lauf;
	int left = -200;
	int right = 200;
	
	public gui(){
		addKeyListener(new AL());
		nx = 0;
		nx2 = 480;
		key = 0;
		lauf = 0;
		setFocusable(true);
		ImageIcon u = new ImageIcon((getClass().getResource("Background.jpg")));
		img = u.getImage();
		ImageIcon c1 = new ImageIcon((getClass().getResource("Character 1.png")));
		img2 = c1.getImage();
		time = new Timer(5,this);
		time.start();
	}
	public void actionPerformed(ActionEvent e){
		bewegen();
		repaint();
	}
	public void paint(Graphics g){
		super.paint(g);
		Graphics2D f2 = (Graphics2D)g;
		if(getX_Bild() == 0 + (anzahl *50)){
			anzahl += 1;
			nx = 500;
		}
		if(getX_Bild() == 100 + (anzahl2 *100)){
			anzahl2 += 1;
			nx2 = 0;
		}
		if(getX_Bild() >= 100){
			f2.drawImage(img,200+nx,0,null);
		}
		f2.drawImage(img,480-nx2,0,null);
		f2.drawImage(img2,left,0,null);
	}
	private int getX_Bild() {
		return X_Bild;
	}
	public void bewegen(){
		if(lauf != -1){
			if(left + lauf <=5000){
				left += lauf;
			}else {
				X_Bild += lauf;
				nx += lauf;
				nx2 += lauf;
			}
		}else {
			if(left + lauf > -250){   //BLOCKADE DER Linken SEITE
				left += lauf; 
				}			
			}
		}
	private class AL extends KeyAdapter{
		public AL(){	
	}
	public void keyReleased(KeyEvent e){
		key = e.getKeyCode();
		if(key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT){
			lauf = 0;
		}
	}
	public void keyPressed(KeyEvent e){
		key = e.getKeyCode();
		if(key == KeyEvent.VK_RIGHT){
			lauf = 1;
			}
		if(key == KeyEvent.VK_LEFT){
			lauf = -1;
		}
	}
}
}
```

Ich weiß dort ist viel Crap usw. drin. Bitte verschont mich  bin komplett neu in der Szene. Würde mich über Hilfe sehr freuen


----------



## DieKeksmaffia (6. Apr 2015)

Ich habe bereits ein 2D Spiel (auch wenn es echt Müll war) programmiert,
und zunächst einfach in der Methode bewegen() abgefragt ob die Figur den Bildschirm verlassen hat:
[Java]
if(figur.getX()<0)//fragt ob die X-Position der Figur zu weit links (unter 0 und 0 die der Rand des Frames) 
{
//Code, z.B. bewege die Figur ein wenig nach unten oder das Spiel ist vorbei (je nach dem wie du willst)
}
//angenommen dein Frame hat eine Breite von 500 pixel
if(figur.getX()>500)//fragt ob die X-Position der Figur zu weit rechts ist 
{
//Code, z.B. bewege die Figur ein wenig nach unten oder das Spiel ist vorbei (je nach dem wie du willst)
}
//bei oben und unten lauten dann die if's:
if(figur.getY()<0)//zuweit unten
//angenommen dein Frame hat eine Höhe von 400 pixel
if(figur.getY()>400)//zuweit oben[/Java]
hoff ich konnte helfen


----------



## Koti (6. Apr 2015)

DieKeksmaffia hat gesagt.:


> Ich habe bereits ein 2D Spiel (auch wenn es echt Müll war) programmiert,
> und zunächst einfach in der Methode bewegen() abgefragt ob die Figur den Bildschirm verlassen hat:
> [Java]
> if(figur.getX()<0)//fragt ob die X-Position der Figur zu weit links (unter 0 und 0 die der Rand des Frames)
> ...



Danke, ich habe es nun so gelöst das ich bei mir "lauf" gleich -1 Setze nur aus irgendeinem Grund wird die Figur zurückgestoßen.
Und Wenn ich es auf 0 setze wird sie nur verlangsamt :/
Kann da vielleicht nochmal jemand reinschauen:

```
public void bewegen(){
		if(lauf != -1){
			if(left + lauf <=5000){
				left += lauf;
			}else {
				X_Bild += lauf;
				nx += lauf;
				nx2 += lauf;
			}
		}else {
			if(left + lauf > -250){
				left += lauf;
				lauf = -1;
				}			
			}
		if(lauf != 2){
			if(left + lauf > 600){
				lauf = -1;
				}			
			}
		}
```


----------



## Androbin (7. Apr 2015)

DieKeksmaffia hat gesagt.:


> ```
> ...
> //bei oben und unten lauten dann die if's:
> if(figur.getY()<0)//zuweit unten
> ...


Nein, in Java liegt der Koordinatenursprung oben links.


----------

