From 891fd20505637299f00cb7e226fe9bf139a7be91 Mon Sep 17 00:00:00 2001 From: Zyzf Date: Mon, 24 Oct 2022 18:55:28 +0400 Subject: [PATCH] rebuild --- Direction.java | 6 - DrawTransport.java | 14 - DrawningBoat.java | 127 ------- EntityBoat.java | 37 -- FormBoat.java | 3 - Main.java | 5 - PIbd-22_Kalyshev_Y_V_MotorBoat_Hard.iml | 30 ++ .../.idea/workspace.xml | 63 ++++ README.md | 2 - mvnw | 316 +++++++++++++++++ mvnw.cmd | 188 ++++++++++ pom.xml | 93 +++++ .../Direction.java | 26 ++ .../DrawningBoat.java | 165 +++++++++ .../DrawningOars.java | 103 ++++++ .../EntityBoat.java | 38 +++ .../FormBoat.java | 322 ++++++++++++++++++ .../HelloController.java | 14 + .../NumberOars.java | 27 ++ src/main/java/module-info.java | 10 + src/main/resources/arrowDown.png | Bin 0 -> 245 bytes src/main/resources/arrowLeft.png | Bin 0 -> 257 bytes src/main/resources/arrowRight.png | Bin 0 -> 254 bytes src/main/resources/arrowUp.png | Bin 0 -> 234 bytes .../hello-view.fxml | 6 + target/classes/arrowDown.png | Bin 0 -> 245 bytes target/classes/arrowLeft.png | Bin 0 -> 257 bytes target/classes/arrowRight.png | Bin 0 -> 254 bytes target/classes/arrowUp.png | Bin 0 -> 234 bytes .../Direction.class | Bin 0 -> 1741 bytes .../DrawningBoat$1.class | Bin 0 -> 976 bytes .../DrawningBoat.class | Bin 0 -> 4470 bytes .../DrawningOars$1.class | Bin 0 -> 935 bytes .../DrawningOars.class | Bin 0 -> 3007 bytes .../EntityBoat.class | Bin 0 -> 1266 bytes .../FormBoat.class | Bin 0 -> 11513 bytes .../HelloController.class | Bin 0 -> 703 bytes .../NumberOars.class | Bin 0 -> 1685 bytes .../hello-view.fxml | 6 + target/classes/module-info.class | Bin 0 -> 381 bytes 40 files changed, 1407 insertions(+), 194 deletions(-) delete mode 100644 Direction.java delete mode 100644 DrawTransport.java delete mode 100644 DrawningBoat.java delete mode 100644 EntityBoat.java delete mode 100644 FormBoat.java delete mode 100644 Main.java create mode 100644 PIbd-22_Kalyshev_Y_V_MotorBoat_Hard.iml create mode 100644 PIbd-22_Kalyshev_Y_V_MotorBoat_Hard/.idea/workspace.xml delete mode 100644 README.md create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/FormBoat.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.java create mode 100644 src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.java create mode 100644 src/main/java/module-info.java create mode 100644 src/main/resources/arrowDown.png create mode 100644 src/main/resources/arrowLeft.png create mode 100644 src/main/resources/arrowRight.png create mode 100644 src/main/resources/arrowUp.png create mode 100644 src/main/resources/com/example/pibd22_kalyshev_y_v_motorboat_hard/hello-view.fxml create mode 100644 target/classes/arrowDown.png create mode 100644 target/classes/arrowLeft.png create mode 100644 target/classes/arrowRight.png create mode 100644 target/classes/arrowUp.png create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat$1.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars$1.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/FormBoat.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.class create mode 100644 target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/hello-view.fxml create mode 100644 target/classes/module-info.class diff --git a/Direction.java b/Direction.java deleted file mode 100644 index d3ef881..0000000 --- a/Direction.java +++ /dev/null @@ -1,6 +0,0 @@ -public enum Direction { - Up, - Down, - Left, - Right -} \ No newline at end of file diff --git a/DrawTransport.java b/DrawTransport.java deleted file mode 100644 index 85ac8b5..0000000 --- a/DrawTransport.java +++ /dev/null @@ -1,14 +0,0 @@ -import javax.swing.JPanel; - -import java.awt.*; -import javax.swing.*; - -public class DrawTransport extends JPanel { - @Override - public void paintComponent(Graphics g) { - super.paintComponent(g); - Graphics2D g2d = (Graphics2D)g; - g2d.setColor(Color.black); - g2d.drawLine(_startPosX, _startPosY, _startPosX + 120, _startPosY + 0); - } -} diff --git a/DrawningBoat.java b/DrawningBoat.java deleted file mode 100644 index 4fb6145..0000000 --- a/DrawningBoat.java +++ /dev/null @@ -1,127 +0,0 @@ -import java.awt.*; -import javax.swing.*; -import java.awt.event.*; -import java.util.Random; -import java.util.Timer; -import java.util.TimerTask; -import java.io.*; -import java.util.Scanner; -import java.util.Stack; - - - -public class DrawningBoat { - private EntityBoat Boat; - public EntityBoat Boat() { - return Boat; - } - - private float _startPosX; - public float get_startPosX() { - return _startPosX; - } - - private float _startPosY; - public float get_startPosY() { - return _startPosY; - } - - private int _pictureWidth; - - private int _pictureHeight; - - private int _boatWidth = 170; - public int get_boatWidth() { - return _boatWidth; - } - - private int _boatHeight = 60; - public int get_boatHeight() { - return _boatHeight; - } - - public void Init(int speed, float weight, Color bodyColor) - { - Boat = new EntityBoat(); - Boat.Init(speed, weight, bodyColor); - } - - public void SetPosition(int x, int y, int width, int height) { - if (x + _boatWidth <= width && y + _boatHeight <= height && x > 0 && y > 0) - { - _startPosX = x; - _startPosY = y; - _pictureWidth = width; - _pictureHeight = height; - } - } - - public void MoveTransport(Direction direction) { - try { - Integer.valueOf(_pictureWidth); - Integer.valueOf(_pictureHeight); - } catch (Exception e) { - return; - } - switch (direction) - { - // вправо - case Right: - if (_startPosX + _boatWidth + Boat.Step < _pictureWidth) - { - _startPosX += Boat.Step; - } - break; - //влево - case Left: - if (_startPosX - Boat.Step > 0) - { - _startPosX -= Boat.Step; - } - break; - //вверх - case Up: - if (_startPosY - Boat.Step > 0) - { - _startPosY -= Boat.Step; - } - break; - //вниз - case Down: - if (_startPosY + _boatHeight + Boat.Step < _pictureHeight) - { - _startPosY += Boat.Step; - } - break; - } - } - - public void DrawTransport(Graphics g) { - if (_startPosX < 0 || _startPosY < 0) { - return; - } - try { - Integer.valueOf(_pictureWidth); - Integer.valueOf(_pictureHeight); - } catch (Exception e) { - return; - } - Pen pen = new(Color.Black, 3); - Brush br = new SolidBrush(Boat?.BodyColor ?? Color.Black); - Brush brBrown = new SolidBrush(Color.Brown); - // Внешняя часть лодки - g.DrawLine(pen, _startPosX, _startPosY, _startPosX + 120, _startPosY + 0); - g.DrawLine(pen, _startPosX + 120, _startPosY, _startPosX + 170, _startPosY + 30); - g.DrawLine(pen, _startPosX + 170, _startPosY + 30, _startPosX + 120, _startPosY + 60); - g.DrawLine(pen, _startPosX + 120, _startPosY + 60, _startPosX, _startPosY + 60); - g.DrawLine(pen, _startPosX, _startPosY + 60, _startPosX, _startPosY); - PointF pt1 = new PointF(_startPosX, _startPosY); - PointF pt2 = new PointF(_startPosX + 120, _startPosY); - PointF pt3 = new PointF(_startPosX + 170, _startPosY + 30); - PointF pt4 = new PointF(_startPosX + 120, _startPosY + 60); - PointF pt5 = new PointF(_startPosX, _startPosY + 60); - g.FillPolygon(br, new PointF[] { pt1, pt2, pt3, pt4, pt5}); - // Внутренняя часть лодки - g.FillEllipse(brBrown, _startPosX + 10, _startPosY + 10, 110, 40); - } -} diff --git a/EntityBoat.java b/EntityBoat.java deleted file mode 100644 index 0045542..0000000 --- a/EntityBoat.java +++ /dev/null @@ -1,37 +0,0 @@ -import java.awt.*; -import java.util.Random; -public class EntityBoat { - private int Speed; - public int getSpeed() { - return Speed; - } - private void setSpeed(int Speed) { - this.Speed = Speed; - } - - private float Weight; - public float getWeight() { - return Weight; - } - private void setWeight(float Weight) { - this.Weight = Weight; - } - - private Color BodyColor; - public Color getBoColor() { - return BodyColor; - } - private void setBodyColor(Color BodyColor) { - this.BodyColor = BodyColor; - } - - public float Step; - - public void Init(int speed, float weight, Color bodyColor) { - Random rnd = new Random(); - Speed = speed <= 0 ? rnd.nextInt(5, 30) : speed; - Weight = weight <= 0 ? rnd.nextInt(30, 100) : weight; - BodyColor = bodyColor; - Step = Speed * 100 / Weight; - } -} diff --git a/FormBoat.java b/FormBoat.java deleted file mode 100644 index 8f59930..0000000 --- a/FormBoat.java +++ /dev/null @@ -1,3 +0,0 @@ -public class FormBoat { - -} diff --git a/Main.java b/Main.java deleted file mode 100644 index 31a3477..0000000 --- a/Main.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Main{ - public static void main(String[] args) { - new FormBoat(); - } -} \ No newline at end of file diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard.iml b/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard.iml new file mode 100644 index 0000000..a6bc1e2 --- /dev/null +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard.iml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard/.idea/workspace.xml b/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard/.idea/workspace.xml new file mode 100644 index 0000000..baac41a --- /dev/null +++ b/PIbd-22_Kalyshev_Y_V_MotorBoat_Hard/.idea/workspace.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + 1666588645694 + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 5af9553..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# PIbd-22_Kalyshev_Y_V_MotorBoat_Hard - diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..ee13d2b --- /dev/null +++ b/pom.xml @@ -0,0 +1,93 @@ + + + 4.0.0 + + com.example + PIbd-22_Kalyshev_Y_V_MotorBoat_Hard + 1.0-SNAPSHOT + PIbd-22_Kalyshev_Y_V_MotorBoat_Hard + + + UTF-8 + 5.8.2 + + + + + org.openjfx + javafx-controls + 19-ea+7 + + + org.openjfx + javafx-fxml + 19-ea+7 + + + org.controlsfx + controlsfx + 11.1.1 + + + com.dlsc.formsfx + formsfx-core + 11.5.0 + + + org.openjfx + * + + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 19 + 19 + + + + org.openjfx + javafx-maven-plugin + 0.0.8 + + + + default-cli + + + com.example.pibd22_kalyshev_y_v_motorboat_hard/com.example.pibd22_kalyshev_y_v_motorboat_hard.HelloApplication + + app + app + app + true + true + true + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.java new file mode 100644 index 0000000..13232de --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.java @@ -0,0 +1,26 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +public enum Direction { + Up, + Down, + Left, + Right; + + public static Direction FromInteger(int intValue) + { + switch(intValue) + { + case 1: + return Up; + case 2: + return Down; + case 3: + return Left; + case 4: + return Right; + default: + System.out.println("Error: incorrect value for enum"); + return Up; + } + } +} diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat.java new file mode 100644 index 0000000..d9cf16c --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningBoat.java @@ -0,0 +1,165 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; + +public class DrawningBoat +{ + private EntityBoat _boat; + private DrawningOars _drawningOars; + private float _startPosX; + private float _startPosY; + private Integer _pictureWidth; + private Integer _pictureHeight; + private int _boatWidth = 112; + private int _boatHeight = 60; + + public EntityBoat GetArmoredVehicle() + { + return _boat; + } + public DrawningOars GetDrawningOars() + { + return _drawningOars; + } + + public void Init(int speed, float weight, Color bodyColor) + { + _boat = new EntityBoat(); + _boat.Init(speed, weight, bodyColor); + + _drawningOars = new DrawningOars(); + _drawningOars.Init(bodyColor); + } + + public void SetPosition(int x, int y, int width, int height) + { + if (x < 0 || y < 0) + { + return; + } + + if (x + _boatWidth > width || y + _boatHeight > height) + { + return; + } + + _startPosX = x; + _startPosY = y; + + _pictureWidth = width; + _pictureHeight = height; + } + + public void MoveTransport(Direction direction) + { + if (_pictureWidth == null || _pictureHeight == null) + { + return; + } + + switch (direction) + { + case Up: + if (_startPosY - _boat.GetStep() > 0) + { + _startPosY -= _boat.GetStep(); + } + break; + + case Down: + if (_startPosY + _boatHeight + _boat.GetStep() < _pictureHeight) + { + _startPosY += _boat.GetStep(); + } + break; + + case Left: + if (_startPosX - _boat.GetStep() > 0) + { + _startPosX -= _boat.GetStep(); + } + break; + + case Right: + if (_startPosX + _boatWidth + _boat.GetStep() < _pictureWidth) + { + _startPosX += _boat.GetStep(); + } + break; + + default: + break; + } + } + + public void DrawTransport(GraphicsContext gc) + { + if (_startPosX < 0 || _startPosY < 0 + || _pictureWidth == null || _pictureHeight == null) + { + return; + } + + gc.setStroke(Color.BLACK); + gc.setLineWidth(2); + + // Гусеница + gc.setFill(Color.rgb(21, 39, 71)); + gc.fillRect(14.0 + _startPosX, 32.0 + _startPosY, 84.0, 26.0); + gc.strokeRect(14.0 + _startPosX, 32.0 + _startPosY, 84.0, 26.0); + gc.fillOval(1.0 + _startPosX, 32.0 + _startPosY, 26.0, 26.0); + gc.strokeOval(1.0 + _startPosX, 32.0 + _startPosY, 26.0, 26.0); + gc.fillOval(85.0 + _startPosX, 32.0 + _startPosY, 26.0, 26.0); + gc.strokeOval(85.0 + _startPosX, 32.0 + _startPosY, 26.0, 26.0); + gc.fillRect(13.0 + _startPosX, 33.0 + _startPosY, 86.0, 24.0); + + // Корпус + gc.setFill(_boat.GetBodyColor()); + + double[] hullX = + { + 23.0 + _startPosX, 23.0 + _startPosX, + 37.0 + _startPosX, 75.0+ _startPosX, + 89.0 + _startPosX, 89.0 + _startPosX + }; + + double[] hullY = + { + 25.0 + _startPosY, 11.0 + _startPosY, + 1.0 + _startPosY, 1.0 + _startPosY, + 11.0 + _startPosY, 25.0 + _startPosY + }; + + gc.fillPolygon(hullX, hullY, 6); + gc.strokePolygon(hullX, hullY, 6); + gc.fillRect(16.0 + _startPosX, 24.0 + _startPosY, 80.0, 8.0); + gc.strokeRect(16.0 + _startPosX, 24.0 + _startPosY, 80.0, 8.0); + + _drawningOars.DrawOars(gc, _startPosX, _startPosY); + } + + public void ChangeBorders(int width, int height) + { + _pictureWidth = width; + _pictureHeight = height; + + if (_pictureWidth <= _boatWidth || _pictureHeight <= _boatHeight) + { + _pictureWidth = null; + _pictureHeight = null; + return; + } + + if (_startPosX + _boatWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _boatWidth; + } + + if (_startPosY + _boatHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _boatHeight; + } + } + +} diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars.java new file mode 100644 index 0000000..dd21087 --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars.java @@ -0,0 +1,103 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.paint.Color; + +public class DrawningOars +{ + private Color _OarsColor; + private NumberOars _numOars; + + public void SetNumberOars(int numberOfRollers) + { + _numOars = NumberOars.FromInteger(numberOfRollers); + } + + public void Init(Color trackRollersColor) + { + _OarsColor = trackRollersColor; + } + + public void DrawOars(GraphicsContext gc, float startPosX, float startPosY) + { + if (_OarsColor == null) + { + return; + } + + gc.setFill(_OarsColor); + gc.fillOval(5.0 + startPosX, 36.0 + startPosY, 18.0, 18.0); + gc.strokeOval(5.0 + startPosX, 36.0 + startPosY, 18.0, 18.0); + gc.strokeOval(11.0 + startPosX, 42.0 + startPosY, 6.0, 6.0); + + gc.fillOval(89.0 + startPosX, 36.0 + startPosY, 18.0, 18.0); + gc.strokeOval(89.0 + startPosX, 36.0 + startPosY, 18.0, 18.0); + gc.strokeOval(95.0 + startPosX, 42.0 + startPosY, 6.0, 6.0); + + switch (_numOars) + { + case One: + gc.setFill(_OarsColor); + gc.fillOval(35.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(35.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(40.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(63.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(63.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(68.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + break; + + case Two: + gc.setFill(_OarsColor); + gc.fillOval(29.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(29.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(34.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(49.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(49.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(54.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(69.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(69.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(74.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + break; + + case Three: + gc.setFill(_OarsColor); + gc.fillOval(25.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(25.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(30.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(41.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(41.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(46.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(57.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(57.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(62.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + gc.setFill(_OarsColor); + gc.fillOval(73.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.strokeOval(73.0 + startPosX, 42.0 + startPosY, 14.0, 14.0); + gc.setFill(Color.BLACK); + gc.fillOval(78.0 + startPosX, 47.0 + startPosY, 4.0, 4.0); + + break; + } + } +} diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.java new file mode 100644 index 0000000..cf44613 --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.java @@ -0,0 +1,38 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +import javafx.scene.paint.Color; +import java.util.Random; + +public class EntityBoat +{ + private int _speed; + private float _weight; + private Color _bodyColor; + public int GetSpeed() + { + return _speed; + } + + public float GetWeight() + { + return _weight; + } + + public Color GetBodyColor() + { + return _bodyColor; + } + + public float GetStep() + { + return _speed * 100 / _weight; + } + + public void Init(int speed, float weight, Color bodyColor) + { + Random random = new Random(); + _speed = speed <= 0 ? random.nextInt(5) + 25 : speed; + _weight = weight <= 0 ? random.nextInt(30) + 70 : weight; + _bodyColor = bodyColor; + } +} diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/FormBoat.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/FormBoat.java new file mode 100644 index 0000000..19cfd6c --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/FormBoat.java @@ -0,0 +1,322 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +import javafx.application.Application; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.canvas.Canvas; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Pane; +import javafx.scene.paint.Color; +import javafx.stage.Stage; + +import java.io.IOException; +import java.util.Random; + +public class FormBoat extends Application +{ + private Pane _root; + private Scene _scene; + private Canvas _canvas; + private HBox _hBox; + private Button _buttonCreate; + private Button _buttonUp; + private Button _buttonDown; + private Button _buttonLeft; + private Button _buttonRight; + private Label _labelSpeedValue; + private Label _labelWeightValue; + private Label _labelBodyColorValue; + private ComboBox _comboBoxNumOars; + private double _hBoxHeight; + private double _buttonCreateHeight; + private final int _buttonMoveWidth = 30; + private final int _buttonMoveHeight = 30; + private final int _distanceBetweenMoveButtons = 5; + private final double _buttonMargin = 10.0; + private DrawningBoat _boat; + + @Override + public void start(Stage stage) throws IOException + { + FXMLLoader fxmlLoader = new FXMLLoader(FormBoat.class.getResource("hello-view.fxml")); + _scene = new Scene(fxmlLoader.load(), 320, 240); + + _root = (Pane) _scene.lookup("#root"); + _root.setStyle("-fx-background-color: #31374c;"); + + _canvas = new Canvas(); + _root.getChildren().add(_canvas); + + InitHBox(); + InitButtonCreate(); + InitMoveButtons(); + + stage.setTitle("Armored Vehicle"); + stage.setScene(_scene); + + _scene.widthProperty().addListener((obs, oldVal, newVal) -> + { + UpdateGUI(); + if (_boat != null) + { + _boat.ChangeBorders((int) _canvas.getWidth(), (int) _canvas.getHeight()); + } + Draw(); + }); + + _scene.heightProperty().addListener((obs, oldVal, newVal) -> + { + UpdateGUI(); + if (_boat != null) + { + _boat.ChangeBorders((int) _canvas.getWidth(), (int) _canvas.getHeight()); + } + Draw(); + }); + + _root.applyCss(); + _root.layout(); + + stage.setOnShowing(event -> { + _hBoxHeight = _hBox.getHeight(); + _buttonCreateHeight = _buttonCreate.getHeight(); + UpdateGUI(); + Draw(); + }); + + stage.show(); + } + + private void InitHBox() + { + _hBox = new HBox(); + _hBox.setStyle("-fx-background-color: #31374c;"); + _root.getChildren().add(_hBox); + + Label labelSpeed = new Label("Speed:"); + labelSpeed.setStyle("-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;"); + _hBox.getChildren().add(labelSpeed); + + _labelSpeedValue = new Label("-"); + _labelSpeedValue.setStyle("-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;"); + _hBox.getChildren().add(_labelSpeedValue); + + Label labelWeight = new Label("Weight:"); + labelWeight.setStyle("-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;"); + _hBox.getChildren().add(labelWeight); + + _labelWeightValue = new Label("-"); + _labelWeightValue.setStyle("-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;"); + _hBox.getChildren().add(_labelWeightValue); + + Label labelHullColor = new Label("Color:"); + labelHullColor.setStyle("-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;"); + _hBox.getChildren().add(labelHullColor); + + _labelBodyColorValue = new Label("-"); + _labelBodyColorValue.setStyle("-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;"); + _hBox.getChildren().add(_labelBodyColorValue); + + Label labelNumOfRollers = new Label("Rollers:"); + labelNumOfRollers.setStyle("-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;"); + _hBox.getChildren().add(labelNumOfRollers); + + ObservableList optionsForTheNumOfRollers = FXCollections.observableArrayList("4", "5", "6"); + _comboBoxNumOars = new ComboBox<>(optionsForTheNumOfRollers); + _comboBoxNumOars.setValue("4"); + + _comboBoxNumOars.setOnAction(e -> + { + if (_boat != null) + { + _boat.GetDrawningOars().SetNumberOars( + Integer.parseInt(_comboBoxNumOars.getValue())); + Draw(); + } + }); + + _hBox.getChildren().add(_comboBoxNumOars); + } + + private void InitButtonCreate() + { + _buttonCreate = new Button("Create"); + _buttonCreate.setTranslateX(_buttonMargin); + _root.getChildren().add(_buttonCreate); + + _buttonCreate.setOnAction(e -> + { + Random rnd = new Random(); + + _boat = new DrawningBoat(); + _boat.Init(rnd.nextInt(200) + 100, rnd.nextInt(1000) + 1000, + Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256))); + _boat.SetPosition(rnd.nextInt(90) + 10, rnd.nextInt(90), + (int) _canvas.getWidth(), (int) _canvas.getHeight()); + + _boat.GetDrawningOars().SetNumberOars(Integer.parseInt(_comboBoxNumOars.getValue())); + + _labelSpeedValue.setText(Integer.toString(_boat.GetArmoredVehicle().GetSpeed())); + _labelWeightValue.setText(Double.toString(_boat.GetArmoredVehicle().GetWeight())); + _labelBodyColorValue.setText(_boat.GetArmoredVehicle().GetBodyColor().toString()); + + Draw(); + }); + } + + private void InitMoveButtons() + { + Image img; + ImageView view; + + // Button "Up" + _buttonUp = new Button(); + + img = new Image("arrowUp.png"); + view = new ImageView(img); + view.setFitHeight(14); + view.setFitWidth(14); + _buttonUp.setGraphic(view); + + _buttonUp.setPrefWidth(_buttonMoveWidth); + _buttonUp.setPrefHeight(_buttonMoveHeight); + + _buttonUp.setOnAction(e -> + { + if (_boat != null) + { + _boat.MoveTransport(Direction.Up); + Draw(); + } + }); + + _root.getChildren().add(_buttonUp); + + // Button "Down" + _buttonDown = new Button(); + + img = new Image("arrowDown.png"); + view = new ImageView(img); + view.setFitHeight(14); + view.setFitWidth(14); + _buttonDown.setGraphic(view); + + _buttonDown.setPrefWidth(_buttonMoveWidth); + _buttonDown.setPrefHeight(_buttonMoveHeight); + + _buttonDown.setOnAction(e -> + { + if (_boat != null) + { + _boat.MoveTransport(Direction.Down); + Draw(); + } + }); + + _root.getChildren().add(_buttonDown); + + // Button "Left" + _buttonLeft = new Button(); + + img = new Image("arrowLeft.png"); + view = new ImageView(img); + view.setFitHeight(14); + view.setFitWidth(14); + _buttonLeft.setGraphic(view); + + _buttonLeft.setPrefWidth(_buttonMoveWidth); + _buttonLeft.setPrefHeight(_buttonMoveHeight); + + _buttonLeft.setOnAction(e -> + { + if (_boat != null) + { + _boat.MoveTransport(Direction.Left); + Draw(); + } + }); + + _root.getChildren().add(_buttonLeft); + + // Button "Right" + _buttonRight = new Button(); + + img = new Image("arrowRight.png"); + view = new ImageView(img); + view.setFitHeight(14); + view.setFitWidth(14); + _buttonRight.setGraphic(view); + + _buttonRight.setPrefWidth(_buttonMoveWidth); + _buttonRight.setPrefHeight(_buttonMoveHeight); + + _buttonRight.setOnAction(e -> + { + if (_boat != null) + { + _boat.MoveTransport(Direction.Right); + Draw(); + } + }); + + _root.getChildren().add(_buttonRight); + } + + private void UpdateGUI() + { + double sceneWidth = _scene.getWidth(); + double sceneHeight = _scene.getHeight(); + + _canvas.setWidth(sceneWidth); + _hBox.setPrefWidth(sceneWidth); + _canvas.setHeight(sceneHeight - _hBoxHeight); + _hBox.setTranslateY(sceneHeight - _hBoxHeight); + + _buttonCreate.setTranslateY(sceneHeight - _hBoxHeight - _buttonCreateHeight - _buttonMargin); + + _buttonUp.setTranslateY(sceneHeight - _hBoxHeight - _buttonMoveHeight * 2.0 - _buttonMargin - + _distanceBetweenMoveButtons); + _buttonUp.setTranslateX(sceneWidth - _buttonMargin - _buttonMoveWidth * 2.0 - _distanceBetweenMoveButtons); + + _buttonDown.setTranslateY(sceneHeight - _hBoxHeight - _buttonMoveHeight - _buttonMargin); + _buttonDown.setTranslateX(sceneWidth- _buttonMargin - _buttonMoveWidth * 2.0 - _distanceBetweenMoveButtons); + + _buttonLeft.setTranslateY(sceneHeight - _hBoxHeight - _buttonMoveHeight - _buttonMargin); + _buttonLeft.setTranslateX(sceneWidth - _buttonMargin - _buttonMoveWidth * 3.0 - + _distanceBetweenMoveButtons * 2.0); + + _buttonRight.setTranslateY(sceneHeight - _hBoxHeight - _buttonMoveHeight - _buttonMargin); + _buttonRight.setTranslateX(sceneWidth - _buttonMargin - _buttonMoveWidth); + } + + private void Draw() + { + GraphicsContext gc = _canvas.getGraphicsContext2D(); + + gc.clearRect(0.0, 0.0, _canvas.getWidth(), _canvas.getHeight()); + gc.setFill(Color.WHITE); + gc.fillRect(0.0, 0.0, _canvas.getWidth(), _canvas.getHeight()); + + gc.setStroke(Color.BLACK); + gc.setLineWidth(4); + gc.strokeRect(0.0, 0.0, _canvas.getWidth(), _canvas.getHeight()); + + if (_boat != null) + { + _boat.DrawTransport(gc); + } + } + + public static void main(String[] args) + { + launch(); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.java new file mode 100644 index 0000000..b10b145 --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.java @@ -0,0 +1,14 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +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!"); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.java b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.java new file mode 100644 index 0000000..26cb2f4 --- /dev/null +++ b/src/main/java/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.java @@ -0,0 +1,27 @@ +package com.example.pibd22_kalyshev_y_v_motorboat_hard; + +public enum NumberOars +{ + One, + Two, + Three; + + public static NumberOars FromInteger(int intValue) + { + switch(intValue) + { + case 1: + return One; + + case 2: + return Two; + + case 3: + return Three; + + default: + System.out.println("Error: incorrect value for enum"); + return One; + } + } +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 0000000..c2b9610 --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,10 @@ +module com.example.pibd22_kalyshev_y_v_motorboat_hard { + requires javafx.controls; + requires javafx.fxml; + + requires org.controlsfx.controls; + requires com.dlsc.formsfx; + + opens com.example.pibd22_kalyshev_y_v_motorboat_hard to javafx.fxml; + exports com.example.pibd22_kalyshev_y_v_motorboat_hard; +} \ No newline at end of file diff --git a/src/main/resources/arrowDown.png b/src/main/resources/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e08ba1994a3d1c15bb76811473939640ff124a GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XrhB?LhE&{obL}8!g8>igg(hx`Cgs%455n#hm3H?n2;38~ z;>xn0RWI7>|2>$zP4UYY3%4!OJC3K#*dk~lwf?Lzi_EewlZ_Lm?Ef%rx%}DFzn{(G zR*Wf5Y+1d0`xP0Tu=h&g{P~;YR`wL+KGfCKpA?iodG*oRd)5WG?b!Em8iU8Hw~wM8 t#XhwP;ah(zaCgS@e^qaOhL$n1F|hqMZg^|v)DLtbgQu&X%Q~loCID)}W>o+H literal 0 HcmV?d00001 diff --git a/src/main/resources/arrowLeft.png b/src/main/resources/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ded8e03ce6ed164e4d63c7276856871d5275a428 GIT binary patch literal 257 zcmV+c0sj7pP)>nWM2ykNl6jQG6$N)LPM)5qFR+atgLmuesoit-%L00000NkvXX Hu0mjfQtoR5 literal 0 HcmV?d00001 diff --git a/src/main/resources/arrowRight.png b/src/main/resources/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..3df59321276c99083b4a157af57aeb44892592fb GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X7I?ZihE&`-GToc^fB}#5YDI|_M~x|t9E%+!mN-hXte<{& z*Q)s{eP7N^n-{d*ccoqVLys26hnjPG9`L8KDhJtWwXASwPG#M_%AH;Bm0`oCCf}>c zOu}Cy93l^Tze+qXrAi_wbU*8r_vZq1d!C-Uc)GOr)m9CG#E`VUb!Sw!Zoa-KV*Xx( zt;z?NWmU^pKZ-3*%!)p^F6;k3gGo)tW8Z2YU}#WQ5SSb5u?px`22WQ%mvv4FO#ltT BVxj;5 literal 0 HcmV?d00001 diff --git a/src/main/resources/arrowUp.png b/src/main/resources/arrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..46ff64c771df8a4a683b14e5153e956b0661c961 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOTemLn>~)xq6WEfC5izqWepan>veAMcg;Y>2Rn@m{y8p zJ&4`&r~Q3`*Yk6=A9nCog@oVY5Z(K#Nc`Me-9JmZ?Sxyh1CMcp=Zd^tb@pyFPhffe zypCO!mz_#(-+uM#ov!r7)cmpzzv{`!SKjP>z3YuG~5j?OfK>F0@pd`GrA@I g|GrcHzU~2r-ZMr~#uGPf2fB;F)78&qol`;+0AV>@2LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/resources/com/example/pibd22_kalyshev_y_v_motorboat_hard/hello-view.fxml b/src/main/resources/com/example/pibd22_kalyshev_y_v_motorboat_hard/hello-view.fxml new file mode 100644 index 0000000..d974059 --- /dev/null +++ b/src/main/resources/com/example/pibd22_kalyshev_y_v_motorboat_hard/hello-view.fxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/target/classes/arrowDown.png b/target/classes/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e08ba1994a3d1c15bb76811473939640ff124a GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XrhB?LhE&{obL}8!g8>igg(hx`Cgs%455n#hm3H?n2;38~ z;>xn0RWI7>|2>$zP4UYY3%4!OJC3K#*dk~lwf?Lzi_EewlZ_Lm?Ef%rx%}DFzn{(G zR*Wf5Y+1d0`xP0Tu=h&g{P~;YR`wL+KGfCKpA?iodG*oRd)5WG?b!Em8iU8Hw~wM8 t#XhwP;ah(zaCgS@e^qaOhL$n1F|hqMZg^|v)DLtbgQu&X%Q~loCID)}W>o+H literal 0 HcmV?d00001 diff --git a/target/classes/arrowLeft.png b/target/classes/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ded8e03ce6ed164e4d63c7276856871d5275a428 GIT binary patch literal 257 zcmV+c0sj7pP)>nWM2ykNl6jQG6$N)LPM)5qFR+atgLmuesoit-%L00000NkvXX Hu0mjfQtoR5 literal 0 HcmV?d00001 diff --git a/target/classes/arrowRight.png b/target/classes/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..3df59321276c99083b4a157af57aeb44892592fb GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X7I?ZihE&`-GToc^fB}#5YDI|_M~x|t9E%+!mN-hXte<{& z*Q)s{eP7N^n-{d*ccoqVLys26hnjPG9`L8KDhJtWwXASwPG#M_%AH;Bm0`oCCf}>c zOu}Cy93l^Tze+qXrAi_wbU*8r_vZq1d!C-Uc)GOr)m9CG#E`VUb!Sw!Zoa-KV*Xx( zt;z?NWmU^pKZ-3*%!)p^F6;k3gGo)tW8Z2YU}#WQ5SSb5u?px`22WQ%mvv4FO#ltT BVxj;5 literal 0 HcmV?d00001 diff --git a/target/classes/arrowUp.png b/target/classes/arrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..46ff64c771df8a4a683b14e5153e956b0661c961 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOTemLn>~)xq6WEfC5izqWepan>veAMcg;Y>2Rn@m{y8p zJ&4`&r~Q3`*Yk6=A9nCog@oVY5Z(K#Nc`Me-9JmZ?Sxyh1CMcp=Zd^tb@pyFPhffe zypCO!mz_#(-+uM#ov!r7)cmpzzv{`!SKjP>z3YuG~5j?OfK>F0@pd`GrA@I g|GrcHzU~2r-ZMr~#uGPf2fB;F)78&qol`;+0AV>@2LJ#7 literal 0 HcmV?d00001 diff --git a/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.class b/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/Direction.class new file mode 100644 index 0000000000000000000000000000000000000000..ba9d71ac99bc510411893c0207b8d66ba65e1e26 GIT binary patch literal 1741 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 Q^6kYRi3!>efl%GQ0ZYbItpET3 literal 0 HcmV?d00001 diff --git a/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars$1.class b/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/DrawningOars$1.class new file mode 100644 index 0000000000000000000000000000000000000000..baeba7a18bd047d175b82d0e5f0edfcf121f11cd GIT binary patch literal 935 zcmbtS+iuf95Ix&moCKF9rO;4r1>BMVA|et(s8Aky5m9q_NK_vB5N+&L?RMjh)=oly zfM4MmkPt$sAHYW;W=%x4GQ4oruqNK| z;YfVJ4djFWqlgJm7{z-q*AF5dCf#PxB=h~~a$HRfp9j+sW?1am)AZN2uJ!t+n z(MBFQK~c5HJ^q-cxZ}po-%AZ-DwcJev6MBqH<>HoWHAc&a0a{XymC^ zmu)Pd$dKxUf??wVGEL_fZCt?;gQc_=gj^DDrP{D?jbY`8Pk2r8@UYfa-LdQM210r} zS}SepDBHN6)X|$NgKyZlX>g|JYauM$W+oVSO^+{1=qcoexOwC2*Nw<_xY7%qH+7rRTAPWn4uW_pwg)0qS^0Hidgc uoK5K0XbR8h-#1(ll)XL5KD*p}kC+_B?G*llHc0Zxhm_YM0+};$d)LV&rnp&);*- z$G>y={p@f5`tmCPhw*L%0>mH!Q8YkeXga4XDv7e9&m{7b=hTwTARW?l&F*IqJ37ZB z2q7FqB#KptG8`-!m4v#aROZWSVqTk^>gg%YDdmgSth!jdSX?Yt4BId#4aF|bD&|yT zWT7&tnt8>v7*=IWqmtEabw)KA`a80nx&KW|hOruJf@q4O8EYAmPe@9e$^~81XR4ls ziuyvOY9^o3r`9N*!8(RWk@HeU*`T>@%<)y8UP@RcRi|}RG~G@(ZOI7Qupx+zQEb9y zhHVdYEGhb;VkHJmWqwvG5semaiFPPxsdh#yml@hS>Y+#Z4U(PXlH5w0P9I4=;u<|w zgWoq6#dhpq2u%|!zo-x|*pa3W-}W|iMA6BcBbIF%b1Ls3$va%mQP*g5jd9trB>CiB z#|UE|UI=1;6bEpSq3(sVv`I_+6W9=KAQ#4e{s7%8NKI2uKUZ)@8F`{UV2hK3`#fz*&Br>g@cdC)~Q zxk}zuj=4&oYYe!?i*BDGS2-p-mL!k4O$Xhke%DC5O@pqIbCtZSjLD8A$%SeYLm*{L zsSIm!nyyyY=(sXjCS`5TC@JM}#nkw9O$^wx8ijG+lSYU)){+d31=aR$NPrT-I5|Nf z$Wz7im{BgPJYTRZd6=bC^r&NAjUYa_**2BZTy116=tBIy)u4_)6eacJDw)Y}mM~Ld z*#2NxJz@Yu*s>MV9yP2}`N`Xr&-0WSIZhopLL5`@F zJ*@I&py@}mx~`h3vSL}Pg{_qD1lm7=zLa1bi!vY80npilL}i7p5>zv)8{%Jp-Eg|; zRPttC8dOHB9Wamcbj4u8qLL3DaPUAlzUdBvx6ybXz#khxBSp??2eQt&4%Z+w1U423 z!?1`8HC%rUC&jyNqvc`NTJpNZ!;=1GNm!y8a@Iv$suQGX1KDS@1JGz!PoTx|$Ybvt}gNPV8oV*u&E3VP~+H zoyC5p;sCo$FB2c4mt94YeMXP)W%RS}aG3oJnf-zR_BT>O5NV+uM}_B+5qdEwj3O%( zkP{{_ES$%P@E-EQ2N)HuVNCcG1>tKP7k_i#%16Q{)%oDn-QA@0UYVg@gZ zBPfbfctyMfMSK&J;>VbFvRAyCm)z_nUd3g+N?D6?6<(v6Qr;x%4YEXBp_N&KhR_N= hU%|B%+*@HOlHVj*z*~5mYM##b;T^IfjzvaO=pV-Ip1%M9 literal 0 HcmV?d00001 diff --git a/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.class b/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/EntityBoat.class new file mode 100644 index 0000000000000000000000000000000000000000..05aaf42fd0ab9a0ce431c5668c1261e19a83c8c5 GIT binary patch literal 1266 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 HA&vZh(au0K literal 0 HcmV?d00001 diff --git a/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.class b/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/HelloController.class new file mode 100644 index 0000000000000000000000000000000000000000..58f51c5e7be78ff5581a3f2969457c17c45a3533 GIT binary patch literal 703 zcmbtS(M}UV6g{()E?tUX0To0jZ@`0-@I+FBVw1+0RTCkVx6SN!paZir&F-|8&oVKZ z_}~ZlQN}x4jKstzU+&4BIrp49ckYj$-@XHQj-3br=0en(m`9yq8(2UiMAXD0nheL8&AFV4e555GsdR97m|P2eQx4@Mxk)BTZk;Vs zD_k-Z#elz(THCHQuCQ9mf?@Ha)TANL*8nQ+RQ-3TkVAEMR7D%Kb_|1HN5meS2^*Y_&l*|Sewq0D7xzt6Do zer%k|WnYyl)$+s`>nfj;q4m4fi)pTT@BB^NVW@TOKr$@H%E-6lJe9?nphC~Knb3Vv zD4*XR*4$8$(u?^2hDg3GYpTh<96M)Cm&S3;5S`j_k;$I&4Xph&`KNv|*rneLXb%`g z`cJ}j%Ibs<2m?Y|3W^UY`hw*@3Vs89Z39bpRH9pzyA3fsA!dN>UtfQzR{#J2 literal 0 HcmV?d00001 diff --git a/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.class b/target/classes/com/example/pibd22_kalyshev_y_v_motorboat_hard/NumberOars.class new file mode 100644 index 0000000000000000000000000000000000000000..5598c541dbf6676cfb4c18542d18dce7d290905f GIT binary patch literal 1685 zcmbtVT~8B16g|VX-F98178ETY6+dWEsUY~(3Mhg$sn)pIg!s@*%L=R8T{7LGy!eBB zQb?3&G(P*IjCZDMsF5dIGTq)gXYM(3KbD`rzI+F;h?0&zhT9FlnYZ8a=C*6+x1IXN z>}>5dcXwM`_D*fLwo_~RfiLPl4{BRnY~-J`n{``MxM(H75HS%&j6th-HbbHO-@ytp zTHHiJMO%C0OZ%7!Q`*tBEn(ZzbKJxLk_`HV>b>&w6^o(xq6bm~DGcgJni#@K;%T_P zyvI;BSANBJc;4mSX1-E?WjBI?fnl81amGX%Bc$XIu;R6wBx#4cZM*W4VLsb+dfDZz zR-wyb1;X(*3*8JdfQmn6;w;7)VnxSuf(3?C-J!yhrCc?EbC}R^-oyo5WJn%rv36U5 zO=>j19Wb2i@H&3}DUk*gz~;?D9Fq*=D?<35Gg_dJN<+rQ@=R zE4a!qs3`spM0ehnVO@`yju4uw#t}8BYGZLE;xOgU>n7$fFAJ#XS_})>TrVZ0Wc`U0 zS@t)mdIM$0vpa3N#_KM5Do2Uyp=}saWxv7QDi@Aq2x%f7ZxUPT-(u6C1X~VWHeorN z9uL}ra9TE3r5;}uezW8S_NFalGD^9ggvF^IRoRFPti;f71-$Y4G2ad)#)}O%Y^}## zGGzl6d*EFtFc_BK77csVkr^N89rGCIwRj006l5e)sto%NT%gv z6Cy_b8<;2jO|mBFDL=*@`aj{s52QYj#c+$hV`@($d>Xey{2cm}*GRFc1DyH+Ch>iL z;qQ>g?4VFUQSH;%5lS-7K%+lEpSnEy8KWQ7b~oMOaUFN1bSx;$A_-Z-y->)zP{>^R zJ?#RMwB%J}=n-1uw9fBA`>+R{mO(3%y7UQI=~Fn#nO5j|lAm!?AB*>l!gw>k;C$)}zF1{hQG^R_Gr@rvlHy z!_!~sY-(EjjQl<{Wn7CWLs!O3R2jwrX7|xA)7Gg{N}Z3QpQNRsQzA4 + + + + + \ No newline at end of file diff --git a/target/classes/module-info.class b/target/classes/module-info.class new file mode 100644 index 0000000000000000000000000000000000000000..eb6ed3ffb6096cce8294c4dec19aba4d29aaca35 GIT binary patch literal 381 zcmaiwK~BRk5JmqKlF}Av!39oHmvmRD5<7ORI6&ki4h`6K<)l%%>$zBP01kz4+zMrf z7c=(!KVMJ&{`vd@@Pzw5dW4ZS*-pt>vB?c#_-b}GmCuEegh@x@@1hoj@Ws0s`UIXD z&1EC>R!P1sl5DYvKZM$sYgxzpxQ?}{j7^NF;USSOTxIF z=Z%ZpRMx1H5JbzF6bxgBcoOqQD~21wgRyUa*3K3KbJQ(XrplD(#_BR}rno!8&QGxO t|6vaRxlcNt9?smQhjRq3uMqlifQth##K^s_aP8~FE4RK9rkzgSfnPXdT-g8s literal 0 HcmV?d00001