Java:
	
	import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.Timer;
public class Frame extends JFrame implements ActionListener , KeyListener {
final private int screenWitdh = 800;
final private int screenHeight = 500;
private int maxJumpHeight;
private int jumpHeight;
private int gravitation;
private int spielerSpeed;
private int senkRechteGeschwindkeit;
private boolean isJumping;
private boolean isMovingLeft;
private boolean isMovingRight;
private boolean isShooting;
private Timer timer;
private List<Projektil> projektile;
Spieler spieler;   
Boden boden;   
Decke decke;
SeiteLinks links;
SeiteRechts rechts;
public Frame() {
    this.setSize(screenWitdh, screenHeight);
    this.setTitle("Shooting Game");
    this.setLayout(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.addKeyListener(this);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    
    spieler = new Spieler(50 , 50 , 50 , 350);
    boden = new Boden(200, 800 , 0 , 400);
    decke =  new Decke(50 , 800 , 0 , 0);
    links = new SeiteLinks(355 ,10 , 5 , 50);
    rechts = new SeiteRechts(355 ,  50 , 785, 50);
    
    senkRechteGeschwindkeit = 15;
    maxJumpHeight = 50;
    jumpHeight = 20;
    gravitation = 20;
    spielerSpeed = 30;
    timer = new Timer(10, this);
    timer.start();
     projektile = new ArrayList<>();
}
    
    
public void paint(Graphics g) {
      super.paint(g);
      Graphics2D g2D = (Graphics2D) g;
    
      g2D.setPaint(Color.BLUE);
      g2D.drawRect(0, 0, screenWitdh, screenHeight);
      g2D.fillRect(0, 0, screenWitdh, screenHeight);
      g2D.setPaint(Color.BLACK);
      g2D.drawRect(spieler.getSpielerX(), spieler.getSpielerY(), spieler.getBreiteSpieler(), spieler.getHöheSpieler());
      g2D.fillRect(spieler.getSpielerX(), spieler.getSpielerY(), spieler.getBreiteSpieler(), spieler.getHöheSpieler());
      g2D.setPaint(Color.GREEN);
      g2D.drawRect(boden.getBodenx(), boden.getBodenY(), boden.getBreite(), boden.getHöhe());;
      g2D.fillRect(boden.getBodenx(), boden.getBodenY(), boden.getBreite(), boden.getHöhe());;
      g2D.setPaint(Color.WHITE);
      g2D.drawRect(decke.getDeckeX(), decke.getDeckeY(), decke.getBreite(), decke.getHöhe());
      g2D.fillRect(decke.getDeckeX(), decke.getDeckeY(), decke.getBreite(), decke.getHöhe());
      
      g2D.setPaint(Color.GREEN);
      g2D.drawRect(links.getSeiteLinksX(), links.getSeiteLinksY(), links.getBreite(), links.getHöhe());
      g2D.fillRect(links.getSeiteLinksX(), links.getSeiteLinksY(), links.getBreite(), links.getHöhe());
      
       g2D.setPaint(Color.GREEN);
      g2D.drawRect(rechts.getSeiteRechtsX(), rechts.getSeiteRechtsY(), rechts.getBreite(), rechts.getHöhe());
      g2D.fillRect(rechts.getSeiteRechtsX(), rechts.getSeiteRechtsY(), rechts.getBreite(), rechts.getHöhe());
    
      g2D.setPaint(Color.RED);
      for (Projektil projektil : projektile) {
          g2D.drawRect(projektil.getX(), projektil.getY(), projektil.getBreite(), projektil.getHöhe());
          g2D.fillRect(projektil.getX(), projektil.getY(), projektil.getBreite(), projektil.getHöhe());
      }
}
    @Override
    public void actionPerformed(ActionEvent e) {
        timer.start();
        Springen();
        MoveLeft();
        MoveRight();
        Kolision();   
        repaint();
       shoot();
    }
    @Override
    public void keyTyped(KeyEvent e) {
        if(e.getKeyChar() == KeyEvent.VK_A) {
        isMovingLeft = false;
        
        }
        if(e.getKeyChar() == KeyEvent.VK_D) {
        isMovingRight = false;
        }
        if(e.getKeyChar() == KeyEvent.VK_SPACE) {
        isJumping = true;   
        }
        if(e.getKeyChar() == KeyEvent.VK_ENTER) {
        isShooting = true;   
        }
        
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyChar() == KeyEvent.VK_A) {
            isMovingLeft = true;   
            
        }
            if(e.getKeyChar() == KeyEvent.VK_D) {
            isMovingRight = true;
            
            }
            if(e.getKeyChar() == KeyEvent.VK_SPACE) {
            isJumping = true;   
            
            }
            if(e.getKeyChar() == KeyEvent.VK_ENTER) {
            isShooting = true;   
            
            }
             repaint();   
    }
        
    
    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyChar() == KeyEvent.VK_A) {
            isMovingLeft = false;
                
        }
            if(e.getKeyChar() == KeyEvent.VK_D) {
            isMovingRight = false;
            }
            if(e.getKeyChar() == KeyEvent.VK_SPACE) {
            isJumping = false;
            }
            if(e.getKeyChar() == KeyEvent.VK_ENTER) {
            isShooting = true;
            }
        
    }
    
public void Springen() {
    
if(isJumping ) {
spieler.setspielerY(spieler.getSpielerY() - jumpHeight - gravitation);
}
}
    
            
public void MoveLeft() {
    
if(isMovingLeft) {
    spieler.setspielerX(spieler.getSpielerX() -  spielerSpeed);
System.out.println("linksgedrückt");
}
}
public void MoveRight() {
    timer.start();
    if (isMovingRight) {
        spieler.setspielerX(spieler.getSpielerX() + spielerSpeed);
   System.out.println("rechtsgedrückt");
    }
    
}
public void Kolision() {
if( spieler.getSpielerY() < decke.getDeckeY() || spieler.getSpielerX() < decke.getDeckeX()) {
System.out.println("Du hast die decke getroffen");   
spieler.setspielerY(350);
}
if(spieler.getSpielerX() < links.getSeiteLinksX() && spieler.getSpielerX() > rechts.getSeiteRechtsX()) {
spieler.setspielerY(350);
}
}
// das ist bullshit das ist von chatgpt
public void shoot() {
    int projektilX = spieler.getSpielerX() + spieler.getBreiteSpieler() / 2;
    int projektilY = spieler.getSpielerY() + spieler.getHöheSpieler() / 2;
    int projektilSpeed = 5;
    Projektil projektil = new Projektil(projektilX, projektilY, projektilSpeed);
    projektile.add(projektil);
}
} 
				 
 
		 
 
		 
 
		 
 
		