C# 显示多个变量?

C# 显示多个变量?,c#,C#,我在两个地方初始化同一个变量 public partial class Form1 : Form { // Stat definitions // Player int PlayerHP = 10; int PlayerAtt = 6; int PlayerDef = 4; // Enemy int EnemyHP = 10; int EnemyAtt = 5; int EnemyDef = 5; public

我在两个地方初始化同一个变量

public partial class Form1 : Form
{
    // Stat definitions

    // Player
    int PlayerHP = 10;
    int PlayerAtt = 6;
    int PlayerDef = 4;
    // Enemy
    int EnemyHP = 10;
    int EnemyAtt = 5;
    int EnemyDef = 5;

    public Form1()
    {
        InitializeComponent();
        StatList();
    }

    public void Combat()
    {
        if (PlayerAtt > EnemyDef)
        {
            EnemyHP--;
            CombatLog.Text = "Enemy HP: " + EnemyHP;
        }
    }

    public void Death()
    {
        if (EnemyHP < 0)
        {
            EnemyHP = 0;
        }

        if (EnemyHP == 0)
        {
            CombatLog.Text = "The Enemy has Fallen!";
        }

        if (PlayerHP < 0)
        {
            PlayerHP = 0;
        }

        if (PlayerHP == 0)
        {
            CombatLog.Text = "The Player has Fallen!";
        }
    }

    public void StatList()
    {
        PlayerStats.Lines = new string[] { "Health: " + PlayerHP, "Attack: " + PlayerAtt, "Defence: " + PlayerDef, };
        EnemyStats.Lines = new string[] { "Health: " + EnemyHP, "Attack: " + EnemyAtt, "Defence: " + EnemyDef, };
    }

    private void Attack_Click(object sender, EventArgs e)
    {
        Combat();
        Death();
    }
}
公共部分类表单1:表单
{
//统计定义
//玩家
int PlayerHP=10;
int PlayerAtt=6;
int PlayerDef=4;
//敌人
int-EnemyHP=10;
int-EnemyAtt=5;
int-EnemyDef=5;
公共表格1()
{
初始化组件();
StatList();
}
公共空间作战()
{
如果(PlayerAtt>EnemyDef)
{
灌肠HP-;
CombatLog.Text=“敌人HP:+EnemyHP;
}
}
公众死亡()
{
如果(EnemyHP<0)
{
EnemyHP=0;
}
如果(EnemyHP==0)
{
Text=“敌人已经倒下了!”;
}
如果(PlayerHP<0)
{
PlayerHP=0;
}
如果(PlayerHP==0)
{
Text=“玩家摔倒了!”;
}
}
公共无效状态列表()
{
PlayerStats.Lines=新字符串[]{“健康:+PlayerHP”,攻击:+PlayerAtt,防御:+PlayerDef,};
Lines=新字符串[]{“健康:+EnemyHP”,攻击:+EnemyAtt,防御:+EnemyDef,};
}
私有无效攻击\u单击(对象发送方,事件参数e)
{
战斗();
死亡();
}
}
}

无论如何,当更新的“EnemyHP”写入“CombatLog”时,EnemyStats下的EnemyHP不会更新新值,而是与原始分配保持相同

我想我可以使用一个循环来不断检查CombatLog中的内容,并在现场进行更新,但我仍然需要考虑如何将其写出来


伟大的Stackoverflow是怎么想的?

这完全取决于您如何处理视图,以及您的值如何更新到视图中。我假设你正在使用WPF? 您应该在此处获得有关INotifyPropertyChanged接口的信息:

此界面帮助您与视图通信,告诉它在值更改时刷新值

处理视图的一种聪明方法是使用MVVM模式。您可以在此处找到一个很棒的教程:


祝你好运

要更新敌人状态,你需要在战斗后调用StatList。
请注意,每次调用EnemyStats时,都会创建新的字符串数组。这是非常浪费和无效的

在每次更新时重新调用StatList确实解决了问题

因为这是基于Windows窗体应用程序的,所以我有一个按钮来调用这里发生的所有事情

我的攻击按钮只需要调用
Statlist()像这样:

private void Attack_Click(object sender, EventArgs e)
    {
        Combat();
        Death();
        StatList();
    }

你的问题不清楚。你想达到什么目标?你想在EnemyHP减少时更新EnemyStats.Lines吗?是的,这就是我想要实现的,请告诉我我的问题似乎不清楚。每次调用你的作战方法时,你都需要回忆StatList方法。你是如何声明EnemyHP的?它是一个静态变量吗?更改EnemyHP后是否调用了StatList()?请看Windows窗体应用程序是我正在使用的,不过我会检查您的示例,谢谢!会有效吗?