22.10
This commit is contained in:
75
Chip.java
Normal file
75
Chip.java
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.shape.Shape;
|
||||||
|
import javafx.scene.shape.Circle;
|
||||||
|
import javafx.event.Event;
|
||||||
|
import javafx.event.EventHandler;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Beschreibung
|
||||||
|
*
|
||||||
|
* @version 1.0 vom 30.09.2025
|
||||||
|
* @author
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Chip {
|
||||||
|
public Game game;
|
||||||
|
|
||||||
|
public Color color;
|
||||||
|
|
||||||
|
public int relativeX;
|
||||||
|
public int relativeY;
|
||||||
|
|
||||||
|
public double absoluteX;
|
||||||
|
public double absoluteY;
|
||||||
|
|
||||||
|
public double radius;
|
||||||
|
|
||||||
|
|
||||||
|
public Circle circle;
|
||||||
|
|
||||||
|
public int id;
|
||||||
|
|
||||||
|
public Chip(int id, int relX, int relY,double absX, double absY, Color color, Game game) {
|
||||||
|
this.id = id;
|
||||||
|
|
||||||
|
relativeX = relX;
|
||||||
|
relativeY = relY;
|
||||||
|
|
||||||
|
absoluteX = absX;
|
||||||
|
absoluteY = absY;
|
||||||
|
|
||||||
|
this.color = color;
|
||||||
|
|
||||||
|
radius = 20;
|
||||||
|
|
||||||
|
this.color = color;
|
||||||
|
circle = new Circle(absoluteX, absoluteY, radius);
|
||||||
|
circle.setFill(this.color);
|
||||||
|
|
||||||
|
this.game = game;
|
||||||
|
circle.addEventHandler(MouseEvent.MOUSE_CLICKED, mouse_clicked);
|
||||||
|
|
||||||
|
}
|
||||||
|
public void setPositionX(double X) {
|
||||||
|
absoluteX = X;
|
||||||
|
circle.setCenterX(absoluteX);
|
||||||
|
}
|
||||||
|
public void setPositionY(double Y) {
|
||||||
|
absoluteY = Y;
|
||||||
|
circle.setCenterY(absoluteY);
|
||||||
|
}
|
||||||
|
public Shape getShape() {
|
||||||
|
return circle;
|
||||||
|
|
||||||
|
}
|
||||||
|
EventHandler<MouseEvent> mouse_clicked = new EventHandler<MouseEvent>() {
|
||||||
|
public void handle(MouseEvent handle) {
|
||||||
|
chip_clicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
public void chip_clicked() {
|
||||||
|
game.chip_clicked(this);
|
||||||
|
}
|
||||||
|
} // end of Chip
|
||||||
316
Game.java
Normal file
316
Game.java
Normal file
@@ -0,0 +1,316 @@
|
|||||||
|
import javafx.scene.shape.Shape;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import javafx.scene.layout.Pane;
|
||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.shape.Circle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Beschreibung
|
||||||
|
*
|
||||||
|
* @version 1.0 vom 30.09.2025
|
||||||
|
* @author
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Game {
|
||||||
|
|
||||||
|
public int[][] win_comb = {{0,3,6},{9,4,12}
|
||||||
|
,{18,5,21},{1,10,19},{22,13,7},{20,15,23},{11,16,14},{2,17,8}
|
||||||
|
,{0,1,2},{9,10,11},{18,19,20},{3,4,5},{12,13,14},{6,7,8},{21,22,23},{15,16,17}
|
||||||
|
};
|
||||||
|
public int[][] close_chips = {{1,3},{0,2,10},{1,17},{0,6},{3,5,9,12},{18,21}
|
||||||
|
,{3,7},{6,8},{7,17},{4,10},{9,11,19,1},{10,16},{4,13},{7,12,14,22},{13,16}
|
||||||
|
,{20,23},{15,17,11,14},{2,16,8},{3,19},{18,20,10},{19,15},{5,22},{21,13,23}
|
||||||
|
,{22,15}
|
||||||
|
};
|
||||||
|
public String currentTurnPlayer = "White";
|
||||||
|
public int game_state = 0; // 0 == players placing their chips; 1 = players moving their chips; 2,3 = player can remove chip
|
||||||
|
public int white_chips = 4;
|
||||||
|
public int black_chips = 4;
|
||||||
|
|
||||||
|
public int white_combos = 0;
|
||||||
|
public int black_combos = 0;
|
||||||
|
|
||||||
|
public ArrayList<MuehleButton> buttons = new ArrayList<MuehleButton>();
|
||||||
|
public ArrayList<Chip> chips = new ArrayList<Chip>();
|
||||||
|
public Pane game_board;
|
||||||
|
public Chip current_selection;
|
||||||
|
|
||||||
|
public Label LTop;
|
||||||
|
|
||||||
|
public Circle[] white_player_chips = new Circle[9];
|
||||||
|
public Circle[] black_player_chips = new Circle[9];
|
||||||
|
|
||||||
|
|
||||||
|
public void start(Pane gameBoard, Label label) {
|
||||||
|
game_board = gameBoard;
|
||||||
|
LTop = label;
|
||||||
|
|
||||||
|
setLabelText("White Turn");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void chip_button_clicked(MuehleButton button) {
|
||||||
|
System.out.println("id" + button.id);
|
||||||
|
if (game_state == 0) {
|
||||||
|
Chip newChip;
|
||||||
|
if (currentTurnPlayer == "White") {
|
||||||
|
newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.WHITE);
|
||||||
|
white_chips--;
|
||||||
|
setChipCount(white_chips,"White");
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.BLACK);
|
||||||
|
black_chips--;
|
||||||
|
setChipCount(white_chips,"Black");
|
||||||
|
}
|
||||||
|
checkCombo(newChip);
|
||||||
|
removeChipTurn();
|
||||||
|
game_board.getChildren().remove(button);
|
||||||
|
|
||||||
|
}
|
||||||
|
if(game_state == 1) {
|
||||||
|
// second state of game
|
||||||
|
if(current_selection != null) {
|
||||||
|
moveChip(current_selection, button);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//setLabelText("Second State");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void moveChip(Chip chip,MuehleButton target) {
|
||||||
|
Chip newChip = new Chip(target.id,0,0,target.absoluteX,target.absoluteY,chip.color,chip.game);
|
||||||
|
MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX, chip.absoluteY,chip.game);
|
||||||
|
|
||||||
|
buttons.add(newButton);
|
||||||
|
chips.add(newChip);
|
||||||
|
|
||||||
|
addShape(newButton.getShape());
|
||||||
|
addShape(newChip.getShape());
|
||||||
|
|
||||||
|
buttons.remove(target);
|
||||||
|
chips.remove(chip);
|
||||||
|
game_board.getChildren().remove(target.getShape());
|
||||||
|
game_board.getChildren().remove(chip.getShape());
|
||||||
|
|
||||||
|
checkCombo(newChip);
|
||||||
|
removeChipTurn();
|
||||||
|
}
|
||||||
|
public Chip addChip(int id,int relX, int relY,double absX, double absY, Color color) {
|
||||||
|
Chip chip = new Chip(id,relX,relY,absX,absY,color,this);
|
||||||
|
chips.add(chip);
|
||||||
|
addShape(chip.getShape());
|
||||||
|
return chip;
|
||||||
|
}
|
||||||
|
public void removeChip(Chip chip) {
|
||||||
|
MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX,chip.absoluteY,chip.game);
|
||||||
|
buttons.add(newButton);
|
||||||
|
game_board.getChildren().add(newButton.getShape());
|
||||||
|
|
||||||
|
chips.remove(chip);
|
||||||
|
game_board.getChildren().remove(chip.getShape());
|
||||||
|
}
|
||||||
|
public void addShape(Shape newShape) {
|
||||||
|
game_board.getChildren().add(newShape);
|
||||||
|
|
||||||
|
}
|
||||||
|
public void chip_clicked(Chip chip) {
|
||||||
|
|
||||||
|
if(game_state == 2 && chip.color == Color.BLACK) {
|
||||||
|
removeChip(chip);
|
||||||
|
white_combos--;
|
||||||
|
removeChipTurn();
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (game_state == 3 && chip.color == Color.WHITE) {
|
||||||
|
removeChip(chip);
|
||||||
|
black_combos--;
|
||||||
|
removeChipTurn();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (game_state == 1) {
|
||||||
|
if(currentTurnPlayer == "White" && chip.color == Color.WHITE) {
|
||||||
|
if(current_selection == null) {
|
||||||
|
current_selection = chip;
|
||||||
|
drawAvaibleButtons(current_selection);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
current_selection = chip;
|
||||||
|
hideAllButtons();
|
||||||
|
drawAvaibleButtons(current_selection);
|
||||||
|
} // end of if-else
|
||||||
|
}
|
||||||
|
else if (currentTurnPlayer == "Black" && chip.color == Color.BLACK){
|
||||||
|
if(current_selection == null) {
|
||||||
|
current_selection = chip;
|
||||||
|
drawAvaibleButtons(current_selection);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
current_selection = chip;
|
||||||
|
hideAllButtons();
|
||||||
|
drawAvaibleButtons(current_selection);
|
||||||
|
}
|
||||||
|
} // end of if-else
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void hideAllButtons() {
|
||||||
|
for (int i = 0; i < buttons.size(); i++) {
|
||||||
|
buttons.get(i).setActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void drawAvaibleButtons(Chip chip) {
|
||||||
|
ArrayList<MuehleButton> avaible_buttons = new ArrayList<MuehleButton>();
|
||||||
|
for (int i = 0; i < close_chips[chip.id].length ;i++ ) {
|
||||||
|
if (!isItTaken(close_chips[chip.id][i])) {
|
||||||
|
avaible_buttons.add(getButtonById(close_chips[chip.id][i]));
|
||||||
|
} // end of if
|
||||||
|
|
||||||
|
} // end of for
|
||||||
|
if(avaible_buttons.size() > 0) {
|
||||||
|
for (int i = 0; i < avaible_buttons.size(); i++) {
|
||||||
|
avaible_buttons.get(i).setActive(true);
|
||||||
|
} // end of for
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeChipTurn() {
|
||||||
|
if (white_combos > 0 || black_combos > 0) {
|
||||||
|
if (white_combos > 0) {
|
||||||
|
setLabelText("White, You can remove "+ white_combos + " Black Pieces");
|
||||||
|
game_state = 2;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (black_combos > 0) {
|
||||||
|
setLabelText("Black, You can remove "+ black_combos + " White Pieces");
|
||||||
|
game_state = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nextTurn();
|
||||||
|
} // end of if-else
|
||||||
|
}
|
||||||
|
public void nextTurn() {
|
||||||
|
|
||||||
|
if (white_chips == 0 && black_chips == 0) {
|
||||||
|
game_state = 1;
|
||||||
|
hideAllButtons();
|
||||||
|
if (current_selection != null) {
|
||||||
|
current_selection = null;
|
||||||
|
} // end of if
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
game_state = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentTurnPlayer == "White") {
|
||||||
|
setLabelText("Black Turn");
|
||||||
|
currentTurnPlayer = "Black";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
currentTurnPlayer = "White";
|
||||||
|
setLabelText("White Turn");
|
||||||
|
} // end of if-else
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setLabelText(String value) {
|
||||||
|
LTop.setText(value);
|
||||||
|
}
|
||||||
|
public void checkCombo(Chip chip) {
|
||||||
|
checkCombo(chip.id);
|
||||||
|
}
|
||||||
|
public void checkCombo(int id) {
|
||||||
|
for (int i = 0; i < win_comb.length ;i++ ) {
|
||||||
|
for (int j = 0; j < win_comb[i].length; j++) {
|
||||||
|
if (win_comb[i][j] == id) {
|
||||||
|
Chip[] chips_to_check = {getChipById(win_comb[i][0]),getChipById(win_comb[i][1]),getChipById(win_comb[i][2])};
|
||||||
|
//System.out.println("ID: " +id + " 0:"+win_comb[i][0]+" 1:"+win_comb[i][1]+" 2:"+win_comb[i][2]);
|
||||||
|
if (checkChipsColor(chips_to_check)) {
|
||||||
|
if (getChipById(id).color == Color.WHITE) {
|
||||||
|
white_combos++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
black_combos++;
|
||||||
|
} // end of if-else
|
||||||
|
} // end of if
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public boolean checkChipsColor(Chip[] chips) {
|
||||||
|
if (chips[0] != null && chips[1] != null && chips[2] != null) {
|
||||||
|
if (chips[0].color == chips[1].color && chips[0].color == chips[2].color) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
} // end of if-else
|
||||||
|
}
|
||||||
|
|
||||||
|
public Chip getChipById(int id) {
|
||||||
|
for (int i = 0; i < chips.size(); i++) {
|
||||||
|
if (chips.get(i).id == id) {
|
||||||
|
return chips.get(i);
|
||||||
|
} // end of if
|
||||||
|
} // end of for
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public MuehleButton getButtonById(int id) {
|
||||||
|
for (int i = 0; i < buttons.size(); i++) {
|
||||||
|
if (buttons.get(i).id == id) {
|
||||||
|
return buttons.get(i);
|
||||||
|
} // end of if
|
||||||
|
} // end of for
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public boolean isItTaken(int id) {
|
||||||
|
for (int i = 0; i < chips.size(); i++) {
|
||||||
|
if (chips.get(i).id == id) {
|
||||||
|
return true;
|
||||||
|
} // end of if
|
||||||
|
} // end of for
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChipCount(int value, String player) {
|
||||||
|
System.out.println(white_chips-1);
|
||||||
|
if (player == "White") {
|
||||||
|
if (white_chips == 0) {
|
||||||
|
for (int i = 0; i < white_player_chips.length -1; i++) {
|
||||||
|
white_player_chips[i].setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = white_player_chips.length-1; i >= value; i--) {
|
||||||
|
white_player_chips[i].setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
{
|
||||||
|
if (white_chips == 0) {
|
||||||
|
for (int i = 0; i < black_player_chips.length -1; i++) {
|
||||||
|
black_player_chips[i].setVisible(false);
|
||||||
|
} // end of for
|
||||||
|
} // end of if
|
||||||
|
for (int i = black_player_chips.length-1; i >= value; i--) {
|
||||||
|
black_player_chips[i].setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} // end of if-else
|
||||||
|
}
|
||||||
|
}
|
||||||
242
Muehle.java
Normal file
242
Muehle.java
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
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
|
||||||
92
Muehle.jfm
92
Muehle.jfm
@@ -1,46 +1,46 @@
|
|||||||
object FGUIForm: TFXGUIForm
|
object FGUIForm: TFXGUIForm
|
||||||
Tag = 180
|
Tag = 180
|
||||||
Left = 240
|
Left = 240
|
||||||
Top = 154
|
Top = 154
|
||||||
BorderIcons = [biSystemMenu]
|
BorderIcons = [biSystemMenu]
|
||||||
Caption = 'Muehle'
|
Caption = 'Muehle'
|
||||||
ClientHeight = 227
|
ClientHeight = 227
|
||||||
ClientWidth = 270
|
ClientWidth = 270
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
Font.Height = -12
|
Font.Height = -12
|
||||||
Font.Name = 'Segoe UI'
|
Font.Name = 'Segoe UI'
|
||||||
Font.Style = []
|
Font.Style = []
|
||||||
FormStyle = fsStayOnTop
|
FormStyle = fsStayOnTop
|
||||||
Position = poDesigned
|
Position = poDesigned
|
||||||
Visible = True
|
Visible = True
|
||||||
OnActivate = FormActivate
|
OnActivate = FormActivate
|
||||||
OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
|
OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
|
||||||
OnBeforeMonitorDpiChanged = FormBeforeMonitorDpiChanged
|
OnBeforeMonitorDpiChanged = FormBeforeMonitorDpiChanged
|
||||||
OnCanResize = FormCanResize
|
OnCanResize = FormCanResize
|
||||||
OnClose = FormClose
|
OnClose = FormClose
|
||||||
OnCloseQuery = FormCloseQuery
|
OnCloseQuery = FormCloseQuery
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDeactivate = FormDeactivate
|
OnDeactivate = FormDeactivate
|
||||||
OnMouseActivate = FormMouseActivate
|
OnMouseActivate = FormMouseActivate
|
||||||
OnResize = FormResize
|
OnResize = FormResize
|
||||||
Resizable = True
|
Resizable = True
|
||||||
Undecorated = False
|
Undecorated = False
|
||||||
Background = clBtnFace
|
Background = clBtnFace
|
||||||
Title = 'Muehle'
|
Title = 'Muehle'
|
||||||
FontSize = 11
|
FontSize = 11
|
||||||
X = 0
|
X = 0
|
||||||
Y = 0
|
Y = 0
|
||||||
FullScreen = False
|
FullScreen = False
|
||||||
AlwaysOnTop = False
|
AlwaysOnTop = False
|
||||||
Iconified = False
|
Iconified = False
|
||||||
MaxHeight = 0
|
MaxHeight = 0
|
||||||
MaxWidth = 0
|
MaxWidth = 0
|
||||||
MinHeight = 0
|
MinHeight = 0
|
||||||
MinWidth = 0
|
MinWidth = 0
|
||||||
showing = ''
|
showing = ''
|
||||||
TextHeight = 15
|
TextHeight = 15
|
||||||
object GNUgettextMarker: TGnuGettextComponentMarker
|
object GNUgettextMarker: TGnuGettextComponentMarker
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
76
MuehleButton.java
Normal file
76
MuehleButton.java
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.shape.Circle;
|
||||||
|
import javafx.scene.shape.Shape;
|
||||||
|
import javafx.event.Event;
|
||||||
|
import javafx.event.EventHandler;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
public class MuehleButton {
|
||||||
|
|
||||||
|
public Game game;
|
||||||
|
|
||||||
|
public int relativeX;
|
||||||
|
public int relativeY;
|
||||||
|
|
||||||
|
public double absoluteX;
|
||||||
|
public double absoluteY;
|
||||||
|
|
||||||
|
public Color color = Color.BLUE;
|
||||||
|
|
||||||
|
public double radius;
|
||||||
|
|
||||||
|
public Circle circle;
|
||||||
|
|
||||||
|
public int id;
|
||||||
|
|
||||||
|
public boolean isActive = true;
|
||||||
|
|
||||||
|
public MuehleButton(int id,int relX, int relY, double absX, double absY, Game game) {
|
||||||
|
this.id = id;
|
||||||
|
|
||||||
|
relativeX = relX;
|
||||||
|
relativeY = relY;
|
||||||
|
|
||||||
|
absoluteX = absX;
|
||||||
|
absoluteY = absY;
|
||||||
|
|
||||||
|
radius = 20;
|
||||||
|
this.color = color;
|
||||||
|
circle = new Circle(absoluteX, absoluteY, radius);
|
||||||
|
circle.setFill(this.color);
|
||||||
|
|
||||||
|
this.game = game;
|
||||||
|
|
||||||
|
circle.addEventHandler(MouseEvent.MOUSE_RELEASED, mouse_click_target);
|
||||||
|
|
||||||
|
setActive(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Shape getShape() {
|
||||||
|
return circle;
|
||||||
|
|
||||||
|
}
|
||||||
|
public void setActive(boolean value) {
|
||||||
|
isActive = value;
|
||||||
|
if(value == true) {
|
||||||
|
circle.setFill(this.color);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//circle.setFill(Color.rgb(0,0,0,0));
|
||||||
|
circle.setFill(Color.rgb(0,255,0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EventHandler<MouseEvent> mouse_click_target = new EventHandler<MouseEvent>() {
|
||||||
|
public void handle(MouseEvent event) {
|
||||||
|
if (isActive) {
|
||||||
|
MouseClick();
|
||||||
|
} // end of if
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
public void MouseClick() {
|
||||||
|
game.chip_button_clicked(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end of MuehleButton
|
||||||
Reference in New Issue
Block a user