当前位置: 首页 > 面试题库 >

如何在我的Connect 4个Java代码中检查获胜者?

易英奕
2023-03-14
问题内容

我不明白如何在四连冠中找到获胜方式,请告诉我应该怎么想以及如何在四连冠中找到赢家。我应该如何使用for循环来找到他们。我应该如何使用方法寻找赢家?

import java.util.Scanner;
public class Connect4{
    public static  int[][] arrayboard(){
        int [][] board = new int[6][7];
        for (int i=0;i<board.length;i++){
            for(int j=0;j<board[i].length;j++){
              }
            }
          return board;     
         }
    public static void printboard(int[][] board){
            int k=5;
            for (int i = 0; i < board.length; i++) {
                for (int j = 0; j < board[i].length; j++) {
                System.out.print(board[i][j] + " ");
              }
             System.out.print("|"+k );
             k--;
             System.out.println();
          }
            System.out.println("--------------+");
            System.out.println("0 1 2 3 4 5 6");
       }
     public static void player1(int[][] board){
        System.out.print("player 1 type a column(0-6) or 9 to quit current game:");
        Scanner input = new Scanner(System.in);
        int column=input.nextInt();
        for (int i=5;i>=0;i--){
            if(board[i][column]==0){
               board[i][column]=1;
               break;
            }
          }
       }
     public static void player2 (int[][] board){
        System.out.print("player 2 type a column(0-6) or 9 to quit current game:");
        Scanner input = new Scanner(System.in);
        int column=input.nextInt();
        for (int i=5;i>=0;i--){
            if (board[i][column]==0){
               board[i][column]=2;
               break;
           }
        }
     }
    public static void main(String[] args) {
        int [][] board=arrayboard();
           printboard(board);
        boolean loop= true;
              int count=0;
         while(loop){
            if (count % 2 == 0) 
                player1(board);
            else player2(board);
            count++;
            printboard(board);
      }
   }
}

问题答案:

在一个简短的Google之后,会弹出以下代码:https : //codereview.stackexchange.com/questions/100917/connect-
four-game-in-
java

http://www.lazylab.org/152/java/connect- Java
/
或带有4D数组对角线检查的Connect4游戏中的四个游戏编码难题算法

所以它很容易找到。还有这个Scala实现也可以做到这一点。然后只有另一种语言:https : //github.com/Green7izard/AP-
ASE/blob/master/Scala/src/Day1.scala

基本上有3种取胜方式:

  1. 水平(行)。检查每个棋盘[i],看看玩家是否连续有4个,但是要注意数组的边缘。
  2. 垂直(列)。检查每个板[currentRow] [i],看是否有4个“ currentRow”相同的I。

最后一个选项是对角线。这一个比较难,因为您还要检查2个方向。

这意味着您无法一次性检查完成情况。但是您可以创建一个将检查所有值的函数,例如:

public void int GetWinner()
{
   int result = 0;
   result= CheckHorizontal();
   if(result>0) return result;
   result= CheckVertical();
   if(result>0) return result;
   result= CheckDiagonalTopLeftBotRight();
   if(result>0) return result;
   result= CheckDiagonalBotLeftTopRight();
   return result;
}

每一步之后执行,如果结果不为0,您将有赢家!但是有更好的方法来执行此壮举!



 类似资料:
  • 所以在试图完成我的h. w,有一件事对我来说还不顺利。在这个程序中,我使用了2个类,这是一个跑步的压缩,我只是想宣布一个赢得比赛的玩家的位置。 例如:我们有4个线程。如果第二个线程最后达到100米,我想发布消息说他排在第四位。 参赛者类别: 轨道等级: 在我们的第一课中,当我们使用线程时,它是一个愚蠢的程序。

  • 问题内容: 如何在Java代码中检查用户权限?例如-我想根据角色显示或隐藏用户按钮。有如下注释: 如何用Java代码制作?就像是 : 问题答案: Spring Security 3.0具有此API 使用包装之前,您必须先注入包装纸。 SecurityContextHolderAwareRequestWrapper

  • 问题内容: 我发现这个问题可以解决C ++问题: 如何在gcc中从C / C ++源代码获得汇编程序输出? 问题答案: Java使用字节码。最相似的是,每个链接的Oracle文档, 该 javap的 命令拆卸一个或多个类文件。其输出取决于所使用的选项。 如果我将其编译为然后运行,我会得到

  • 早期文章:如何使tictactoe程序可伸缩 我已经尝试使一个Tic Tac Toe程序(人机)可伸缩(板大小可以改变)。我之前有过一些大问题,但大部分都解决了。 游戏的规则是基本的Tictactoe,但有一个不同的规则是,无论棋盘有多大(当)玩家或计算机只需要连续五个分数就能获胜。 现在我的程序唯一的破局问题是决定谁赢了这场比赛。这场比赛现在只可能以‘平局’结束。(我还没有实现“”)。 具体的问

  • 我有Spring Boot 1.5应用程序,它正在设置与一些Web服务的连接。在所有情况下,这些都是TLS 1.2连接。我通过此JVM参数运行我的应用程序: javax。网ssl。密钥库只是一个jks文件,其中只有一个证书。 我需要回答这个问题:当设置TLS连接时,我如何知道我是否正在检查完整的证书链?或者只是根证书?这仅仅取决于我的信任存储中包含的每个证书中的CA吗? 我使用RestTempla

  • 我为跳棋游戏创建了两个类。一个是木板,另一个是碎片。我所面临的困难是,对于这些碎片,我似乎无法让它们移动,也无法让它们正确地停留在那个位置,事实上,由于我不了解这里到底出了什么问题,我无法再前进了。有人能纠正我做错了什么吗。 这是拼图课