//Der ActionListener sorgt dafür, dass Funktionen ausgeführt werden können.
public class Level1 extends JPanel implements ActionListener{
//Variablen werden festgelgt.
Timer time;
Image Level1_Hintergrund;
Image Charakter_links;
Image Charakter_rechts;
Image img4;
Image Fragezeichenblock;
Image Block;
Image Taler;
int key;
int X_Bild;
int lauf;
//X Koordinate des Charakters
static int left = 0;
int nx, nx2;
int anzahl;
int anzahl2;
int panda_y = 235;
Block block1, block2, block3, block4, block5, block6, block7, block8, block9, block10;
static Taler Taler1, Taler2, Taler3;
static int coin_score;
//Das erste Level wird erstellt.
public Level1(){
nx = 0;
//Länge des Bildes
nx2 = 690;
key = 0;
lauf = 0;
setFocusable(true);
//Dem Hintergrund wird ein Bild zugewiesen.
ImageIcon u = new ImageIcon(getClass().getResource("background.jpg"));
Level1_Hintergrund = u.getImage();
//Dem Charakter wird ein Bild zugewiesen.
ImageIcon k = new ImageIcon(getClass().getResource("charlinks.jpg"));
Charakter_links = k.getImage();
//Dem Charakter wird ein Bild zugewiesen.
ImageIcon rechts = new ImageIcon(getClass().getResource("charrechts.jpg"));
Charakter_rechts = rechts.getImage();
//Dem Charakter wird ein Bild zugewiesen.
ImageIcon Normal = new ImageIcon(getClass().getResource("pandavorne.jpg"));
img4 = Normal.getImage();
//Fragezeichenblock wird gezeichnet.
ImageIcon Fragezeichen = new ImageIcon(getClass().getResource("BlockFragezeichen.jpg"));
Fragezeichenblock = Fragezeichen.getImage();
//Ein Block wird gezeichnet.
ImageIcon p = new ImageIcon(getClass().getResource("Block.jpg"));
Block = p.getImage();
//Bild für Taler
ImageIcon t = new ImageIcon(getClass().getResource("Taler.png"));
Taler = t.getImage();
//Der KeyListener wird hinzugefügt, um auf Tastendrücke zu überprüfen.
addKeyListener(new AL());
//Blöcke werden in ihrer Größe, Farbe und Position bestimmt.
block1 = new Block(0,110,50,50);
block2 = new Block(1000,270,50,50);
block3 = new Block(1100,220,50,50);
block4 = new Block(2500,110,50,50);
block5 = new Block(3250,110,50,50);
block6 = new Block(4000,110,50,50);
block7 = new Block(4750,110,50,50);
block8 = new Block(5500,110,50,50);
block9 = new Block(6250,110,50,50);
block10 = new Block(7000,110,50,50);
//
Taler1 = new Taler(500,100,100,100);
Taler2 = new Taler(4500,100,100,100);
Taler3 = new Taler(6500,100,100,100);
//Dem Charakter wird 'Springen' als Eigenschaft zugewiesen.
Sprung sprung = new Sprung();
//Ein Timer hinzugefügt, um den Hintergrund alle 5 Sekunden zu aktualisieren.
time = new Timer(5,this);
time.start();
}
//Sobald der Charakter sich von der ursprünglichen Position bewegt, wird er neu gezeichnet.
public void actionPerformed(ActionEvent l1){
bewegen();
panda_y = Sprung.Sprungposition;
repaint();
}
public void paint(Graphics g){
super.paint(g);
Graphics2D f2 =(Graphics2D)g;
//510: Punkt wo der Hintergrund weiß wäre 2350: doppelte Länge des Bildes
if(getX_Bild() == 510 + (anzahl * 2350)){
anzahl += 1;
nx = 0;
}
//
if(getX_Bild() == 1690 + (anzahl2 * 2350)){
anzahl2 += 1;
nx2 = 0;
}
//
if(getX_Bild() >= 510){
f2.drawImage(Level1_Hintergrund, 685 - nx, 0, null);
}
//Das Hintergrundbild wird gezeichnet.
f2.drawImage(Level1_Hintergrund, 685 - nx2, 0, null);
//Der Charakter wird gezeichnet.
f2.drawImage(img4, left, panda_y, null);
//linke Taste
if(lauf==-5){
f2.drawImage(Charakter_links, left, panda_y, null);
}
//Rechte Taste
else if(lauf==5){
f2.drawImage(Charakter_rechts, left, panda_y, null);
}
//
//Die Blöcke werden gezeichnet.
f2.drawImage(Fragezeichenblock, block1.getX_Block() - getX_Bild(), block1.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block2.getX_Block() - getX_Bild(), block2.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block3.getX_Block() - getX_Bild(), block3.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block4.getX_Block() - getX_Bild(), block4.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block5.getX_Block() - getX_Bild(), block5.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block6.getX_Block() - getX_Bild(), block6.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block7.getX_Block() - getX_Bild(), block7.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block8.getX_Block() - getX_Bild(), block8.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block9.getX_Block() - getX_Bild(), block9.getY_Block(), null);
f2.drawImage(Fragezeichenblock, block10.getX_Block() - getX_Bild(), block10.getY_Block(),null);
//Die Taler werden gezeichnet.
f2.drawImage(Taler, Taler1.getX_Taler() - getX_Bild(), Taler1.getY_Taler(), null);
f2.drawImage(Taler, Taler2.getX_Taler() - getX_Bild(), Taler2.getY_Taler(), null);
f2.drawImage(Taler, Taler3.getX_Taler() - getX_Bild(), Taler3.getY_Taler(), null);
coin_score = 0;
//Wird ein Block angesprungen, erhöht der 'Score' sich um 1.
block1.Kollisionsabfrage_für_Coin(block1.getX_Block() - getX_Bild(),block1.getY_Block() + block1.getHeight(), left + (74 - 12), panda_y );{
if(block1.coin() == true){
coin_score += 1;
f2.drawImage(Block, block1.getX_Block() - getX_Bild(), block1.getY_Block(), null);
}
}
block2.Kollisionsabfrage_für_Coin(block2.getX_Block() - getX_Bild(),block2.getY_Block() + block2.getHeight(), left + (74 - 12), panda_y );{
if(block2.coin() == true){
coin_score += 1;
f2.drawImage(Block, block2.getX_Block() - getX_Bild(), block2.getY_Block(), null);
}
}
block3.Kollisionsabfrage_für_Coin(block3.getX_Block() - getX_Bild(),block3.getY_Block() + block3.getHeight(), left + (74 - 12), panda_y );{
if(block3.coin() == true){
coin_score += 1;
f2.drawImage(Block, block3.getX_Block() - getX_Bild(), block3.getY_Block(), null);
}
}
block4.Kollisionsabfrage_für_Coin(block4.getX_Block() - getX_Bild(),block4.getY_Block() + block4.getHeight(), left + (74 - 12), panda_y );{
if(block4.coin() == true){
coin_score += 1;
f2.drawImage(Block, block4.getX_Block() - getX_Bild(), block4.getY_Block(), null);
}
}
block5.Kollisionsabfrage_für_Coin(block5.getX_Block() - getX_Bild(),block5.getY_Block() + block5.getHeight(), left + (74 - 12), panda_y );{
if(block5.coin() == true){
coin_score += 1;
f2.drawImage(Block, block5.getX_Block() - getX_Bild(), block5.getY_Block(), null);
}
}
block6.Kollisionsabfrage_für_Coin(block6.getX_Block() - getX_Bild(),block6.getY_Block() + block6.getHeight(), left + (74 - 12), panda_y );{
if(block6.coin() == true){
coin_score += 1;
f2.drawImage(Block, block6.getX_Block() - getX_Bild(), block6.getY_Block(), null);
}
}
block7.Kollisionsabfrage_für_Coin(block7.getX_Block() - getX_Bild(),block7.getY_Block() + block7.getHeight(), left + (74 - 12), panda_y );{
if(block7.coin() == true){
coin_score += 1;
f2.drawImage(Block, block7.getX_Block() - getX_Bild(), block7.getY_Block(), null);
}
}
block8.Kollisionsabfrage_für_Coin(block8.getX_Block() - getX_Bild(),block8.getY_Block() + block8.getHeight(), left + (74 - 12), panda_y );{
if(block8.coin() == true){
coin_score += 1;
f2.drawImage(Block, block8.getX_Block() - getX_Bild(), block8.getY_Block(), null);
}
}
block9.Kollisionsabfrage_für_Coin(block9.getX_Block() - getX_Bild(),block9.getY_Block() + block9.getHeight(), left + (74 - 12), panda_y );{
if(block9.coin() == true){
coin_score += 1;
f2.drawImage(Block, block9.getX_Block() - getX_Bild(), block9.getY_Block(), null);
}
}
block10.Kollisionsabfrage_für_Coin(block10.getX_Block() - getX_Bild(),block10.getY_Block() + block10.getHeight(), left + (74 - 12), panda_y );{
if(block10.coin() == true){
coin_score += 1;
f2.drawImage(Block, block10.getX_Block() - getX_Bild(), block10.getY_Block(), null);
}
}
Taler1.Kollisionsabfrage_für_Taler(Taler1.getX_Taler() - getX_Bild(),Taler1.getY_Taler() + Taler1.getHeight(), left + (74 - 12), panda_y );{
if(Taler1.coin() == true){
coin_score += 10;
Taler = null;
}
}
Taler2.Kollisionsabfrage_für_Taler(Taler2.getX_Taler() - getX_Bild(),Taler2.getY_Taler() + Taler2.getHeight(), left + (74 - 12), panda_y );{
if(Taler2.coin() == true){
coin_score += 10;
Taler = null;
}
}
Taler3.Kollisionsabfrage_für_Taler(Taler3.getX_Taler() - getX_Bild(),Taler3.getY_Taler() + Taler3.getHeight(), left + (74 - 12), panda_y );{
if(Taler3.coin() == true){
coin_score += 10;
Taler = null;
}
}
//Der 'Score' wird oben links in der Ecke gezeichnet.
f2.drawString("Score: " + coin_score, 10, 15);
}
private int getX_Bild(){
return X_Bild;
}
//Die Lauffunktion wird definiert.
public void bewegen(){
//Wenn nicht nach links gelaufen wird. Also nach rechts gelaufen oder stehen geblieben wird.
if(lauf != -5){
//Solange die X-Koordinate des Charakters plus die Laufgeschwindigkeit kleiner als 100 ist:
if(left + lauf <= 250){
//Bewegt sich der Charakter nach rechts
left += lauf;
}
//Wenn 75 erreicht wurde:
else {
//Bewegt sich das Bild und der Charakter 'steht'.
X_Bild += lauf;
nx += lauf;
nx2 += lauf;
}
}
//Wenn die X_Koordinate des Charakters plus die Laufgeschwindigkeit größer als 0 ist:
else {
if(left + lauf > 200){
//Bewegt sich der Charakter nach vorne
left += lauf;
}
else{
//Bewegt sich das Bild und der Charakter 'steht'.
X_Bild += lauf;
nx += lauf;
nx2 += lauf;
}
}
}
private class AL extends KeyAdapter{
public AL(){
}
public void keyPressed(KeyEvent e){
key = e.getKeyCode();
//Beim Druck der linken Taste, scrollt der Hintergrund nach rechts.
if(key == KeyEvent.VK_LEFT){
lauf = -5;
}
//Beim Druck der rechte Taste, scrollt der Hintergrund nach links.
if(key == (KeyEvent.VK_RIGHT)){
lauf = 5;
}
//Beim Druck der Leertaste, springt der Charakter.
if(key == KeyEvent.VK_SPACE){
Sprung();
}
}
//Werden die Tasten losgelassen, soll der Hintergrund stillstehen.
public void keyReleased(KeyEvent e){
key = e.getKeyCode();
if(key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT){
lauf = 0;
}
}
}
//Der Sprung wird ausgeführt.
public void Sprung(){
Sprung SprungAnimation = new Sprung();
SprungAnimation.start();
}
}