C# 石头剪刀:如何增加得分?

C# 石头剪刀:如何增加得分?,c#,C#,我尝试了各种组合并进行了查找,但大多数解决方案都使用了其他语言,如python 我正在尝试用ASP.NETMVC在C中制作一个简单的石头剪刀游戏,在这里我可以添加分数。第一个达到10分的电脑对玩家赢得游戏。我还想添加一个选项,您可以下注超过1分 我用简单的嵌套if语句制作了这个游戏,并在中间添加了得分。问题是,当我按play发送到服务器时。。要继续,他重新设置分数并重新开始。我该如何解决这个问题 第二个问题是:如何在分数中添加我实施的博彩系统?只是打字 vScoreUser+=Bet*1 似乎不

我尝试了各种组合并进行了查找,但大多数解决方案都使用了其他语言,如python

我正在尝试用ASP.NETMVC在C中制作一个简单的石头剪刀游戏,在这里我可以添加分数。第一个达到10分的电脑对玩家赢得游戏。我还想添加一个选项,您可以下注超过1分

我用简单的嵌套if语句制作了这个游戏,并在中间添加了得分。问题是,当我按play发送到服务器时。。要继续,他重新设置分数并重新开始。我该如何解决这个问题

第二个问题是:如何在分数中添加我实施的博彩系统?只是打字

vScoreUser+=Bet*1

似乎不起作用

这是我的班级代码:

    public class BladSteenSchaar
    {
    //Fields       
    private string vChoice;
    private int vChoiceComputer;
    private string vResult;
    Random vRandom = new Random();

    //Properties 
    public string Choice
    {
        get { return vChoice; }
        set 
        { 
            vChoice = value; 

            //Spel opstarten
            this.GeefResult();
        }
    }        
    public int ChoiceComputer
    {
        get { return vChoiceComputer; }
        //set { vChoiceComputer = value; }
    }
    public int Bet { get; set; }
    public string Result
    {
        get { return vResult; }
        //set { vResult = value; }
    }

    private int vScoreUser;

    public int ScoreUser
    {
        get { return vScoreUser; }
        set { vScoreUser = value; }
    }
    private int vScoreComputer;

    public int ScoreComputer
    {
        get { return vScoreComputer; }
        set { vScoreComputer = value; }
    }


    //Methods
    public void GeefResult() 
    { 
        //Vars

        //Generate random choice where: 0 = Rock, 1 = Paper en 2 = Siccors)            
        vChoiceComputer = vRandom.Next(0, 3);

        //Nested if statements met vResult als output
        if (Choice == "Rock")
        {
            if (vChoiceComputer == 0) //Rock
            {
                vResult = "Draw!";                   
            }
            else if (vChoiceComputer == 1) //Paper
            {
                vResult = "U lost!";
                vScoreComputer = vScoreComputer + 1;
            }
            else if (vChoiceComputer == 2) //Siccors
            {
                vResult = "U won!";
                vScoreUser = vScoreUser + 1;
            }   
        }
        else if (Choice == "Paper")
        {
            if (vChoiceComputer == 0) //Rock
            {
                vResult = "U won!";
                vScoreUser = vScoreUser + 1;
            }
            else if (vChoiceComputer == 1) //Paper
            {
                vResult = "Draw!";
            }
            else if (vChoiceComputer == 2) //Siccors
            {
                vResult = "U lost!";
                vScoreComputer = vScoreComputer + 1;
            }    
        }
        else if (Choice == "Siccors")
        {
            if (vChoiceComputer == 0) //Rock
            {
                vResult = "U lost!";
                vScoreComputer = vScoreComputer + 1;
            }
            else if (vChoiceComputer == 1) //Paper
            {                   
                vResult = "U won!";
                vScoreUser = vScoreUser + 1;
            }
            else if (vChoiceComputer == 2) //Siccors
            {
                vResult = "Draw!";
            }
        }

    }
控制器:

    public ActionResult Oef127()
    {
        //Default-object
        BladSteenSchaar vBladSteenSchaar = new BladSteenSchaar();
        vBladSteenSchaar.Bet = 1;

        //Show
        return View(vBladSteenSchaar);
    }
    [HttpPost]
    public ActionResult Oef127(BladSteenSchaar vBladSteenSchaar)
    {


        //Show
        return View(vBladSteenSchaar);
    }
HTML/CSS:

@model Project_CS.Classes.BladSteenSchaar

@{
ViewBag.Title = "Oef127";
}

<style>

form {
    background-color: lightblue;
    padding: 10px 20px 20px 20px;
    width: 500px;
}

td {
    text-align: center;
    padding: 5px;
}

</style>

<form method="post">

<h2>Rock - Paper - Siccors!</h2>
<hr />

Make your Choice: <br/>
<input type="radio" name="Choice" value="Rock">Rock
<br />
<input type="radio" name="Choice" value="Paper">Paper
<br />
<input type="radio" name="Choice" value="Siccors">Siccors
<br />

<br/>
Do you want to play for 1, 2 or 3 points?
<br/>
<input type="text" name="Bet" value="@Model.Bet" />

<hr/>
<input type="submit" value="Send to Server!" />

<br/>

</form>

<h3>Result:</h3>

@Model.Result

<br /><br />

<b>Current score:</b> <br />

<table>
<tr>
    <td>Player</td>
    <td>Computer</td>
</tr>
<tr>
    <td>@Model.ScoreUser</td>
    <td>@Model.ScoreComputer</td>
</tr>
</table>

如果您能发现任何其他错误,请告诉我。

我认为问题出在该属性的集合中

 public string Choice
    {
        get { return vChoice; }
        set 
        { 
            vChoice = value; 

            //Spel opstarten
            this.GeefResult();
        }
    } 

每次设置选项时,都会执行GeefResult函数。也许在这个函数中,您将某些内容初始化为0,并且每个选项都会重置。尝试将分数信息作为属性添加到BladSteenSchaar类中。通过这种方式,您将能够存储BladSteenSchaar类的每个实例的分数信息。

是否发送到服务器?你能详细说明一下吗?某些web服务平台将为每个连接创建一个新类,因此将重置计数。确认MVC.NET将在每个请求上创建新的控制器对象。如果你想要一个状态,你应该考虑使用DI更好地创建单级类,或者在DBI中保存状态不确定你的意思。对不起,这一切都很新鲜。我将在我的控制器中添加我所拥有的内容,并将其作为html/css添加到start post中。我如何创建Singleton类以及DI是什么?还不能使用数据库…:xTry调试标记有HttpPost属性的方法,并查看vBladSteenSchaar参数中的内容。我一直在寻找,但似乎找不到任何解决方案。我在哪里表演GeefResult有关系吗?如果不添加评分信息,将其放在我的httppost方法中是没有帮助的。您确定调用了正确的Oef127函数吗?尝试调试带有httpost标记的方法,并告诉我调用是否到达那里。也许您正在调用第一个创建该类新实例的实例