Compare commits

..

37 Commits

Author SHA1 Message Date
d707be3e4c Namen in die Kommentare 2022-02-10 13:16:28 +01:00
88b0ba5d05 Code Cleaning 2022-02-10 08:47:16 +01:00
4f2eeb5040 Gravitation & Velocity Jump Fix &
Pipe anpassen
2022-02-10 08:35:39 +01:00
a60eb17230 Gravitation & Velocity Jump Fix &
Pipe anpassen
2022-02-10 08:33:07 +01:00
0f2352e003 Gravitation & Velocity Jump Fix &
Pipe anpassen
2022-02-10 08:32:00 +01:00
e21b4c0f2d Gravitation & Velocity Jump Fix 2022-02-09 14:55:20 +01:00
d835ec3460 Unnötige Variable entfernt 2022-02-09 14:02:01 +01:00
635aef047a Kleine Bugfixes - Punkte werden beim Pause-Button ins Hauptmenü zurückgesetzt & ESC-Taste im Spiel fixen 2022-02-09 13:56:56 +01:00
f2f88c404d Zeilenlänge anpassen nach Coding-Guidelines 2022-02-08 11:09:45 +01:00
8f5a4e6a74 Kollision Decke/Boden 2022-02-08 11:03:52 +01:00
fcb650ffef Verbesserung einer Formatierungsfunktion 2022-02-07 15:01:37 +01:00
79db8a088a Highscores-Überschrift wird geändert 2022-02-07 11:24:04 +01:00
b37993d9a2 Labels für Hinweise zu Namens/Kürzelkonventionen eingefügt 2022-01-31 10:32:18 +01:00
1f0fedeaac Korrekturen am Neustart-Button, Hauptmenü-Button aus dem End-Screen, Fix der INSERT-Abfrage 2022-01-25 13:39:53 +01:00
43ba9226e2 Fix für den Restart-Button - mehrere Neustarts ergeben keine Fehler 2022-01-25 12:57:24 +01:00
3610c3fb7a End-Screen - anfang des Eingbindens des Spiel-Neustarts & Persönliche Highscores 2022-01-25 12:45:32 +01:00
98bcfec0fd Endscreen formatieren 2022-01-25 11:42:39 +01:00
af010b5bd8 Current Score Zähler einbauen 2022-01-25 10:58:35 +01:00
b5daf848c4 Movement über Keys einbauen (W/S) 2022-01-25 10:44:35 +01:00
46bf46f92c Kollisionsabfrage 2022-01-24 15:11:57 +01:00
5894de5567 Kollisionsabfrage 2022-01-24 15:07:01 +01:00
680a80d210 kliene Änderung 2022-01-24 13:40:52 +01:00
1cd92601e1 kleine Änderungen 2022-01-24 13:39:55 +01:00
241bd0f85b z-Order im Spielscreen 2022-01-24 12:00:13 +01:00
e818be6c17 WeiterspielenButton 2022-01-24 09:40:55 +01:00
8efcc29244 Röhrenbewegung 2022-01-23 20:44:01 +01:00
49e63e3d3b Pipes Bewegung 2022-01-22 19:36:59 +01:00
e2457886c8 Hinzufügen FormatingClass 2022-01-21 15:25:44 +01:00
a348fb03a5 Endscreen fertiggestellt, nur noch nicht eingebungen - Button-Clicks existieren 2022-01-18 14:22:01 +01:00
380d469010 Endscreen wahrscheinlich fertig - aber noch keine Einbindung 2022-01-18 13:56:06 +01:00
775085a1ab Anfänge des EndScreens - Methode für das Anzeigen der persönlichen Highscores 2022-01-18 12:06:36 +01:00
e494439b1c Kleine Bugfixes mit Labeltexten 2022-01-18 11:19:30 +01:00
c55f6866b8 aktueller Stand 2022-01-18 09:58:20 +01:00
0b45380f15 Überprüfungen Kürzel und Name - Abfragen im Code enthalten 2022-01-11 14:28:12 +01:00
ac3b2908f3 Überprüfungen Kürzel und Name 2022-01-11 14:15:38 +01:00
a9f80b6f6e Funktion fürs einfügen in die DB 2022-01-11 14:00:23 +01:00
057d3c3b50 Highscores einfügen & Score im Spiel 2022-01-11 13:43:27 +01:00
35 changed files with 866 additions and 718 deletions

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4" />

View File

@@ -3,4 +3,9 @@
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="15" />
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="Happy_Bird.main" options="--add-exports java.base/jdk.internal.module=com.example.happy_bird" />
</option>
</component>
</project>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -1,21 +0,0 @@
package com.example.happy_bird;
import java.awt.*;
import java.awt.image.ImageObserver;
public class Bird extends SpielObjekt {
public Bird(int xWert, int yWert) {
super(xWert, yWert);
}
@Override
public void tick() {
}
@Override
public void render(Graphics2D g, ImageObserver obs) {
}
}

View File

@@ -0,0 +1,239 @@
package com.example.happy_bird;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.scene.text.TextAlignment;
public class FormatingClass {
/***
* leerer Konstruktor
*/
public FormatingClass() { }
/*** Alteköster
* Formatiert alle Buttons und fügt sie der Pane hinzu
* @param buttons ButtonArray mit allen Arrays
* @param pane Pane, auf der die Buttons angezeigt werden
*/
public void buttonsFormating(Button[] buttons, Pane pane) {
for (Button button : buttons) {
button.setPrefSize(200, 50);
button.setStyle("-fx-background-color: #e86000; " +
"-fx-text-fill: #FFFFFF; " +
"-fx-font-size: 20px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #FFFFFF;" +
"-fx-font-weight: bold;" +
"-fx-border-radius: 15px;" +
"-fx-background-radius: 20px;");
pane.getChildren().add(button);
}
}
/*** Alteköster
* Formatiert alle kleinen Labels (keine Überschrift) und fügt sie der Pane hinzu
* @param labels LabelArray mit allen Labels
* @param pane Pane, auf der die Labels angezeigt werden
*/
public void labelsFormating(Label[] labels, Pane pane) {
for (Label label : labels) {
label.setPrefSize(250, 50);
label.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 20px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-font-weight: bold;" +
"-fx-alignment: center;" +
"-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;");
pane.getChildren().add(label);
label.setVisible(false);
}
}
/*** Alteköster
* Formatiert alle Überschriften-Labels und fügt sie der Pane hinzu
* @param labels LabelArray mit Überschriften-Labels
* @param pane Pane, auf der die Labels angezeigt werden
*/
public void headlineFormating(Label[] labels, Pane pane) {
for (Label label : labels) {
label.setPrefSize(300, 75);
label.setTextAlignment(TextAlignment.CENTER);
label.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 35px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-font-weight: bold;" +
"-fx-alignment: center;" +
"-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;");
pane.getChildren().add(label);
}
}
/*** Alteköster
* Formatiert alle Textfelder und fügt sie der Pane hinzu
* @param textfields TextFieldArray mit allen Textfeldern
* @param pane Pane, auf der die Textfelder angezeigt werden
*/
public void textfieldsFormating(TextField[] textfields, Pane pane) {
for (TextField field : textfields) {
field.setPrefSize(250, 50);
field.setStyle("-fx-font-size: 20px;" +
"-fx-font-weight: bold;");
pane.getChildren().add(field);
field.setVisible(false);
}
}
/*** Alteköster
* Formatiert den soundSlider und fügt ihn der Pane hinzu
* @param slider SoundSlider
* @param pane Pane, auf der der Slider angezeigt wird
*/
public void soundSliderFormating(Slider slider, Pane pane) {
slider.setPrefSize(200, 5);
slider.setLayoutX(300);
slider.setLayoutY(295);
pane.getChildren().add(slider);
slider.setVisible(false);
}
/*** Alteköster
* Formatiert den PauseScreen
*/
public void pauseScreenFormating(Pane pause, Label pauseMenuLabel, Label soundLabelPause) {
/*pause-Pane formatieren*/
pause.setPrefSize(400, 400);
pause.setLayoutX(200);
pause.setLayoutY(150);
pause.setStyle("-fx-background-color: #DED894; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-border-radius: 15px;" +
"-fx-background-radius: 20px;");
/*pauseMenuLabel formatieren*/
pauseMenuLabel.setPrefSize(300,50);
pauseMenuLabel.setLayoutX(50);
pauseMenuLabel.setLayoutY(10);
pauseMenuLabel.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 35px; " +
"-fx-font-weight: bold;" +
"-fx-alignment: center;");
/*soundLabelPause formatieren*/
soundLabelPause.setPrefSize(100, 50);
soundLabelPause.setLayoutX(150);
soundLabelPause.setLayoutY(100);
soundLabelPause.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 20px; " +
"-fx-font-weight: bold;" +
"-fx-alignment: center;");
}
/*** Pape
* formatiert den End-Screen
*/
public void endScreenFormating(Pane endScreen, Label endScreenHeadline, Label currentScoreEndscreenLabel) {
/*Endscreen-Pane formatieren*/
endScreen.setPrefSize(400, 500);
endScreen.setLayoutX(200);
endScreen.setLayoutY(100);
endScreen.setStyle("-fx-background-color: #DED894; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-border-radius: 15px;" +
"-fx-background-radius: 20px;");
endScreenHeadline.setPrefSize(300,50);
endScreenHeadline.setLayoutX(50);
endScreenHeadline.setLayoutY(10);
endScreenHeadline.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 35px; " +
"-fx-font-weight: bold;" +
"-fx-alignment: center;");
currentScoreEndscreenLabel.setPrefSize(300,50);
currentScoreEndscreenLabel.setLayoutX(50);
currentScoreEndscreenLabel.setLayoutY(100);
currentScoreEndscreenLabel.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 35px; " +
"-fx-font-weight: bold;" +
"-fx-alignment: center;");
}
/*** Alteköster
* Erstellt ein neues BackgroundImage aus einer Source für ein .png
* @param img Source eines .png
* @return backgroundImage
*/
public BackgroundImage backgroundFormating(String img) {
/*Bild für Hintergrund erstellen:*/
Image image = new Image(img);
/*Hintergrund erstellen:*/
BackgroundImage backgroundImage = new BackgroundImage(
image,
BackgroundRepeat.NO_REPEAT,
BackgroundRepeat.NO_REPEAT,
BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT
);
return backgroundImage;
}
/*** Alteköster
* Formatiert die Buttons, mit denen man das Hintergrundbild ändern kann
* @param backgroundButtons Array der Buttons
* @param pane Pane, auf der die Buttons angezeigt werden sollen
*/
public void backgroundButtonsFormating(Button[] backgroundButtons, Pane pane) {
int xPosition = 150;
for(int i=0; i<backgroundButtons.length; i++) {
backgroundButtons[i].setPrefSize(200, 175);
backgroundButtons[i].setLayoutY(400);
backgroundButtons[i].setLayoutX(xPosition);
xPosition += 300;
/*Source als String*/
String img = "file:src/main/resources/com/example/happy_bird/pics/Background"+i+"button.png";
/*Hintergrund zu Pane hinzufügen:*/
Background background = new Background(backgroundFormating(img));
backgroundButtons[i].setBackground(background);
backgroundButtons[i].setStyle("-fx-border-width: 7px;" +
"-fx-border-insets: -7;" +
"-fx-border-color: #FFFFFF;" +
"-fx-border-radius: 15px;");
pane.getChildren().add(backgroundButtons[i]);
}
}
}

View File

@@ -1,26 +0,0 @@
package com.example.happy_bird;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Slider;
import javafx.scene.image.*;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
import java.awt.*;
import java.io.IOException;
public class GameScreen extends HappyBirdMain
{
}

View File

@@ -1,9 +0,0 @@
package com.example.happy_bird;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class HappyBird extends HappyBirdMain {
}

View File

@@ -1,23 +0,0 @@
package com.example.happy_bird;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 320, 240);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}

View File

@@ -1,14 +0,0 @@
package com.example.happy_bird;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class HelloController {
@FXML
private Label welcomeText;
@FXML
protected void onHelloButtonClick() {
welcomeText.setText("Welcome to JavaFX Application!");
}
}

View File

@@ -1,5 +1,6 @@
package com.example.happy_bird;
/** Pape */
import java.sql.*;
public class MariaDB
{

View File

@@ -1,104 +0,0 @@
package com.example.happy_bird;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
public class Pipe extends SpielObjekt {
private java.awt.Image lowerPipe;
// private java.awt.Image lowerPipe = new java.awt.Image("file:src/main/resources/com/example/happy_bird/pics/PipeUnten.png", 86, 300, false, false);
private int xWert = 0, yWert = 0;
public Pipe(int xWert, int yWert) {
super(xWert, yWert);
lowerPipe = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("com/example/happy_bird/"));
//scale lowerPipe(initialWidth, initialHeight)
}
public void scaleTopPipe(int width, int height) {
lowerPipe = lowerPipe.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
public Image getPipe() {
return getPipe();
}
/**
* Method um die Breite des BottomPipe-Objekts zu erhalten
* @return int
*/
public int getWidth(int width) {
return lowerPipe.getWidth(null);
}
/**
* Methode um die Höhe des BottomPipe-Objekts zu erhalten
* @return int
*/
public int getHeight(int height) {
return lowerPipe.getHeight(null);
}
/**
* Methode zum Festlegen der x-Position des BottomPipe-Objekts
* @param x
*/
public void setX(int x) {
xWert = x;
}
/**
* Methode zum Abrufen der x-Position des BottomPipe-Objekts
* @return int
*/
public int getX() {
return xWert;
}
/**
* Methode zum Festlegen der y-Position des BottomPipe-Objekts
* @param y
*/
public void setY(int y) {
yWert = y;
}
/**
* Methode zum Abrufen der y-Position des BottomPipe-Objekts
* @return int
*/
public int getY() {
return yWert;
}
/**
* Methode zum Erfassen eines Rechtecks, das das Bild des BottomPipe umreißt
* @return Rechteck, das die Position des BottomPipe auf dem Bildschirm umreißt
*/
public Rectangle getRectangle() {
return (new Rectangle(xWert, yWert, lowerPipe.getWidth(null), lowerPipe.getHeight(null)));
}
/**
* Methode zum Erfassen eines BufferedImage, das das Bildobjekt der TopPipe darstellt
* @return TopPipe's BufferedImage-Objekt
*/
public BufferedImage getBI() {
BufferedImage bi = new BufferedImage(lowerPipe.getWidth(null), lowerPipe.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.getGraphics();
g.drawImage(lowerPipe, 0, 0, null);
g.dispose();
return bi;
}
@Override
public void tick() {
}
@Override
public void render(Graphics2D g, ImageObserver obs) {
}
}

View File

@@ -1,103 +0,0 @@
package com.example.happy_bird;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Image;
import java.awt.image.BufferedImage;
public class PipeTop {
//global variables
private Image topPipe;
private int xLoc = 0, yLoc = 0;
public PipeTop(int initialWidth, int initialHeight) {
topPipe = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/tube_top.png"));
scaleTopPipe(initialWidth, initialHeight);
}
/**
* Methode zum Skalieren des topPipe-Sprites in die gewünschten Dimensionen
* @param width Die gewünschte Breite der topPipe
* @param height Die gewünschte Höhe der topPipe
*/
public void scaleTopPipe(int width, int height) {
topPipe = topPipe.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
/**
* Getter-Methode für das TopPipe-Objekt.
* @return-Image
*/
public Image getPipe() {
return topPipe;
}
/**
* Methode zum Abrufen der Breite des TopPipe-Objekts
* @return int
*/
public int getWidth() {
return topPipe.getWidth(null);
}
/**
* Methode, um die Höhe des TopPipe-Objekts zu erhalten
* @return int
*/
public int getHeight() {
return topPipe.getHeight(null);
}
/**
* Methode zum Festlegen der x-Position des TopPipe-Objekts
* @param x
*/
public void setX(int x) {
xLoc = x;
}
/**
* Methode zum Abrufen der x-Position des TopPipe-Objekts
* @return int
*/
public int getX() {
return xLoc;
}
/**
* Methode zum Festlegen der y-Position des TopPipe-Objekts
* @param y
*/
public void setY(int y) {
yLoc = y;
}
/**
* Methode zum Abrufen der y-Position des TopPipe-Objekts
* @return int
*/
public int getY() {
return yLoc;
}
/**
* Methode zum Erfassen eines Rechtecks, das das Bild der TopPipe umreißt
* @return Rechteck, das die Position der TopPipe auf dem Bildschirm umreißt
*/
public Rectangle getRectangle() {
return (new Rectangle(xLoc, yLoc, topPipe.getWidth(null), topPipe.getHeight(null)));
}
/**
* Methode zum Erfassen eines BufferedImage, das das Bildobjekt der TopPipe darstellt
* @return BufferedImage-Objekt von TopPipe
*/
public BufferedImage getBI() {
BufferedImage bi = new BufferedImage(topPipe.getWidth(null), topPipe.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.getGraphics();
g.drawImage(topPipe, 0, 0, null);
g.dispose();
return bi;
}
}

View File

@@ -1,80 +0,0 @@
package com.example.happy_bird;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.ImageObserver;
public abstract class SpielObjekt {
private int xWert;
private int yWert;
private int fxWert;
private int fyWert;
private int breite;
private int hoehe;
private Image bild;
public SpielObjekt(int xWert, int yWert) {
this.xWert = xWert;
this.yWert = yWert;
}
public int getyWert() {
return yWert;
}
public void setyWert(int yWert) {
this.yWert = yWert;
}
public int getxWert() {
return xWert;
}
public void setxWert(int xWert) {
this.xWert = xWert;
}
public int getFxWert() {
return fxWert;
}
public void setFxWert(int fxWert) {
this.fxWert = fxWert;
}
public int getFyWert() {
return fyWert;
}
public void setFyWert(int fyWert) {
this.fyWert = fyWert;
}
public int getBreite() {
return breite;
}
public void setBreite(int breite) {
this.breite = breite;
}
public int getHoehe() {
return hoehe;
}
public void setHoehe(int hoehe) {
this.hoehe = hoehe;
}
public Image getBild() {
return bild;
}
public void setBild(Image bild) {
this.bild = bild;
}
public abstract void tick();
public abstract void render(Graphics2D g, ImageObserver obs);
}

View File

@@ -1,10 +0,0 @@
package com.example.happy_bird;
public class TopClass {
private static final int PIPE_GAP = 0;
private static final int PIPE_WIDTH = 0;
}

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>
<VBox alignment="CENTER" spacing="20.0" xmlns:fx="http://javafx.com/fxml"
fx:controller="com.example.happy_bird.HelloController">
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</padding>
<Label fx:id="welcomeText"/>
<Button text="Hello!" onAction="#onHelloButtonClick"/>
</VBox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB