Java GUI可重复进程

时间:2015-08-08 19:08:43

标签: java user-interface loops process

我最近接过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

2 个答案:

答案 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;

但是此修改现在与您的程序最初的工作方式不同。