对于一个班级项目,我和我的搭档使用Markov Chain创建了Rock Paper Scissors仿真。我们输入了计算机的功能,但是我们不知道如何跟踪得分。
我们如何在每个回合之后使用VBA或某个函数来获取分数?
我们在VBA中尝试过一些事情,我们尝试了其他功能。但是没有数据可以概括。
Sub Score()
Dim sVariable As String
Dim iNumber As Integer
Dim iPC As Variant
Dim iPlayer As Variant
sVariable = Sheets("Model").Range("D10")
iPC = Sheets("Model").Range("E6") + 1
iPlayer = Sheets("Model").Range("F6") + 1
iNumber = 1
If sVariable = "PC Winner!" Then
Sheets("Model").Range("E6") = iPC
ElseIf sVariable = "Player Winner!" Then
Sheets("Model").Range("F6") = iPlayer
End If
End Sub
该代码是我们获得的最接近的代码,我们添加了一个按钮来使其运行,因为它不会自动执行。但是现在,每次添加得分时,由于Markov数据具有随机函数,PC的移动都会发生变化。我们希望保留分数,并在游戏结束时将其重置。
答案 0 :(得分:1)
可能最简单的方法是创建一个全局变量,并在每次获胜时增加分数,然后在每一回合之后Call
进行一个程序来更新分数。
注意:根据您的实现,全局变量甚至可能不是必需的,并且可以通过参数轻松地传递。没有提供更多详细信息就很难说
Public playerScore as Integer
Public pcScore as Integer
Private Sub update_score()
Sheets("Model").Range("E6") = pcScore
Sheets("Model").Range("F6") = playerScore
End Sub
Private Sub Score()
' ... your code here ...'
If sVariable = "PC Winner!" Then
pcScore = pcScore + 1
Else
playerScore = playerScore + 1
End If
update_score
End Sub
在新游戏上,您重新初始化得分
Private Sub new_game()
pcScore = 0
playerScore = 0
' ... your code here ...'
End Sub
我不确定您的问题是否正确,但这应该可以。
在您将来的问题中,如果您做了一些 更好地解释您正在使用的数据以及如何使用 根据{{3}},期望的结果应该看起来像,因为 您当前的问题还不清楚:
- 比赛什么时候结束
- 您确切要更新分数的地方
- 在哪种情况下分数应准确增加
- 您要在上述事件上调用哪些程序
所以我不得不对你的问题做很多猜测。无论哪种方式,都应该足以引导您走上正确的道路:)