精選文章
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
2026 和 AI 一起寫程式 - 3 井字遊戲 - 1 kotlin 2.3
前篇: 2026 和 AI 一起寫程式 - 2 井字遊戲 - 0
續前篇; 在介紹用 Q-learning 的方式前, 先來看看以前遊戲的決策
在遊戲決策演算法中, 有一個叫做 MiniMax 演算法 - 維基百科
再開一個 repository : https://github.com/neojou/MiniMax-Tic-Tac-Toe.git
順便整理記錄一下先前做的
1. 先在 Github 新開一個 Repository
2. 用 IntelliJ IDEA clone github 的 Repository
( 我是用社群免費版的, 可以發現這個和 Android Studio 非常像^^ )
3. 可以用 IntelliJ IDEA -> Check for Updates... 更新到最新
4. 重要檔案, 可以把這些檔案從原本可執行的專案 copy 過來
build.gradle.kts
gradle.properties -> 先前有遇到編譯時 memory 問題, 後詳述
settings.gradle.kts
src/ 下目前按照 Kotlin Multiplatform 的規劃, 先 desktop / web (wasmJS) 共用
有 commonMain , desktopMain, wasmJsMain 三個, 其他像 for Android 和 iOS 的,
之後再來加;
src/commonMain/
kotlin/com/neojou/App.kt. -> 進入點
src/desktopMain/
kotlin/com/neojou/Main.kt -> Desktop 從這邊開始執行
src/wasmJsMain/
kotlin/com/neojou/WasmMain.kt -> wasm/JavaScript 從這開始
resources/index.html -> 執行時 browser 一開始讀的檔, 裡面有定義 js 名稱
5. kotlin compiler 版本
在 build.gradle.kts 一開始的地方
plugins {
kotlin("multiplatform") version "2.3.0"
id("org.jetbrains.compose") version "1.10.0"
id("org.jetbrains.kotlin.plugin.compose") version "2.3.0"
}
可以參考官網:https://kotlinlang.org/
目前最新的是 2.3.0 版
IDEA 右邊可以開啟 Gradle 的視窗, sync 時會載入
Kotlin 2.3 看來在 Multiplatform 有些加強, 換成這版看看問題會不會比較少^^
JVM 與 Native
在 Kotlin/JVM 上,2.3.0 新增支援產生 Java 25 位元碼。
在 Kotlin/Native 上,2.3.0 透過 Swift export 強化互通(例如支援 native enum 與 variadic 參數),並把 C/Objective-C library import 推進到 Beta,同時改善 Release 建置效能。
Wasm 與 JS
在 Kotlin/Wasm 上,2.3.0 提到預設啟用 KClass.qualifiedName(降低從 JVM 搬到 Wasm 的行為落差),並在例外處理與字元儲存等面向做了更新(例如 wasmWasi 目標的例外處理提案預設策略)。
在 Kotlin/JS 上,2.3.0 帶來實驗性的 suspend 函式匯出到 JavaScript、LongArray 的 BigInt64Array 表示選項、以及 companion object 匯出/存取方式的統一與更多互通註解支援。
6. Gradle 版本
可以用 % ./gradlew --version 看到
目前最新版 : 9.3.1 - Release Notes
但 kotlin 2.3.0 其實還是用 Gradle 9.0.0 來做; 所以可能在這版會比較穩定
https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin
% ./gradlew wrapper --gradle-version=9.0.0 && ./gradlew wrapper
7. gradle.properties
先前在 wasm 遇到了 memory 問題, 所以新增這個檔, 設定如下:% cat gradle.properties
org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8
kotlin.daemon.jvmargs=-Xmx4g





留言
張貼留言