我最近接过Java,我决定构建一个迷你石头剪刀游戏。虽然,我认为它结果有效,但设计糟糕,它仍然有一个小问题。我似乎无法弄清楚如何使整个过程可重复,因为我必须重新启动程序,以便计算机可以再次选择岩石,纸张或剪刀。这是我的代码:
Dim client As New WebClient
remBadstring = captchaMatch.Value.Replace("""", "")
Dim myUrl = New Uri(remBadstring)
client.DownloadFileAsync(myUrl, "cap.png")
'My.Computer.Network.DownloadFile(myUrl, Application.StartupPath & "/cap.png")
Dim img As Image
Dim tmp As Image = Image.FromFile("cap.png")
img = New Bitmap(tmp)
tmp.Dispose()
PictureBox1.Load(remBadstring) ' error hapen.
'PictureBox1.Image = Image.FromFile("cap.png")
Application.DoEvents()
Dim myUrl2 As String = remBadstring
答案 0 :(得分:0)
您的问题缺少main
和面板的设置,但基本上,您似乎只在randomNum
分配一次值 - 在其声明中。
因此,randomNum
不会改变,因此计算机选择将始终相同。
因此,您应该添加一个方法,例如newComputerSelection()
,它会在randomNum
中添加一个新的随机数。在做出决定之前,请先从您的动作听众中调用此方法。
事实上,您甚至不必将randomNum
作为字段。你可以在该方法中获得一个新的随机数,并立即根据它来决定AIGuess
将是什么,而不是决定每个动作监听器。在动作侦听器中,您只需要将用户的选择与AIGuess
进行比较,并确定它是赢,输还还是打平。
下一步是消除AIGuess
并从newComputerSelection
方法返回它的值。您可以进行更多改进,但基本上,您需要在每个新回合时更改计算机选择。
答案 1 :(得分:0)
如果您真的想避免重新启动程序以便再次播放,可以在add(AIGuessDisplay);
下方的代码中添加新的JButton。
add(AIGuessDisplay);
JButton playAgain = new JButton("Play Again");
add(playAgain);
playAgain.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
randomNum = new Random().nextInt(3) + 1;
}
}
);
}
该按钮将为randomNum生成一个新值。
如果您不想添加新的JButton,另一个改进程序的选项是在每个操作中添加代码randomNum = new Random().nextInt(3) + 1;
,如下所示,以便randomNum将拥有每次点击任何按钮(Rock,Paper或Scissor)时都会有新值。
new ActionListener() {
public void actionPerformed(ActionEvent e) {
randomNum = new Random().nextInt(3) + 1;
但是此修改现在与您的程序最初的工作方式不同。