⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameworld.java

📁 J2ME手机蓝牙五子棋游戏
💻 JAVA
字号:
package bluetoochgame;

import javax.microedition.lcdui.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class GameWorld {

  private Control control;
  private Chess[][] chess; //棋子数组
  // private boolean  myMove;
  // private boolean  isServer;
  private int player1win, player2win;
  private MyCanvas mycanvas;
  /** Constructor */
  private int chessMapLength, chessMapGrid, chessGridLength;
  //棋盘的边长,棋盘一边格子数,每格宽度
  private int chessLength; //棋子的直径
  private int chessMapX, chessMapY; //棋盘左上角x,y坐标
  public static boolean myMove;
  public boolean isServer;
  private int selectedX, selectedY; //选择框在棋盘格局上的x,y位置

  public GameWorld() {

//    isServer = MyCanvas.isServer() ;
    try {
      init();
    }
    catch (Exception e) {}

  }

  public void start() {
    control = new Control(this);
    control.start();
  }

  public void init() {
    player1win = 0;
    player2win = 0;
    chessMapGrid = 15;
    chessMapLength = 225;
    chessMapX = 7;
    chessMapY = 32;
    chessGridLength = 15;
    chessLength = chessGridLength - 1; //即框长为一
    selectedX = selectedY = chessMapGrid / 2;
    chess = new Chess[chessMapGrid + 1][chessMapGrid + 1];
    isServer = MyCanvas.name.equals("Server");
    myMove = !isServer; // client always goes first
  }

  public void keyPressed(int keycode) {
    if (myMove) {
      switch (keycode) {
        case Canvas.UP:
          selectedY = (--selectedY + chessMapGrid + 1) % (chessMapGrid + 1);
          break;
        case Canvas.DOWN:
          selectedY = (++selectedY) % (chessMapGrid + 1);
          break;
        case Canvas.LEFT:
          selectedX = (--selectedX + chessMapGrid + 1) % (chessMapGrid + 1);
          break;
        case Canvas.RIGHT:
          selectedX = (++selectedX) % (chessMapGrid + 1);
          break;
        case Canvas.FIRE:
          if (chess[selectedY][selectedX] == null) {
            chess[selectedY][selectedX] = new Chess(this.isServer);
            myMove = false;
            control.sendMessage(selectedX, selectedY);
          }
          break;
      }
    } //end if
  }

  public void receiveMessage() {
    System.out.println("gamewold is receivemessage");
    System.out.println(control.getSelectedX());
    if (!myMove) {
      selectedX = control.getSelectedX();
      selectedY = control.getSelectedY();
      chess[selectedY][selectedX] = new Chess(!isServer);
      myMove = true;
    }

  }

  public void draw(Graphics g) {
    paintMap(g);
    paintSelected(g);
    paintChesses(g);
  }

  //棋盘
  protected void paintMap(Graphics g) {
    for (int i = 0; i < chessMapGrid; i++) {
      for (int j = 0; j < chessMapGrid; j++) {
        g.setColor(128, 128, 128);
        g.drawRect(chessMapX + j * chessGridLength,
                   chessMapY + i * chessGridLength,
                   chessGridLength, chessGridLength);
      }
    }
  }

//选择框
  protected void paintSelected(Graphics g) {
    g.setColor(0, 0, 255);
    g.drawRect(chessMapX + selectedX * chessGridLength - chessGridLength / 2,
               chessMapY + selectedY * chessGridLength - chessGridLength / 2,
               chessGridLength, chessGridLength);
  }

//棋子
  protected void paintChesses(Graphics g) {
    for (int i = 0; i <= chessMapGrid; i++) {
      for (int j = 0; j <= chessMapGrid; j++) {
        if (chess[i][j] != null) {
          if (chess[i][j].isServer) {
            g.setColor(255, 255, 255);
          }
          else {
            g.setColor(255, 0, 0);
          }
          g.fillArc(chessMapX + j * chessGridLength - chessLength / 2,
                    chessMapY + i * chessGridLength - chessLength / 2,
                    chessLength, chessLength, 0, 360);
        }
      }
    }
  }


  /*
          if (checkWin()) {
              String winner;
              if (isServer) {
                winner = "白方胜利";
                player1win++;
              }
              else {
                winner = "红方胜利";
                player2win++;
              }
       Alert winAlert = new Alert("",winner + "\n白方  " + player1win + " : " +
                                         player2win + "  红方",
                                         null, AlertType.INFO);
              winAlert.setTimeout(Alert.FOREVER);
              mycanvas.display.setCurrent(winAlert, mycanvas);
            }
   */

  public boolean checkWin() {
    int num = 1;
    if (num < 5) {
      num = 1;
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX - i, selectedY)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX + i, selectedY)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
    }
    if (num < 5) {
      num = 1;
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX, selectedY - i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX, selectedY + i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
    }
    if (num < 5) {
      num = 1;
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX - i, selectedY - i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX + i, selectedY + i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
    }
    if (num < 5) {
      num = 1;
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX + i, selectedY - i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
      for (int i = 1; i <= 4; i++) {
        if (isPlayer1(selectedX - i, selectedY + i)) {
          num++;
        }
        else if (num >= 5) {
          return true;
        }
        else {
          break;
        }
      }
    }
    if (num >= 5) {
      return true;
    }
    else {
      return false;
    }
  }

  private boolean isPlayer1(int y, int x) {
    if (x <= 15 && x >= 0 && y <= 15 && y >= 0 && chess[x][y] != null) {
      if (chess[x][y].isServer == isServer) {
        return true;
      }
      else {
        return false;
      }
    }
    else {
      return false;
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -