0 / 0 / 0
Регистрация: 07.04.2023
Сообщений: 11
1

Настольная игра. Не получается прикрепить игровые фигурки к полям игрового плана

16.10.2023, 09:10. Показов 551. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,
я работаю над игрой “Заяц и Ёж”. У меня есть план игры и на нем 63 поля. Вначале, когда открывается окно, ширина игрового плана 1000px (BOARD_WIDTH), высота 750px (BOARD_(HEIGHT). Размер одного поля 60x60 (FIELDSIZE). Координаты центра каждого поля заданы в json-файле.
Все картинки (игровой план + игровые фигурки) я поместил в Pane. Pane у меня в центре BorderPane.
Вот так выглядит мой UserInterface.fxml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
    <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gui.UserInterfaceController">
   <children>
      <BorderPane fx:id="brdPane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <center>
            <Pane fx:id="pane" BorderPane.alignment="CENTER">
               <children>
                  <ImageView fx:id="imgVwGameBoard" pickOnBounds="true" />
                  <ImageView fx:id="imgVwBlue" pickOnBounds="true" />
                  <ImageView fx:id="imgVwYellow" pickOnBounds="true" />
                  <ImageView fx:id="imgVwGreen" pickOnBounds="true" />
               </children>
               <BorderPane.margin>
                  <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
               </BorderPane.margin>
            </Pane>
         </center>
         <right>
            <VBox BorderPane.alignment="CENTER_RIGHT">
               <children>
                  <Label alignment="CENTER_RIGHT" text="Anzahl der Spieler" textAlignment="JUSTIFY" VBox.vgrow="NEVER">
                     <VBox.margin>
                        <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
                     </VBox.margin>
                     <padding>
                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </padding>
                  </Label>
                  <Button fx:id="btnAddPl" mnemonicParsing="false" onAction="#addPlayer" text="+" />
                  <Button fx:id="btnDeletePl" mnemonicParsing="false" onAction="#deletePlayer" text="-" />
                  <VBox fx:id="vBoxPlayerNames" prefHeight="200.0" prefWidth="100.0">
                     <children>
                        <Label alignment="CENTER_RIGHT" text="Spielernamen" textAlignment="JUSTIFY">
                           <VBox.margin>
                              <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
                           </VBox.margin>
                           <padding>
                              <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                           </padding>
                           <font>
                              <Font size="18.0" />
                           </font>
                        </Label>
                        <TextField fx:id="txtFieldPl1" text="Player 1">
                           <VBox.margin>
                              <Insets bottom="5.0" left="15.0" right="15.0" top="5.0" />
                           </VBox.margin>
                        </TextField>
                        <TextField fx:id="txtFieldPl2" text="Player 2">
                           <VBox.margin>
                              <Insets bottom="5.0" left="15.0" right="15.0" top="5.0" />
                           </VBox.margin>
                        </TextField>
                     </children>
                  </VBox>
               </children>
            </VBox>
         </right>
      </BorderPane>
   </children>
</AnchorPane>
Теперь мне надо поставить игровую фигурку на одно из полей. Например я ставлю синюю фигурку на поле №12. Координаты центра этого поля: х - 75; у - 585.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 public void initialize(URL location, ResourceBundle resources) {
 
        //Размер игрового плана привязан к размеру Pane
 
        imgVwGameBoard.fitWidthProperty().bind(pane.widthProperty());
        imgVwGameBoard.fitHeightProperty().bind(pane.heightProperty());
 
        initImages(); // метод вставляет картинки в imageViews (игровой план и все 6 фигурок)
        ImageView [] tokens = {imgVwBlue, imgVwYellow,imgVwGreen, imgVwOrange, imgVwRed, imgVwWhite};
 
        // Размер игровой фигурки привязан к размеру игрового поля
        for (ImageView token : tokens) {
            token.fitWidthProperty().bind(imgVwGameBoard.fitWidthProperty().divide(BOARD_WIDTH).multiply(FIELDSIZE));
            token.fitHeightProperty().bind(imgVwGameBoard.fitHeightProperty().divide(BOARD_HEIGHT).multiply(FIELDSIZE));
        }
       
        // Разместить игровую фигурку на игровом поле
        imgVwBlue.setX(75 - FIELDSIZE/2);
        imgVwBlue.setY(585 - FIELDSIZE/2);
 
 
        imgVwBlue.xProperty().bind(imgVwGameBoard.fitWidthProperty().divide(BOARD_WIDTH).multiply(FIELDSIZE));
 
        imgVwBlue.yProperty().bind(imgVwGameBoard.fitHeightProperty().divide(BOARD_HEIGHT).multiply(FIELDSIZE));
 
    }

По правилам задания игровой план должен занимать большую часть окна и расширятся/ уменьшатся вместе с окном. Когда я уменьшаю или расширяю игровой план, то моя фигурка сходить со своего поля. Последняя строчка должна бы привязать координаты фигурки к размеру игрового плана, но она не работает.
Подскажите, что я делаю неправильно.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2023, 09:10
Ответы с готовыми решениями:

Настольная игра
Нужно сделать настольную игру на Delphi , как в старые добрые времена они были на картонках, мы...

Настольная игра
Любой из кубиков и выпадение любой из граней равномерное. Кубики шестигранные, значения на гранях...

Настольная игра.
Пишу в Билдере оффлайн-аналог ныне популярных текстовых браузерных игр с целью самообучения....

Класс Настольная игра
Создать базовый класс Настольная игра (задается название). Создать производные классы Шахматы...

Fallout Настольная Игра
Подскажите официальный сайт лицензионных настольных игр, на котором можно заказать онлайн настолку...

1
тихо едет не спеша...
52 / 43 / 12
Регистрация: 10.05.2023
Сообщений: 143
16.10.2023, 09:29 2
Лучший ответ Сообщение было отмечено maxpavlenko как решение

Решение

чтобы правильно привязать координаты игровой фигурки к размеру игрового плана, тебе нужно использовать свойства translateX и translateY вместо свойств x и y. Свойства translateX и translateY позволяют задавать смещение фигурки относительно ее исходной позиции.
Java
1
2
imgVwBlue.translateXProperty().bind(imgVwGameBoard.fitWidthProperty().divide(BOARD_WIDTH).multiply(75 - FIELDSIZE/2));
imgVwBlue.translateYProperty().bind(imgVwGameBoard.fitHeightProperty().divide(BOARD_HEIGHT).multiply(585 - FIELDSIZE/2));
Теперь, когда ты изменяешь размеры окна, фигурка будет оставаться на своем поле, так как ее координаты привязаны к размеру игрового плана. Убедись, что ты применил эти изменения ко всем игровым фигуркам, которые ты хочешь прикрепить к полям игрового плана.
1
16.10.2023, 09:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2023, 09:29
Помогаю со студенческими работами здесь

Scratch 2 Настольная игра
Всем привет. Срочно нужна помощь Учусь на программиста сейчас прохожу учебную практику....

Курсовая работа: Настольная игра
Правила игры &quot;Приятель, не сердись&quot; https://forestschool.ru/blog/prijatel-ne-serdis Часть...

Настольная онлайн игра 3D Мультиплеер
Добрый день всем. Есть желанием написать настольную игру - решил для начала за основу взять...

Игра Balls и алгоритмы удаления шаров и поворот фигурки
Здравствуйте! Нужна помощь в составлении 2 алгоритмов. 1 - Удаление мячей(они должны быть одного...

Не получается нарисовать фигурки тетриса. C++ Opengl
Пожалуста помогите, не получается нарисовать фигурки тетриса, вроде все правильно в чем проблема не...

Настольная игра "Минное поле"
На прямоугольном поле N*M клеток в левом верхнем углу стоит фишка. Игра заключается в том, что два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru