From f8038a91c51c5e46c39eee1eb028df350bde64d9 Mon Sep 17 00:00:00 2001 From: EckBalu <eckbalu@gmail.com> Date: Tue, 29 Nov 2022 14:12:34 +0100 Subject: [PATCH] game logic done --- .gradle/7.5.1/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/7.5.1/checksums/md5-checksums.bin | Bin 21847 -> 21897 bytes .gradle/7.5.1/checksums/sha1-checksums.bin | Bin 38153 -> 38315 bytes .../executionHistory/executionHistory.bin | Bin 59364 -> 151507 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.5.1/fileHashes/fileHashes.bin | Bin 24397 -> 24647 bytes .gradle/7.5.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .idea/gradle.xml | 1 + .idea/kotlinScripting.xml | 4 + .idea/libraries/KotlinJavaRuntime.xml | 26 +++ .idea/misc.xml | 2 +- .idea/modules/javafx-game-starter-jdk17.iml | 17 ++ .idea/workspace.xml | 74 ++++---- build.gradle | 1 + src/main/kotlin/cell/AliveCell.kt | 8 + src/main/kotlin/cell/Cell.kt | 16 +- src/main/kotlin/cell/CellArray.kt | 25 +++ src/main/kotlin/cell/DeadCell.kt | 9 + src/main/kotlin/com/example/main.kts | 3 + src/main/kotlin/logic/CellController.kt | 164 +++++++++++++++++- src/main/kotlin/logic/Order.kt | 10 +- 23 files changed, 310 insertions(+), 50 deletions(-) create mode 100644 .idea/kotlinScripting.xml create mode 100644 .idea/libraries/KotlinJavaRuntime.xml create mode 100644 .idea/modules/javafx-game-starter-jdk17.iml create mode 100644 src/main/kotlin/com/example/main.kts diff --git a/.gradle/7.5.1/checksums/checksums.lock b/.gradle/7.5.1/checksums/checksums.lock index 40178fa8c4c2b2fd6a317ec704e2ef2979fc8bd2..ee79fce184381ac4d90595c0d40cf431c6d989b3 100644 GIT binary patch literal 17 VcmZSHDpdA8EskXe0~j!#0st@H1cLwo literal 17 VcmZSHDpdA8EskXe0~jzK0st@91bYAg diff --git a/.gradle/7.5.1/checksums/md5-checksums.bin b/.gradle/7.5.1/checksums/md5-checksums.bin index 4abba3335efaa1fefd635d6e7d23e86c19b3fd1d..3532ba46001b4ecf5846f6882f2dfde073e09f79 100644 GIT binary patch delta 104 zcmcb<im`Jw;|3E6MwiW|5(+E=;&p+h4w8F>7{DMje6z2NH4|guM#UfE8x2+nZg%t# x<25n{N@@bJA_xn7^Iy8Msnxll(K2l3p#z_GF)%Q;9C{j64K{&+r3pyu0RZD49GL(B delta 36 scmeBN&3Jtk;|3E6M(53@5(+Gvb7hQ~7$Y|-{t(}2a6oXgqlXwT0Odjp*#H0l diff --git a/.gradle/7.5.1/checksums/sha1-checksums.bin b/.gradle/7.5.1/checksums/sha1-checksums.bin index 466543a5ae695c131abed6f77a364224df3e605e..bd7f2d2b46cea1cf8fdcc02ae2d037db003a4d11 100644 GIT binary patch delta 240 zcmeBN#k6`g(*_d>#{A8u5|%9dQ@qO-MH+@OfWcJG&8adom<9H{S29xi{H`A=YQOob z{7fPKE{P{C&$3rR1xq)#8r^1RtlX$LgLku|#|a-JW1x&K5UYZ)$o;5S&to-}?3Ee5 zE(>yhxw7<|-a`fk#+E}*qpBfBury6>Oc9Q~GOx4U{@#r6fc2){d8@ba{F*r%qAuPN rqHa+HkVZ3o_3<}<C%sCqQ0<)9&`@r+=Kk)^ZBShgAiC7{fOG)>o-j^0 delta 42 zcmV+_0M-Ais{)Ct0<bg~0c^817&!#9h8&Lrvn?Qz60_Da(gy)Cu_53Mvq4D6Oh=Rt AlK=n! diff --git a/.gradle/7.5.1/executionHistory/executionHistory.bin b/.gradle/7.5.1/executionHistory/executionHistory.bin index 57779fe7fb950333de91eb6f31159545d54effe7..05b26ec28994363f22ef2e5f8b5269029e6a26b1 100644 GIT binary patch delta 13383 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 delta 46 ycmcaSpYzFi<_RK#j0|AleT{*^MGeSQ+?cpSd}4vkWJw7}W`_Phn`0%~&jSD|lnuiG diff --git a/.gradle/7.5.1/executionHistory/executionHistory.lock b/.gradle/7.5.1/executionHistory/executionHistory.lock index 1f7fdff57fd110b3d560a87713f63a38a1d88111..d255a882985746c08d21e57cdf78161b981b12eb 100644 GIT binary patch literal 17 TcmZP$^qZ<UG0vZv0RprDA?gCe literal 17 TcmZP$^qZ<UG0vZv0RngcA<P1% diff --git a/.gradle/7.5.1/fileHashes/fileHashes.bin b/.gradle/7.5.1/fileHashes/fileHashes.bin index c74d1f972bd8ed93252399a87c4004a2808b19cd..0ecd3fe7f2208f48be943812e370c404dc9c715c 100644 GIT binary patch delta 3248 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 delta 2784 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 diff --git a/.gradle/7.5.1/fileHashes/fileHashes.lock b/.gradle/7.5.1/fileHashes/fileHashes.lock index e59626a068b0fca03bb0142ad8dc04c4c376a90f..fbd1709fd026a1cb848a0fd11a4c95695a08f040 100644 GIT binary patch literal 17 VcmZS9cJ_&ya&+kl1~6da0st(E1L^<( literal 17 UcmZS9cJ_&ya&+kl1_-DH04(_gTL1t6 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index f6c45a7eb45e57f4e73fb8a541f20c8ebcc250f6..db43ea3726acd45a7170fe3103747f21585ca969 100644 GIT binary patch literal 17 UcmZRcZha_bcFx~&1_($405;GB)c^nh literal 17 UcmZRcZha_bcFx~&1_<y105-G)xc~qF diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 888ba331e12c78fac6c96e40fbb4da76382957e0..6d37ac60418a44fd05ec38e0eae2cb391de9caed 100644 GIT binary patch literal 8 PcmZQzU~D;b`Dz0I3QYrW literal 8 PcmZQzU~D<CT)iCt2y6nI diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ba1ec5c..611e7c8 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> + <component name="GradleMigrationSettings" migrationVersion="1" /> <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> diff --git a/.idea/kotlinScripting.xml b/.idea/kotlinScripting.xml new file mode 100644 index 0000000..2a4c386 --- /dev/null +++ b/.idea/kotlinScripting.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="KotlinScriptingSettings" supportWarning="false" /> +</project> \ No newline at end of file diff --git a/.idea/libraries/KotlinJavaRuntime.xml b/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 0000000..a209aee --- /dev/null +++ b/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,26 @@ +<component name="libraryTable"> + <library name="KotlinJavaRuntime" type="repository"> + <properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.21" /> + <CLASSES> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21-javadoc.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21-javadoc.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21-javadoc.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-javadoc.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.21/kotlin-stdlib-jdk8-1.7.21-sources.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.21/kotlin-stdlib-1.7.21-sources.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.21/kotlin-stdlib-common-1.7.21-sources.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar!/" /> + <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.21/kotlin-stdlib-jdk7-1.7.21-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index a7174d6..c049206 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,5 +4,5 @@ <component name="FrameworkDetectionExcludesConfiguration"> <file type="web" url="file://$PROJECT_DIR$" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="corretto-17" project-jdk-type="JavaSDK" /> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="corretto-17" project-jdk-type="JavaSDK" /> </project> \ No newline at end of file diff --git a/.idea/modules/javafx-game-starter-jdk17.iml b/.idea/modules/javafx-game-starter-jdk17.iml new file mode 100644 index 0000000..44e2fa4 --- /dev/null +++ b/.idea/modules/javafx-game-starter-jdk17.iml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module version="4"> + <component name="FacetManager"> + <facet type="kotlin-language" name="Kotlin"> + <configuration version="5" platform="JVM 1.8" allPlatforms="JVM [1.8]"> + <compilerSettings /> + <compilerArguments> + <stringArguments> + <stringArg name="jvmTarget" arg="1.8" /> + <stringArg name="apiVersion" arg="1.7" /> + <stringArg name="languageVersion" arg="1.7" /> + </stringArguments> + </compilerArguments> + </configuration> + </facet> + </component> +</module> \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9742a68..fd725a3 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,25 +5,18 @@ </component> <component name="ChangeListManager"> <list default="true" id="ec779897-06a9-43c6-9402-278f1567af53" name="Changes" comment=""> - <change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/kotlin_gol.iml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/cell/AliveCell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/AliveCell.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/cell/Cell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/Cell.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/cell/CellArray.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/CellArray.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/cell/DeadCell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/DeadCell.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/cell/Position.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/Position.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/gui/GamePanel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/gui/GamePanel.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/gui/MyFrame.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/gui/MyFrame.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/gui/MyMouseListener.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/gui/MyMouseListener.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/gui/MyMouseMotionListener.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/gui/MyMouseMotionListener.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/logic/Calculations.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/logic/Calculations.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/logic/CellController.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/logic/CellController.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/logic/Order.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/logic/Order.kt" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/kotlin/main/main/Main.kt" beforeDir="false" /> + <change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/.gradle/file-system.probe" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/file-system.probe" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/.idea/gradle.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/gradle.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/cell/AliveCell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/AliveCell.kt" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/cell/Cell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/Cell.kt" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/cell/CellArray.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/CellArray.kt" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/cell/DeadCell.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/cell/DeadCell.kt" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/logic/CellController.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/logic/CellController.kt" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/kotlin/logic/Order.kt" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/kotlin/logic/Order.kt" afterDir="false" /> </list> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> @@ -77,20 +70,20 @@ <option name="hideEmptyMiddlePackages" value="true" /> <option name="showLibraryContents" value="true" /> </component> - <component name="PropertiesComponent">{ - "keyToString": { - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "WebServerToolWindowFactoryState": "false", - "last_opened_file_path": "/home/ecki/projects/bme/prog3/nhz/prog3_nagyhf/src", - "nodejs_package_manager_path": "npm", - "project.structure.last.edited": "Project", - "project.structure.proportion": "0.15", - "project.structure.side.proportion": "0.2", - "run.code.analysis.last.selected.profile": "pProject Default", - "settings.editor.selected.configurable": "reference.settings.ide.settings.notifications" + <component name="PropertiesComponent"><![CDATA[{ + "keyToString": { + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "WebServerToolWindowFactoryState": "false", + "last_opened_file_path": "/home/ecki/projects/bme/prog3/nhz/prog3_nagyhf/src", + "nodejs_package_manager_path": "npm", + "project.structure.last.edited": "Modules", + "project.structure.proportion": "0.15", + "project.structure.side.proportion": "0.14614499", + "run.code.analysis.last.selected.profile": "pProject Default", + "settings.editor.selected.configurable": "reference.settings.ide.settings.notifications" } -}</component> +}]]></component> <component name="RecentsManager"> <key name="MoveFile.RECENT_KEYS"> <recent name="$PROJECT_DIR$/src/main/kotlin/main" /> @@ -100,7 +93,7 @@ <recent name="$PROJECT_DIR$/src/main/main" /> </key> </component> - <component name="RunManager" selected="Gradle.kotlin_gol [run]"> + <component name="RunManager"> <configuration type="JetRunConfigurationType"> <option name="MAIN_CLASS_NAME" value="main/kotlin/com/example/Main" /> <module name="kotlin_gol" /> @@ -109,6 +102,12 @@ <option name="Make" enabled="true" /> </method> </configuration> + <configuration default="true" type="JetRunConfigurationType"> + <module name="kotlin_gol" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> <configuration name="/home/ecki/projects/bme/kotlin/kotlin_gol [run]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true"> <ExternalSystemSettings> <option name="executionName" /> @@ -151,12 +150,6 @@ <DebugAllEnabled>false</DebugAllEnabled> <method v="2" /> </configuration> - <configuration default="true" type="JetRunConfigurationType"> - <module name="kotlin_gol" /> - <method v="2"> - <option name="Make" enabled="true" /> - </method> - </configuration> <configuration default="true" type="KotlinStandaloneScriptRunConfigurationType"> <module name="kotlin_gol" /> <option name="filePath" /> @@ -184,7 +177,8 @@ <option name="presentableId" value="Default" /> <updated>1669674283421</updated> <workItem from="1669674286277" duration="4187000" /> - <workItem from="1669678533992" duration="1585000" /> + <workItem from="1669678533992" duration="1660000" /> + <workItem from="1669709242168" duration="9901000" /> </task> <servers /> </component> diff --git a/build.gradle b/build.gradle index 7c7fc08..7c4c457 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ repositories { dependencies { testImplementation 'junit:junit:4.13.2' + implementation("org.jetbrains.kotlin:kotlin-script-runtime:1.5.21") } tasks.withType(KotlinCompile).configureEach { diff --git a/src/main/kotlin/cell/AliveCell.kt b/src/main/kotlin/cell/AliveCell.kt index e69de29..7651bc8 100644 --- a/src/main/kotlin/cell/AliveCell.kt +++ b/src/main/kotlin/cell/AliveCell.kt @@ -0,0 +1,8 @@ +package cell + +class AliveCell(position: Position) : Cell(position) { + override fun isAlive(): Boolean { + return true + } + +} \ No newline at end of file diff --git a/src/main/kotlin/cell/Cell.kt b/src/main/kotlin/cell/Cell.kt index 746d0dc..79c5f80 100644 --- a/src/main/kotlin/cell/Cell.kt +++ b/src/main/kotlin/cell/Cell.kt @@ -1,7 +1,17 @@ package cell -class Cell { - fun isAlive(): Boolean { - TODO("Not yet implemented") +abstract class Cell (position: Position) { + private var mark: Boolean = false + private val position: Position = position + fun getPosition(): Position {return position} + abstract fun isAlive(): Boolean + public fun setMark(stat: Boolean) { mark=stat } + public fun getPositionX() : Int { + return position.getX() } + public fun getPositionY() : Int { + return position.getY() + } + + fun getMark(): Boolean { return mark } } \ No newline at end of file diff --git a/src/main/kotlin/cell/CellArray.kt b/src/main/kotlin/cell/CellArray.kt index e69de29..c2dc160 100644 --- a/src/main/kotlin/cell/CellArray.kt +++ b/src/main/kotlin/cell/CellArray.kt @@ -0,0 +1,25 @@ +package cell + +class CellArray(width: Int, height: Int) { + val cells = ArrayList<ArrayList<Cell>>() + + init { + val x: Int = width / 10 + val y: Int = height / 10 + for (i in 0..x) { + val column = ArrayList<Cell>() + for (j in 0..y) + column.add(j, DeadCell(Position(i, j))) + cells.add(column) + } + } + + fun size(): IntRange { return cells.indices} + + operator fun get(i: Int) : ArrayList<Cell> {return cells[i]} + fun set(c: CellArray) { + cells.clear() + cells.addAll(c.cells) + } +} + diff --git a/src/main/kotlin/cell/DeadCell.kt b/src/main/kotlin/cell/DeadCell.kt index e69de29..3e47349 100644 --- a/src/main/kotlin/cell/DeadCell.kt +++ b/src/main/kotlin/cell/DeadCell.kt @@ -0,0 +1,9 @@ +package cell + +class DeadCell(position: Position) : Cell(position){ + + override fun isAlive(): Boolean { + return false + } + +} \ No newline at end of file diff --git a/src/main/kotlin/com/example/main.kts b/src/main/kotlin/com/example/main.kts new file mode 100644 index 0000000..6a47962 --- /dev/null +++ b/src/main/kotlin/com/example/main.kts @@ -0,0 +1,3 @@ +val result = 2 +println(result.plus(1)) +println(result) \ No newline at end of file diff --git a/src/main/kotlin/logic/CellController.kt b/src/main/kotlin/logic/CellController.kt index 586c19c..0921b72 100644 --- a/src/main/kotlin/logic/CellController.kt +++ b/src/main/kotlin/logic/CellController.kt @@ -1,9 +1,167 @@ package logic +import cell.AliveCell import cell.Cell +import cell.CellArray +import cell.DeadCell -class CellController { - fun numberOfLiveNeighbour(cell: Cell): Any? { - TODO("Not yet implemented") +class CellController(height: Int, width: Int, order: Order) { + private val cells: CellArray = CellArray(height, width) + private val order: Order = Order(order) + + fun setOrder(born: String, survive: String) { + order.setBorn(born) + order.setSurvive(survive) + } + + fun iterate(pause: Boolean) { + if(!pause){ + for(i in cells.size()) { + for(iterator in cells[i]) + markItsFate(iterator) + } + } + } + + fun makeKillings(pause: Boolean) { + if(!pause){ + for(i in cells.size()) { + for(cell in cells[i]){ + decideItsFate(cell) + } + } + } + } + + private fun markItsFate(cell: Cell) { + if(cell.isAlive()){ + if(order.shouldDie(cell, this)) + markCell(cell) + } else { + if(order.shouldBorn(cell, this)) + markCell(cell) + } + } + + private fun decideItsFate(cell: Cell) { + if(cell.isAlive() && cell.getMark()) + kill(cell) + else if (!cell.isAlive() && cell.getMark()) + born(cell) + } + + fun numberOfAliveNeighbour(cell: Cell): Int { + var result = 0 + if(topIsAlive(cell)) result++ + if(topLeftIsAlive(cell)) result++ + if(topRightIsAlive(cell)) result++ + if(bottomIsAlive(cell)) result++ + if(bottomLeftIsAlive(cell)) result++ + if(bottomRightIsAlive(cell)) result++ + if(leftIsAlive(cell)) result++ + if(rightIsAlive(cell)) result++ + return result + } + + private fun topIsAlive(cell: Cell): Boolean { + if(isOnTop(cell)) return false + return top(cell).isAlive() + } + private fun topLeftIsAlive(cell: Cell): Boolean { + if(isOnTop(cell) && isOnLeft(cell)) return false + return topLeft(cell).isAlive() + } + + private fun topRightIsAlive(cell: Cell): Boolean { + if(isOnTop(cell) && isOnRight(cell)) return false + return topRight(cell).isAlive() + } + + private fun bottomIsAlive(cell: Cell): Boolean { + if(isOnBottom(cell)) return false + return bottom(cell).isAlive() + } + private fun bottomLeftIsAlive(cell: Cell): Boolean { + if(isOnBottom(cell) && isOnLeft(cell)) return false + return bottomLeft(cell).isAlive() + } + + private fun bottomRightIsAlive(cell: Cell): Boolean { + if(isOnBottom(cell) && isOnRight(cell)) return false + return bottomRight(cell).isAlive() + } + + private fun leftIsAlive(cell: Cell): Boolean { + if(isOnLeft(cell)) return false + return left(cell).isAlive() + } + + private fun rightIsAlive(cell: Cell): Boolean { + if(isOnRight(cell)) return false + return right(cell).isAlive() + } + + private fun top(cell:Cell) : Cell { + return cells[cell.getPositionX()][cell.getPositionY()-1] + } + private fun topLeft(cell: Cell): Cell { + return cells[cell.getPositionX()-1][cell.getPositionY()-1] + } + + private fun topRight(cell: Cell): Cell { + return cells[cell.getPositionX()+1][cell.getPositionY()-1] + } + + private fun bottom(cell:Cell) : Cell { + return cells[cell.getPositionX()][cell.getPositionY()+1] + } + private fun bottomLeft(cell: Cell): Cell { + return cells[cell.getPositionX()-1][cell.getPositionY()+1] + } + + private fun bottomRight(cell: Cell): Cell { + return cells[cell.getPositionX()+1][cell.getPositionY()+1] + } + + private fun left(cell:Cell) : Cell { + return cells[cell.getPositionX()-1][cell.getPositionY()] + } + + private fun right(cell:Cell) : Cell { + return cells[cell.getPositionX()+1][cell.getPositionY()] + } + + private fun isOnTop(cell: Cell): Boolean { + return cell.getPositionY() == 0 + } + private fun isOnBottom(cell: Cell): Boolean { + return cell.getPositionY() == (cells[0].size - 1) + } + private fun isOnLeft(cell: Cell): Boolean { + return cell.getPositionX() == 0 + } + private fun isOnRight(cell: Cell): Boolean { + return cell.getPositionX() == (cells.cells.size - 1) + } + + fun randomBegin() { + for(i in cells.size()){ + for(cell in cells[i]){ + if(Math.random() <= 0.5) + born(cell) + } + } + } + + private fun markCell(cell: Cell) { + cells[cell.getPositionX()][cell.getPositionY()].setMark(true) + } + + private fun born(cell: Cell) { + cells[cell.getPositionX()][cell.getPositionY()] = AliveCell(cell.getPosition()) + } + + private fun kill(cell: Cell) { + cells[cell.getPositionX()][cell.getPositionY()] = DeadCell(cell.getPosition()) } } \ No newline at end of file diff --git a/src/main/kotlin/logic/Order.kt b/src/main/kotlin/logic/Order.kt index d7c0005..80ff0bc 100644 --- a/src/main/kotlin/logic/Order.kt +++ b/src/main/kotlin/logic/Order.kt @@ -4,22 +4,26 @@ import cell.Cell import logic.Calculations.Companion.strSlice class Order(born: String, survive: String) { + constructor(order: Order) : this(order.born.toString(), order.survive.toString()) + private val born: ArrayList<Int> = strSlice(born.toString()) private val survive: ArrayList<Int> = strSlice(survive.toString()) fun setBorn(born: String) { this.born.clear() + this.born.addAll(strSlice(born)) } - fun setSurvive(born: String) { + fun setSurvive(survive: String) { this.survive.clear() + this.survive.addAll(strSlice(survive)) } fun shouldDie(cell: Cell, cellc: CellController) : Boolean { for (i in survive.indices) { if (cell.isAlive()) { - if (survive[i] == cellc.numberOfLiveNeighbour(cell)) { + if (survive[i] == cellc.numberOfAliveNeighbour(cell)) { return false } } @@ -30,7 +34,7 @@ class Order(born: String, survive: String) { fun shouldBorn(cell: Cell, cellc: CellController): Boolean { for (i in born.indices) { if (!cell.isAlive()) { - if (born[i] == cellc.numberOfLiveNeighbour(cell)) { + if (born[i] == cellc.numberOfAliveNeighbour(cell)) { return true } } -- GitLab