Java 20 shenanigans 😝

master
Caleb Fontenot 2023-09-14 16:55:02 +07:00
parent 42fe884f16
commit d00d7318b5
17 changed files with 132 additions and 43 deletions

@ -0,0 +1,41 @@
Script started on 2023-06-27 02:14:53-05:00 [COMMAND="./run.sh" TERM="xterm-256color" TTY="/dev/pts/2" COLUMNS="76" LINES="38"]
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< com.calebfontenot:MP5_CalebFontenot >-----------------
[INFO] Building MP5_CalebFontenot 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ MP5_CalebFontenot ---
Enter 0 to quit, and 1 to enter the number of students: 10 
Enter the number of students: 10
Student 1 is interacting with the lockers!
true true true true true true true true true true 
Student 2 is interacting with the lockers!
true false true false true false true false true false 
Student 3 is interacting with the lockers!
true false false false true true true false false false 
Student 4 is interacting with the lockers!
true false false true true true true true false false 
Student 5 is interacting with the lockers!
true false false true false true true true false true 
Student 6 is interacting with the lockers!
true false false true false false true true false true 
Student 7 is interacting with the lockers!
true false false true false false false true false true 
Student 8 is interacting with the lockers!
true false false true false false false false false true 
Student 9 is interacting with the lockers!
true false false true false false false false true true 
Student 10 is interacting with the lockers!
true false false true false false false false true false 
Locker 1 is open.
Locker 4 is open.
Locker 9 is open.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.794 s
[INFO] Finished at: 2023-06-27T02:15:16-05:00
[INFO] ------------------------------------------------------------------------

Script done on 2023-06-27 02:15:17-05:00 [COMMAND_EXIT_CODE="0"]

@ -0,0 +1,4 @@
Script started on 2023-06-27 02:14:09-05:00 [COMMAND="./run.shANSI" TERM="xterm-256color" TTY="/dev/pts/2" COLUMNS="76" LINES="38"]
zsh:1: no such file or directory: ./run.shANSI
Script done on 2023-06-27 02:14:10-05:00 [COMMAND_EXIT_CODE="127"]

@ -0,0 +1,7 @@
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle$Apple.class
com/calebfontenot/lab4_calebfontenot/Circle.class
com/calebfontenot/lab4_calebfontenot/Rectangle.class
com/calebfontenot/lab4_calebfontenot/GeometricObject.class
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle$Fruit.class
com/calebfontenot/lab4_calebfontenot/Lab4_CalebFontenot.class
com/calebfontenot/lab4_calebfontenot/TestCircleRectangle.class

@ -0,0 +1,5 @@
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Lab4_CalebFontenot.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/TestCircleRectangle.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Circle.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/GeometricObject.java
/home/caleb/ASDV-Java/Semester 2/Assignments/lab4_CalebFontenot_oldGoshDarnitMarkouREEE/src/main/java/com/calebfontenot/lab4_calebfontenot/Rectangle.java

@ -119,7 +119,43 @@ is divided into following sections:
<property name="module.name" value=""/> <property name="module.name" value=""/>
</target> </target>
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property,-init-modules-supported" name="-do-init"> <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property,-init-modules-supported" name="-do-init">
<property name="platform.java" value="${java.home}/bin/java"/> <j2seproject1:property name="platform.home" value="platforms.${platform.active}.home"/>
<j2seproject1:property name="platform.bootcp" value="platforms.${platform.active}.bootclasspath"/>
<j2seproject1:property name="platform.compiler" value="platforms.${platform.active}.compile"/>
<j2seproject1:property name="platform.javac.tmp" value="platforms.${platform.active}.javac"/>
<condition property="platform.javac" value="${platform.home}/bin/javac">
<equals arg1="${platform.javac.tmp}" arg2="$${platforms.${platform.active}.javac}"/>
</condition>
<property name="platform.javac" value="${platform.javac.tmp}"/>
<j2seproject1:property name="platform.java.tmp" value="platforms.${platform.active}.java"/>
<condition property="platform.java" value="${platform.home}/bin/java">
<equals arg1="${platform.java.tmp}" arg2="$${platforms.${platform.active}.java}"/>
</condition>
<property name="platform.java" value="${platform.java.tmp}"/>
<j2seproject1:property name="platform.javadoc.tmp" value="platforms.${platform.active}.javadoc"/>
<condition property="platform.javadoc" value="${platform.home}/bin/javadoc">
<equals arg1="${platform.javadoc.tmp}" arg2="$${platforms.${platform.active}.javadoc}"/>
</condition>
<property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
<condition property="platform.invalid" value="true">
<or>
<contains string="${platform.javac}" substring="$${platforms."/>
<contains string="${platform.java}" substring="$${platforms."/>
<contains string="${platform.javadoc}" substring="$${platforms."/>
</or>
</condition>
<fail unless="platform.home">Must set platform.home</fail>
<fail unless="platform.bootcp">Must set platform.bootcp</fail>
<fail unless="platform.java">Must set platform.java</fail>
<fail unless="platform.javac">Must set platform.javac</fail>
<fail if="platform.invalid">
The J2SE Platform is not correctly set up.
Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files.
Either open the project in the IDE and setup the Platform with the same name or add it manually.
For example like this:
ant -Duser.properties.file=&lt;path_to_property_file&gt; jar (where you put the property "platforms.${platform.active}.home" in a .properties file)
or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used)
</fail>
<available file="${manifest.file}" property="manifest.available"/> <available file="${manifest.file}" property="manifest.available"/>
<condition property="splashscreen.available"> <condition property="splashscreen.available">
<and> <and>
@ -242,20 +278,6 @@ is divided into following sections:
<condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}"> <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
<isset property="profile.available"/> <isset property="profile.available"/>
</condition> </condition>
<condition else="false" property="jdkBug6558476">
<and>
<matches pattern="1\.[56]" string="${java.specification.version}"/>
<not>
<os family="unix"/>
</not>
</and>
</condition>
<condition else="false" property="javac.fork">
<or>
<istrue value="${jdkBug6558476}"/>
<istrue value="${javac.external.vm}"/>
</or>
</condition>
<property name="jar.index" value="false"/> <property name="jar.index" value="false"/>
<property name="jar.index.metainf" value="${jar.index}"/> <property name="jar.index.metainf" value="${jar.index}"/>
<property name="copylibs.rebase" value="true"/> <property name="copylibs.rebase" value="true"/>
@ -343,7 +365,7 @@ is divided into following sections:
</path> </path>
</resourcecount> </resourcecount>
</condition> </condition>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}"> <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src> <src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false"> <dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/> <include name="*"/>
@ -394,7 +416,7 @@ is divided into following sections:
<property location="${build.dir}/empty" name="empty.dir"/> <property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/> <mkdir dir="${empty.dir}"/>
<mkdir dir="@{apgeneratedsrcdir}"/> <mkdir dir="@{apgeneratedsrcdir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}"> <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src> <src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false"> <dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/> <include name="*"/>
@ -436,7 +458,7 @@ is divided into following sections:
<sequential> <sequential>
<property location="${build.dir}/empty" name="empty.dir"/> <property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/> <mkdir dir="${empty.dir}"/>
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}"> <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
<src> <src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false"> <dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/> <include name="*"/>
@ -515,7 +537,7 @@ is divided into following sections:
<element name="customizePrototype" optional="true"/> <element name="customizePrototype" optional="true"/>
<sequential> <sequential>
<property name="junit.forkmode" value="perTest"/> <property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}"> <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
<syspropertyset> <syspropertyset>
<propertyref prefix="test-sys-prop."/> <propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/> <mapper from="test-sys-prop.*" to="*" type="glob"/>
@ -543,7 +565,7 @@ is divided into following sections:
<element name="customizePrototype" optional="true"/> <element name="customizePrototype" optional="true"/>
<sequential> <sequential>
<property name="junit.forkmode" value="perTest"/> <property name="junit.forkmode" value="perTest"/>
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}"> <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
<syspropertyset> <syspropertyset>
<propertyref prefix="test-sys-prop."/> <propertyref prefix="test-sys-prop."/>
<mapper from="test-sys-prop.*" to="*" type="glob"/> <mapper from="test-sys-prop.*" to="*" type="glob"/>
@ -619,7 +641,7 @@ is divided into following sections:
</fileset> </fileset>
</union> </union>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/> <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MP2-chapter4_Java20_CalebFontenot" testname="TestNG tests" workingDir="${work.dir}"> <testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MP2-chapter4_Java20_CalebFontenot" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/> <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset> <propertyset>
<propertyref prefix="test-sys-prop."/> <propertyref prefix="test-sys-prop."/>
@ -850,6 +872,9 @@ is divided into following sections:
<classpath> <classpath>
<path path="@{classpath}"/> <path path="@{classpath}"/>
</classpath> </classpath>
<bootclasspath>
<path path="${platform.bootcp}"/>
</bootclasspath>
</nbjpdastart> </nbjpdastart>
</sequential> </sequential>
</macrodef> </macrodef>
@ -899,7 +924,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/> <attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/> <element name="customize" optional="true"/>
<sequential> <sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" module="@{modulename}"> <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}" module="@{modulename}">
<classpath> <classpath>
<path path="@{classpath}"/> <path path="@{classpath}"/>
</classpath> </classpath>
@ -933,7 +958,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/> <attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/> <element name="customize" optional="true"/>
<sequential> <sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true"> <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
<classpath> <classpath>
<path path="@{classpath}"/> <path path="@{classpath}"/>
</classpath> </classpath>
@ -965,7 +990,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/> <attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/> <element name="customize" optional="true"/>
<sequential> <sequential>
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true"> <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/> <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/> <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/> <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
@ -1199,7 +1224,7 @@ is divided into following sections:
<j2seproject3:copylibs manifest="${tmp.manifest.file}"/> <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
<echo level="info">To run this application from the command line without Ant, try:</echo> <echo level="info">To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/> <property location="${dist.jar}" name="dist.jar.resolved"/>
<echo level="info">java -jar "${dist.jar.resolved}"</echo> <echo level="info">${platform.java} -jar "${dist.jar.resolved}"</echo>
</target> </target>
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.archive" name="-do-jar-jar" unless="do.mkdist"> <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
<j2seproject1:jar manifest="${tmp.manifest.file}"/> <j2seproject1:jar manifest="${tmp.manifest.file}"/>
@ -1301,8 +1326,8 @@ is divided into following sections:
<isset property="main.class.available"/> <isset property="main.class.available"/>
</and> </and>
</condition> </condition>
<property name="platform.jlink" value="${jdk.home}/bin/jlink"/> <property name="platform.jlink" value="${platform.home}/bin/jlink"/>
<property name="jlink.systemmodules.internal" value="${jdk.home}/jmods"/> <property name="jlink.systemmodules.internal" value="${platform.home}/jmods"/>
<exec executable="${platform.jlink}"> <exec executable="${platform.jlink}">
<arg value="--module-path"/> <arg value="--module-path"/>
<arg path="${jlink.systemmodules.internal}:${run.modulepath}:${dist.jar}"/> <arg path="${jlink.systemmodules.internal}:${run.modulepath}:${dist.jar}"/>
@ -1495,16 +1520,19 @@ is divided into following sections:
</not> </not>
</and> </and>
</condition> </condition>
<exec executable="${platform.java}" failonerror="false" outputproperty="platform.version.output">
<arg value="-version"/>
</exec>
<condition else="" property="bug5101868workaround" value="*.java"> <condition else="" property="bug5101868workaround" value="*.java">
<matches pattern="1\.[56](\..*)?" string="${java.version}"/> <matches multiline="true" pattern="1\.[56](\..*)?" string="${platform.version.output}"/>
</condition> </condition>
<condition else="" property="javadoc.html5.cmd.line.arg" value="-html5"> <condition else="" property="javadoc.html5.cmd.line.arg" value="-html5">
<and> <and>
<isset property="javadoc.html5"/> <isset property="javadoc.html5"/>
<available file="${jdk.home}${file.separator}lib${file.separator}jrt-fs.jar"/> <available file="${platform.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
</and> </and>
</condition> </condition>
<javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}"> <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
<classpath> <classpath>
<path path="${javac.classpath}"/> <path path="${javac.classpath}"/>
</classpath> </classpath>

@ -1,8 +1,8 @@
build.xml.data.CRC32=3b569e2a build.xml.data.CRC32=27242178
build.xml.script.CRC32=413afed0 build.xml.script.CRC32=413afed0
build.xml.stylesheet.CRC32=f85dc8f2@1.107.0.48 build.xml.stylesheet.CRC32=f85dc8f2@1.107.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=3b569e2a nbproject/build-impl.xml.data.CRC32=27242178
nbproject/build-impl.xml.script.CRC32=80ea1a25 nbproject/build-impl.xml.script.CRC32=66eac23f
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.107.0.48 nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.107.0.48

@ -40,7 +40,7 @@ jar.archive.disabled=${jnlp.enabled}
jar.compress=false jar.compress=false
jar.index=${jnlp.enabled} jar.index=${jnlp.enabled}
javac.classpath=\ javac.classpath=\
${libs.JavaFX17.classpath} ${libs.JavaFX20.classpath}
# Space-separated list of extra javac options # Space-separated list of extra javac options
javac.compilerargs= javac.compilerargs=
javac.deprecation=false javac.deprecation=false
@ -49,12 +49,11 @@ javac.modulepath=
javac.processormodulepath= javac.processormodulepath=
javac.processorpath=\ javac.processorpath=\
${javac.classpath} ${javac.classpath}
javac.source=17 javac.source=20
javac.target=17 javac.target=20
javac.test.classpath=\ javac.test.classpath=\
${javac.classpath}:\ ${javac.classpath}:\
${build.classes.dir}:\ ${build.classes.dir}
${libs.JavaFX17.classpath}
javac.test.modulepath=\ javac.test.modulepath=\
${javac.modulepath} ${javac.modulepath}
javac.test.processorpath=\ javac.test.processorpath=\
@ -98,10 +97,11 @@ manifest.custom.permissions=
manifest.file=manifest.mf manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false mkdist.disabled=false
platform.active=default_platform platform.active=Graal_JDK_20
run.classpath=\ run.classpath=\
${javac.classpath}:\ ${javac.classpath}:\
${build.classes.dir} ${build.classes.dir}
run.jvmargs=-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler -XX:-UseJVMCINativeLibrary --module-path=/usr/lib --add-modules javafx.fxml,javafx.controls,javafx.media,javafx.fxml
run.modulepath=\ run.modulepath=\
${javac.modulepath} ${javac.modulepath}
run.test.classpath=\ run.test.classpath=\

@ -4,6 +4,7 @@
<configuration> <configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3"> <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MP2-chapter4_Java20_CalebFontenot</name> <name>MP2-chapter4_Java20_CalebFontenot</name>
<explicit-platform explicit-source-supported="true"/>
<source-roots> <source-roots>
<root id="src.dir"/> <root id="src.dir"/>
</source-roots> </source-roots>

@ -39,6 +39,7 @@ public class BouncingBall extends Pane {
final double radius = 20; final double radius = 20;
private double x = radius, y = radius; private double x = radius, y = radius;
private double dx = 1, dy = 1; private double dx = 1, dy = 1;
private long moveEvent = 0;
private Circle circle = new Circle(x, y, radius); private Circle circle = new Circle(x, y, radius);
private Rectangle racket = new Rectangle(RACKET_LENGTH, 20); private Rectangle racket = new Rectangle(RACKET_LENGTH, 20);
private Label infoLabel = new Label("Your mouse cursor must be inside the bounds of the window to play!"); private Label infoLabel = new Label("Your mouse cursor must be inside the bounds of the window to play!");
@ -48,8 +49,8 @@ public class BouncingBall extends Pane {
private Label computerScoreLabel = new Label("Computer Score: 0"); private Label computerScoreLabel = new Label("Computer Score: 0");
private Label nowPlaying = new Label(); private Label nowPlaying = new Label();
private Button restartBgm = new Button("Restart BGM"); private Button restartBgm = new Button("Restart BGM");
private Label jvmVersion = new Label("Java version: Java " + System.getProperty("java.version")); private Label jvmVersion = new Label("JVM version: " + System.getProperty("java.vendor.version"));
private Label moveEventLabel = new Label("Move events: ");
private Timeline animation; private Timeline animation;
private int computerScore, playerScore = 0; private int computerScore, playerScore = 0;
@ -65,8 +66,9 @@ public class BouncingBall extends Pane {
textPane.add(playerScoreLabel, 0, 2); textPane.add(playerScoreLabel, 0, 2);
textPane.add(computerScoreLabel, 0, 3); textPane.add(computerScoreLabel, 0, 3);
textPane.add(nowPlaying, 0, 4); textPane.add(nowPlaying, 0, 4);
textPane.add(jvmVersion, 0, 5); textPane.add(moveEventLabel, 0, 5);
textPane.add(restartBgm, 0, 6); textPane.add(jvmVersion, 0, 6);
textPane.add(restartBgm, 0, 7);
getChildren().addAll(circle, racket, textPane); // Place a ball into this pane getChildren().addAll(circle, racket, textPane); // Place a ball into this pane
racket.relocate(0, 580); racket.relocate(0, 580);
playSound("bgm"); playSound("bgm");
@ -155,6 +157,7 @@ public class BouncingBall extends Pane {
} }
public void moveRacket(double x) { public void moveRacket(double x) {
moveEventLabel.setText("Move events: " + ++moveEvent);
racket.relocate(x, getHeight() - 20); racket.relocate(x, getHeight() - 20);
} }