You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tron游戏中player1与player2身体列表碰撞时如何让得分标签+1

Tron游戏得分累计失效问题修复方案

问题根因

  • 核心问题在Score1()和Score2()方法的变量作用域错误:displayScore是方法内部的局部变量,每次调用方法时都会重新初始化为0,执行displayScore++后永远只能得到1,所以第二次及以后调用时标签显示的数值不会发生变化。
  • 次要问题:原碰撞处理逻辑存在重复触发得分的风险,同一个碰撞事件可能被多次判定、多次累加分数。

修复步骤

步骤1:新增全局得分变量

在类的成员变量定义区域,新增两个全局得分变量,程序启动时默认初始化为0:

Player player1;
Player player2;
List<Player> players1 = new List<Player>();
List<Player> players2 = new List<Player>();
// 新增全局得分变量
private int _redScore = 0;
private int _blueScore = 0;

步骤2:修改得分方法逻辑

将原得分方法中的局部变量替换为全局变量做累加:

private void Score1() {
    _redScore++;
    label1.Text = "Red Score: " + _redScore;
}

private void Score2() {
    _blueScore++;
    label2.Text = "Blue Score: " + _blueScore;
}

步骤3:优化碰撞检测逻辑(可选,避免重复加分)

原碰撞处理逻辑中只要命中列表内的元素就会触发得分,可能单次碰撞多次加分,优化为单次检测周期内最多触发一次得分:

private void HandleCollision() {
    bool isPlayer1Dead = false;
    bool isPlayer2Dead = false;

    // 检测玩家2是否撞到玩家1的身体
    foreach (var item in players1) {
        if (player2.Intersect(item.Rectangle)) {
            isPlayer2Dead = true;
            break;
        }
    }
    // 检测玩家1是否撞到玩家2的身体
    foreach (var item in players2) {
        if (player1.Intersect(item.Rectangle)) {
            isPlayer1Dead = true;
            break;
        }
    }
    // 检测玩家是否撞到自己的身体
    foreach (var item in players1) {
        if (player1.Intersect(item.Rectangle)) {
            isPlayer1Dead = true;
            break;
        }
    }
    foreach (var item in players2) {
        if (player2.Intersect(item.Rectangle)) {
            isPlayer2Dead = true;
            break;
        }
    }

    // 处理碰撞结果
    if (isPlayer2Dead) {
        Score1();
    } else if (isPlayer1Dead) {
        Score2();
    }

    // 任意玩家死亡就重置游戏状态
    if (isPlayer1Dead || isPlayer2Dead) {
        players1.Clear();
        players2.Clear();
        SetPlayer1();
        SetPlayer2();
        position = Position.Null;
        position1 = Position1.Null;
    }
}

内容的提问来源于stack exchange,提问作者xibrox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:15:01