246 lines
7.2 KiB
Java
246 lines
7.2 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,topLeftX,topLeftY+ i*325,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
MuehleButton button = new MuehleButton(id_count,topRightX -230,topLeftY+ i*100,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
MuehleButton button = new MuehleButton(id_count,topRightX + 140,topLeftY+ i*325,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
MuehleButton button = new MuehleButton(id_count,topLeftX + 100,topLeftY+ i*225 +100,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
MuehleButton button = new MuehleButton(id_count,topRightX +40,topLeftY+ i*225 +100,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
for (int i = 0; i < 3; i++) {
|
|
MuehleButton button = new MuehleButton(id_count,topRightX -230,topLeftY+ i*100 + 460,game);
|
|
id_count++;
|
|
buttons.add(button);
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
|
MuehleButton button = new MuehleButton(id_count,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,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
|