当前位置: 首页 > 知识库问答 >
问题:

SOS游戏:井字游戏的概念

文华美
2023-03-14

我正在制作一个名为SOS的游戏。这是一款3x3的棋盘游戏,与Tic Tac Toe的概念相同,但在这款游戏中,玩家无法选择是以X还是O的身份进行游戏,游戏中唯一的规则是形成“SOS”。

我们的项目应该在所有职位被填补后终止,每个组成的“SOS”将被添加到组成“SOS”的玩家中。

我的问题是关于得分。在第一行输入SOS后,即(- - -),我尝试在第二行第一列输入“O”,玩家2将递增。它不应该递增,因为它不满足我的程序中的第二个。为什么会发生这种情况?

这是我的代码

import java.util.Scanner;

public class SOS
{
  public static void main(String[] args)
{
 Scanner input = new Scanner(System.in);
 String ar[] = {"-","-","-","-","-","-","-","-","-"};
 int player1 = 0;
 int player2 = 0;
 int index = 0;

 for(int l = 0; l<3; l++)
 { 
   for(int j = 0; j<3; j++)
   {
     System.out.print(ar[j]);
   }
   System.out.print("\n");
 }

 for(int j = 0;j < 9;j++)
 {
  //Input position and letter
  System.out.println("Enter the position number: ");
  index = input.nextInt();
  input.nextLine();
  System.out.println("Enter (S or O): ");
  ar[index - 1] = input.nextLine();

  //Output for the game
  for(int l = 0; l<9; l++)
  {
    System.out.print(ar[l]);
    if(l == 2)
    {
      System.out.println();
    }
    else if(l == 5)
    {
      System.out.println();
    }
    else if(l == 8)
    {
      System.out.println();
    }
  }
  //condition
  if((ar[0]+ar[1]+ar[2]).equals("SOS")) 
  {
    if(j%2 == 0)
    {
      player1++;
      System.out.println("Player 1: "+player1+"    Player 2: "+player2);
    }
    else if( j % 2 != 0)
    {
      player2++;
      System.out.println("Player 1: "+player1+"    Player 2: "+player2);
    }
  }
  else if((ar[3]+ar[4]+ar[5]).equals("SOS"))
  {
    if(j%2 == 0)
    {
      player1++;
      System.out.println("Player 1: "+player1+"    Player 2: "+player2);
    }
    else if( j % 2 != 0)
    {
      player2++;
      System.out.println("Player 1: "+player1+"    Player 2: "+player2);
    }
  }
  else
  {
    System.out.println("Player 1: "+player1+"    Player 2: "+player2);
  }



  //end of condition

  }
  }
  }

共有1个答案

冯澄邈
2023-03-14

错误发生在代码的这一部分:

if((ar[0]+ar[1]+ar[2]).equals("SOS")) 

在第一个玩家正确进入SOS到这些位置后,此语句将始终为真。这意味着您的嵌套if/ess在每个回合都运行:

    if(j%2 == 0)
    {
      player1++;
    }
    else if( j % 2 != 0)
    {
      player2++;
    }

在第四圈,j将等于3。(j%2!=0)为真,这会增加player2。

如果你继续运行这个程序,你会看到player1和player2在每一个回合中不断增加,因为初始的If总是真的。

 类似资料:
  • 所以我为我的课做了一个抽动练习作业。我已经成功地创建了一个简单的Tic Tac Toe程序,但不知何故,检查绘制的方法有时并不正确。如果所有东西都填满了,但没有赢家,那就是平局。但如果除第0行第1列外,其他所有内容都已填满,则即使该框仍为空白,它仍将显示“Draw”。如果你不明白我的意思,就试着把所有的东西都填满,但不是赢,即使最后一个框没有填满,它也会说“平局”。我在代码中做错了什么????驱动

  • 嗨,我正在编写一个井字游戏。我已经在代码中的注释中详细说明了我需要什么。我现在遇到的问题是制作一个getMobile方法。我想我需要在按下行和列后的if/else语句中调用getMobile方法? 我不确定如何从获取行/列编号并将其放入我的板上以获取用户输入的内容。 以下是我的代码:

  • 我用Java写了Tic-Tac-Toe。我似乎遇到的问题是,当(人类)播放器1和(计算机)播放器2之间出现平局时,GUI会冻结。我已经在“Buttonlistener”类和“Methods”中创建了一个tieCheck,以获得一个平局。 我的程序的工作方式是,当按下一个按钮时,它会将一个值传递给methods类中的数组。在这个数组中,1=玩家1,2=玩家2。 人类玩家总是先走,所以当人类玩家走了4

  • 我写的神经网络可以玩井字游戏。网络有9个输入神经元,它们描述板的状态(1-代表网络移动,1.5-代表对手移动,0-代表空单元)和9个输出神经元(具有最高值的输出神经元表示给定状态下的最佳动作)。网络没有隐藏层。激活函数-乙状结肠。学习方法--Q学习+反向传播。 网络是经过训练的,但很差(继续踩在被占用的单元格上)。所以我决定添加一个隐藏层。我想问: 在隐藏层中使用多少个神经元,在隐藏层和输出层中使

  • 我在Java中创建了一个小TicTacToe游戏,我想编写更有效的代码,我会制作一个for循环来创建9个按钮。 我现在面临的问题是如何测试按下哪个按钮以确定胜利者。我已经注释掉了我的旧测试代码,因为它不再工作。

  • 本文向大家介绍基于jsp的井字游戏实例,包括了基于jsp的井字游戏实例的使用技巧和注意事项,需要的朋友参考一下 做一款回忆童年的游戏,这款游戏代码比较简单,主要是掌握算法的原理,但是也有一些需要注意的地方。 游戏界面 进入正题。项目的效果图如下: 游戏有一个开始界面可供选择玩家的角色,然后选择先手是哪一方,接着开始游戏。选择界面做了一个遮罩层,里面提供给用户选择,选择之后便把遮罩层隐藏并开始游戏。