From 145a432f7db3793a15fb178b780bb58de447ed19 Mon Sep 17 00:00:00 2001 From: flykhan Date: Sun, 26 Apr 2026 22:33:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=AF=E5=88=86=E6=A6=9C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=A2=9E=E5=8A=A0=E5=AF=B9=E6=89=8B=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E5=90=84=E8=87=AA=E5=BE=97=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/unogame/ui/screens/LocalGameScreen.kt | 20 +++++++++++++++---- .../unogame/ui/screens/ScoreboardScreen.kt | 11 ++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/unogame/ui/screens/LocalGameScreen.kt b/app/src/main/java/com/unogame/ui/screens/LocalGameScreen.kt index 5199eed..f900ec3 100644 --- a/app/src/main/java/com/unogame/ui/screens/LocalGameScreen.kt +++ b/app/src/main/java/com/unogame/ui/screens/LocalGameScreen.kt @@ -66,7 +66,8 @@ data class ScoreEntry( val playerCount: Int, val turnNumber: Int, val date: Long, - val scoreDetail: String? = "" + val scoreDetail: String? = "", + val opponentDetail: String? = "" ) object Scoreboard { @@ -95,7 +96,8 @@ object Scoreboard { duration: Int, playerCount: Int, turnNumber: Int, - scoreDetail: String = "" + scoreDetail: String = "", + opponentDetail: String = "" ) { val scores = loadScores(context).toMutableList() scores.add( @@ -108,7 +110,8 @@ object Scoreboard { playerCount = playerCount, turnNumber = turnNumber, date = System.currentTimeMillis(), - scoreDetail = scoreDetail + scoreDetail = scoreDetail, + opponentDetail = opponentDetail ) ) saveScores(context, scores.sortedByDescending { it.points }.take(50)) @@ -201,6 +204,14 @@ fun LocalGameScreen( } } val detailStr = scoreDetails.joinToString(", ") + // 对手名和各自总分 + val opponentDetails = state.players.filter { it.id != myPlayerId }.joinToString(";") { p -> + val pScore = p.cards.sumOf { card -> + val active = if (state.flipped && card.flipSide != null) card.flipSide else card + active.score + } + "${p.name}:${pScore}分" + } Scoreboard.addEntry( context = context, name = humanPlayerName, @@ -210,7 +221,8 @@ fun LocalGameScreen( duration = gameDuration, playerCount = totalPlayers, turnNumber = gameTurnNumber, - scoreDetail = detailStr + scoreDetail = detailStr, + opponentDetail = opponentDetails ) } } diff --git a/app/src/main/java/com/unogame/ui/screens/ScoreboardScreen.kt b/app/src/main/java/com/unogame/ui/screens/ScoreboardScreen.kt index 33adb64..fa2adda 100644 --- a/app/src/main/java/com/unogame/ui/screens/ScoreboardScreen.kt +++ b/app/src/main/java/com/unogame/ui/screens/ScoreboardScreen.kt @@ -307,6 +307,17 @@ fun ScoreboardScreen(onBack: () -> Unit) { Spacer(modifier = Modifier.height(4.dp)) Text("难度: ${entry.difficulty} | ${entry.playerCount}人 | ${entry.turnNumber}轮", color = Color.White.copy(alpha = 0.5f), fontSize = 12.sp) + // 对手得分 + val opps = (entry.opponentDetail ?: "").split(";").filter { it.isNotEmpty() } + if (opps.isNotEmpty()) { + Spacer(modifier = Modifier.height(8.dp)) + Text("对手得分", color = GoldAccent, fontSize = 14.sp, fontWeight = FontWeight.Bold) + Spacer(modifier = Modifier.height(4.dp)) + opps.forEach { opp -> + Text(opp, color = Color.White.copy(alpha = 0.7f), fontSize = 13.sp, + modifier = Modifier.padding(vertical = 1.dp)) + } + } Spacer(modifier = Modifier.height(12.dp)) Text("分数明细", color = GoldAccent, fontSize = 14.sp, fontWeight = FontWeight.Bold) Spacer(modifier = Modifier.height(6.dp))