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

如何在Player对象构造时计算并存储Game Time*0.5的值?

合适的计算逻辑放置方案

根据你的需求,把Game Time * 0.5赋值给Money Spent的逻辑,有几个常见且合理的放置位置,你可以根据自己的业务场景选最合适的:

1. 在构造函数中处理(适合初始化时直接计算)

如果Money Spent的值完全由初始的Game Time决定,不需要后续动态更新,那直接在构造函数里计算赋值是最直接的。你可以修改现有的构造函数(或者新增一个重载),让它自动计算Money Spent:

// 对应你示例里的初始化逻辑,新增/修改带角色名称、财富值、游戏时间的构造函数
public Player(string roleName, int wealth, int gameTime)
{
    // 补充你未贴全的角色名称、财富值的赋值逻辑
    this.PlayerGameTime = gameTime;
    // 直接计算并赋值Money Spent
    this.PlayerMoneySpent = gameTime * 0.5;
}

这样初始化数组时就不用传0了,代码更简洁:

players[0] = new Player("John", 1000, 3);
players[1] = new Player("James", 500, 6);

2. 在PlayerGameTime的Setter中自动更新(适合游戏时间动态变化的场景)

如果玩家的游戏时间会在后续游戏过程中增加/修改,希望Money Spent能自动跟着同步更新,那把计算逻辑放在PlayerGameTime的setter里是最优解:

private int playerGameTime;
private double playerMoneySpent;

public int PlayerGameTime 
{ 
    get { return playerGameTime; } 
    set 
    { 
        playerGameTime = value;
        // 每当游戏时间被设置时,自动计算更新Money Spent
        playerMoneySpent = playerGameTime * 0.5;
    } 
}

public double PlayerMoneySpent { get { return playerMoneySpent; } set { playerMoneySpent = value; } }

// 构造函数简化,无需处理Money Spent
public Player(string roleName, int wealth, int gameTime)
{
    // 补充角色名称、财富值赋值逻辑
    this.PlayerGameTime = gameTime;
}

这样不管是初始化还是后续修改PlayerGameTime,PlayerMoneySpent都会自动同步更新,不用手动重复计算。

3. 单独写一个计算方法(适合需要手动触发计算的场景)

如果Money Spent的计算不需要每次游戏时间变化都触发,而是要在特定时机(比如玩家结算、触发特定游戏事件时)才执行,那可以写一个独立的方法来控制计算时机:

public class Player
{
    // 你的现有属性、构造函数保持不变

    public void CalculateMoneySpent()
    {
        this.PlayerMoneySpent = this.PlayerGameTime * 0.5;
    }
}

然后在需要的地方手动调用:

// 初始化后触发计算
players[0] = new Player("John", 1000, 3, 0);
players[0].CalculateMoneySpent();

// 游戏时间修改后触发计算
players[0].PlayerGameTime = 5;
players[0].CalculateMoneySpent();

这个方式灵活性最高,完全由你掌控计算的触发时机。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:37:34