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);
}
}