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