我如何随机执行按钮的动作

时间:2019-05-09 07:34:54

标签: java netbeans

我真的是JAVA的新手,我正在制作井字游戏,我完成了玩家对玩家的游戏,现在我想做玩家对玩家的cpu,我要做的就是当玩家单击按钮以出现X时, cpu会随机选择其按钮以使O出现,但我不知道随机执行操作的代码

我在互联网上搜索了一个小时,仍然没有结果 这是我的代码

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   //my code here to set text and background etc
   if(jButton3.getActionCommand().equals("X") && jButton1.getActionCommand().equals("") && jButton2.getActionCommand().equals("")){
                  //this where i wanna random between 2 button action      
    }        

我希望CPU在两者之间进行选择

jButton1ActionPerformed(evt);

jButton2ActionPerformed(evt);

但是我真的不知道该怎么做

1 个答案:

答案 0 :(得分:0)

我的理解

我将您的问题解释为在用户执行移动后,我该如何编写一个函数,用字母'O'随机标记剩余的正方形之一。用评论纠正我如果我弄错了。

问题方法

由于我不知道代表您的cpu播放器的代码的确切性质,因此我将提供可以实施的高级解决方案。

1。。首先,在玩家用字母“ X”标记一个正方形后,您必须检查哪些正方形仍未标记。您可以通过在游戏开始时初始化一个1到9的整数ArrayList来实现,该ArrayList表示仍未标记的正方形(按钮)。

图:井字游戏板编号 numbered tic-tac-toe board

2。。其次,每次玩家或cpu标记一个正方形时,从列表中删除相应的Integer。

3。。以您当前的状态监视按钮动作事件,并添加以下代码。 (我们的整数ArrayList名为unmarked_boxes)。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   //my code here to set text and background etc
   if(jButton3.getActionCommand().equals("X") && jButton1.getActionCommand().equals("") && jButton2.getActionCommand().equals("")){
             Random rand_gen = new Random();
             int index_selected = rand_gen.nextInt(unmarked_boxes.size());
             box_selected = unmarked_boxes.remove(index_selected);
             /*
             here you select and mark the button which corresponds to the box 
             selected. i.e. if the box_selected = 3, then find and mark button3 (not sure 
             how you access your buttons).
             */
    } 
  • 在我插入的代码中,我们实例化了Random类型的Object,并调用了其成员函数nextInt(int bound)。此函数将生成一个介于0和int'bound'之间的数字。
  • 在这种情况下,我们要从整个未标记正方形列表中选择一个正方形。
  • 因此,我们生成了一个介于0和剩余平方数之间的数字。
  • 然后,我们在unmarked_boxes列表中抓取(并同时删除)“ index_selected”中的数字,并在相应的按钮上标记“ O”。
  • 此后,您需要实现代码以标记所选按钮。

注意:如果您只选择在2个正方形之间选择,那您就定格了,那就忘了我描述的ArrayList方法。只需调用rand_gen.nextBoolean()并插入一条if语句,该语句选择一个按钮为true,另一个为false。

这足以让您开始实施解决方案,

祝你好运