我正在尝试在VB.NET中为学校项目构建一个囚徒困境游戏,我发现这种奇怪的行为我不明白。
我有2个播放器按钮,“Co-op”和“Defect”都有相同的代码结构:
Private Sub btnDefect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefect.Click
Oponent()
MovePlayer = "Defect"
If MoveOponent = "Coop" Then
scorePlayer += 50
scoreOponent -= 50
Else
If MoveOponent = "Defect" Then
scorePlayer -= 10
scoreOponent -= 10
End If
End If
scores()
End Sub
我知道ELSE - IF是不必要的,但我写的方式更清晰,更易读。问题是如果两个按钮都有ELSE - 如果我收到编译错误并且无法从Visual Studio运行游戏(bin文件夹中的.exe工作正常)。现在,如果我从 按钮中移除ELSE - IF并只留下常规ELSE,它就能完美运行。但如果我从两者中删除它,就会发生同样的错误。
我得到的错误是:
无法复制文件“obj \ x86 \ Debug \ PrisonersDilemma.exe”,因为 它没有找到。 PrisonersDilemma
但是我找了那个.exe文件,它就在那里!
知道为什么会这样吗?我可以通过只留下一个ELSE-IF来实现它,但我想知道什么是错的。
以下是完整的参考代码:
Public Class Form1
Dim MovePlayer As String
Dim MoveOponent As String
Dim scorePlayer As Integer
Dim scoreOponent As Integer
Sub scores()
lblscoreOponent.Text = scoreOponent
lblscorePlayer.Text = scorePlayer
End Sub
Sub Oponent()
If MovePlayer = "" Then
MoveOponent = "Coop"
Else
MoveOponent = MovePlayer
End If
lblMoveOponent.Text = MoveOponent
lblMoveOponent.Visible = True
End Sub
Private Sub btnCoop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCoop.Click
Oponent()
MovePlayer = "Coop"
If MoveOponent = "Coop" Then
scorePlayer += 10
scoreOponent += 10
Else
scorePlayer += 50
scoreOponent -= 50
End If
scores()
End Sub
Private Sub btnDefect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDefect.Click
Oponent()
MovePlayer = "Defect"
If MoveOponent = "Coop" Then
scorePlayer += 50
scoreOponent -= 50
Else
If MoveOponent = "Defect" Then
scorePlayer -= 10
scoreOponent -= 10
End If
End If
scores()
End Sub
End Class
谢谢!
答案 0 :(得分:0)
1:编译时,如果出现错误,bin文件夹中的EXE将不会被替换。你的EXE是最后一次成功的构建,为什么你会得到这样的问题,“构建过程中出现错误,你想运行上一次成功的构建吗?”如果你说是的话,这将运行那个EXE。
2:似乎我在2012年看到“无法找到”错误,我认为这是Visual Studio的一个问题。通常我会再试一次,这很好。如果从bin文件夹运行EXE,请确保在编译之前它没有运行。它会阻止复制它。
3:如果您需要帮助找出导致编码错误的原因,您必须显示代码,而不是有效的代码!