zoukankan      html  css  js  c++  java
  • 五子棋输赢判定算法

    public void whoWin(int row, int col, char ch)  /* row是传入的棋子行地址,col为列地址,ch代表棋子,"黑"或“白” */
    {  
      int i;
      int j;
      int k;
      char[] line = new char[getColOfBoard()];    /* 存储斜行数据 */
      int chNum = 0;                    /* 若chNum >= 5,则赢 */
    
      // 行判断输赢
      for(i = 0; i < getColOfBoard(); i++) {
        if(cheboard[row][i] == ch) {
          chNum++;
          if(chNum >= 5) {
            System.out.println(ch + "获胜!游戏结束!");
            return;
          }
        } else {
          chNum = 0;
        }
       }
    
      // 列判断输赢
      chNum = 0;
      for(i = 0; i < getRowOfBoard(); i++) {
    
        if(cheboard[i][col] == ch) {
    
          chNum++;
          if(chNum >= 5) {
            System.out.println(ch + "获胜!游戏结束!");
            return;
          }
         } else {
          chNum = 0;
        }
      }
    
      // 右下斜行判断输赢
      chNum = 0;    
      k = 0;
      for(i = 0; i < getColOfBoard(); i++) {  /* 将line数组清零 */
        line[i] = '0';
      }
      i = row + 1;
      j = col + 1;
      while(i > 0 && j > 0) {
        i--;
        j--;
      }
      while(i < getRowOfBoard() && j < getColOfBoard()) {
        line[k++] = cheboard[i][j];
        i++;
        j++;
      }
      for(i = 0; i < line.length; i++) {
        if(line[i] == ch) {
          chNum++;
          if(chNum >= 5) {
            System.out.println(ch + "获胜!游戏结束!");
            return;
          }
        } else {
          chNum = 0;
        }
      }
    
      // 右上斜行判断
      chNum = 0;    
      k = 0;
      for(i = 0; i < getColOfBoard(); i++) {  /* 将line数组清零 */
        line[i] = '0';
      }
      i =  row;
      j = col;
      while(i < getRowOfBoard() - 1 && j > 0) {
        i++;
        j--;
      }
      while(i >= 0 && j < getColOfBoard()) {
        line[k++] = cheboard[i][j];
        i--;
        j++;
      }
      for(i = 0; i < line.length; i++) {
        if(line[i] == ch) {
          chNum++;
          if(chNum >= 5) {
            System.out.println(ch + "获胜!游戏结束!");
            return;
          }
        } else {
          chNum = 0;
        }
      }
    }
  • 相关阅读:
    python找出数组中第二大的数
    【高并发解决方案】5、如何设计一个秒杀系统
    如何找出单链表中的倒数第k个元素
    二叉树的前序,中序,后序遍历
    剑指Offer题解(Python版)
    python之gunicorn的配置
    python3实现字符串的全排列的方法(无重复字符)
    python实现斐波那契数列
    每天一个linux命令(56):netstat命令
    每天一个linux命令(55):traceroute命令
  • 原文地址:https://www.cnblogs.com/soldierback/p/9281328.html
Copyright © 2011-2022 走看看