Files
muehle/Muehle.java
2025-10-13 12:42:00 +02:00

243 lines
7.0 KiB
Java

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;
import javafx.stage.Window;
import javafx.scene.shape.Shape;
import java.util.ArrayList;
import javafx.scene.control.Label;
import javafx.scene.shape.Line;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.scene.shape.Circle;
import javafx.geometry.Pos;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.layout.BackgroundFill;
/**
*
* Beschreibung
*
* @version 1.0 vom 25.09.2025
* @author
*/
public class Muehle extends Application {
// start attributes
// end attributes
private Label lTop = new Label();
private Pane game_board;
private Game game;
public void start(Stage primaryStage) {
VBox root = new VBox();
game = new Game();
// lTop.setMaxWidth(1080);
HBox label_box = new HBox(lTop);
label_box.setAlignment(Pos.CENTER);
lTop.setFont(Font.font("Roboto",FontWeight.BOLD,40));
game_board = draw_game_board();
root.getChildren().addAll(label_box,game_board);
root.setStyle("-fx-background-color: rgb(255, 190, 0)");
Scene scene = new Scene(root, 1080, 820);
game.start(game_board,lTop);
drawPlayerChips();
//lTop.setAlignment();
setTopLabel("Test Label");
primaryStage.setOnCloseRequest(e -> System.exit(0));
primaryStage.setTitle("Muehle");
primaryStage.setScene(scene);
primaryStage.show();
} // end of public Muehle
public void setTopLabel(String value) {
lTop.setText(value);
}
// start methods
public Pane draw_game_board() {
Color bg_color = Color.rgb(255,255,0);
Color stroke_color = Color.RED;
Double circle_offset = 100.0;
ArrayList<Shape> shapes = new ArrayList<Shape>();
Pane board = new Pane();
double topLeftX = (1080/2)-400;
double topLeftY = 720-(720/2)-300;
double topRightX =(1080/2)+200;
double topRightY = (720/2)+300;
Rectangle bg = new Rectangle(topLeftX,topLeftY,topRightX,topRightY);
bg.setFill(bg_color);
shapes.add(bg);
Rectangle circle1 = new Rectangle(topLeftX,topLeftY,topRightX,topRightY);
circle1.setStroke(stroke_color);
circle1.setStrokeWidth(10);
circle1.setFill(new Color(0.0,0.0,0.0,0.0));
shapes.add(circle1);
Rectangle circle2 = new Rectangle(topLeftX + 100,topLeftY + 100,topRightX - 200,topRightY - 200);
circle2.setStroke(stroke_color);
circle2.setStrokeWidth(10);
circle2.setFill(new Color(0.0,0.0,0.0,0.0));
shapes.add(circle2);
Rectangle circle3 = new Rectangle(topLeftX + 200,topLeftY + 200,topRightX - 400,topRightY - 400);
circle3.setStroke(stroke_color);
circle3.setStrokeWidth(10);
circle3.setFill(new Color(0.0,0.0,0.0,0.0));
shapes.add(circle3);
Line line1 = new Line((topLeftX+topRightX) /2 + topLeftX/2,topLeftY,(topLeftX+topRightX) /2 + topLeftX/2,250);
line1.setStroke(stroke_color);
line1.setStrokeWidth(10);
shapes.add(line1);
Line line2 = new Line((topLeftX+topRightX) /2 + topLeftX/2,topRightY+50,(topLeftX+topRightX) /2 + topLeftX/2,520);
line2.setStroke(stroke_color);
line2.setStrokeWidth(10);
shapes.add(line2);
Line line3 = new Line(topLeftX,topRightY/2+50,topLeftX+200,topRightY/2+50);
line3.setStroke(stroke_color);
line3.setStrokeWidth(10);
shapes.add(line3);
Line line4 = new Line(topLeftX+550,topRightY/2+50,topLeftX+200+540,topRightY/2+50);
line4.setStroke(stroke_color);
line4.setStrokeWidth(10);
shapes.add(line4);
for (int i = 0; i < shapes.size() ;i++ ) {
board.getChildren().add(shapes.get(i));
} // end of for
drawMuehleButtons(board,topLeftX,topLeftY,topRightX,topRightY);
return board;
}
public void drawMuehleButtons(Pane board, double topLeftX,double topLeftY,double topRightX,double topRightY) {
ArrayList<MuehleButton> buttons = new ArrayList<MuehleButton>();
int id_count = 0;
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,0,i,topLeftX,topLeftY+ i*325,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,2,i,topRightX + 140,topLeftY+ i*325,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,0,i,topLeftX + 100,topLeftY+ i*220 +100,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,2,i,topRightX +40,topLeftY+ i*220 +100,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100 + 360,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,0,i,topLeftX +200,topLeftY+ i*130 +200,game);
id_count++;
buttons.add(button);
}
for (int i = 0; i < 3; i++) {
MuehleButton button = new MuehleButton(id_count,2,i,topLeftX +540,topLeftY+ i*130 +200,game);
id_count++;
buttons.add(button);
}
game.buttons.addAll(buttons);
for (int i = 0; i < buttons.size() ;i++ ) {
board.getChildren().add(buttons.get(i).getShape());
}
}
public void drawPlayerChips() {
Circle[] white_player_chips = new Circle[9];
Circle[] black_player_chips = new Circle[9];
Color stroke_color = Color.BLACK;
double stroke_width = 2;
double radius = 20;
for (int i = 0; i < 9; i++) {
white_player_chips[i] = new Circle(radius*2 +20,50*i+ 200,radius);
white_player_chips[i].setStroke(stroke_color);
white_player_chips[i].setStrokeWidth(stroke_width);
white_player_chips[i].setFill(Color.WHITE);
addShape(white_player_chips[i]);
}
for (int i = 0; i < 9; i++) {
black_player_chips[i] = new Circle((1080-20) - radius*2,50*i+ 200,radius);
black_player_chips[i].setStroke(stroke_color);
black_player_chips[i].setStrokeWidth(stroke_width);
black_player_chips[i].setFill(Color.BLACK);
addShape(black_player_chips[i]);
}
game.white_player_chips = white_player_chips;
game.black_player_chips = black_player_chips;
}
public void addShape(Shape newShape) {
game_board.getChildren().add(newShape);
}
// end methods
} // end of class Muehle