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

📄 gameworld.java

📁 Java ME手机应用开发大全一书的配套光盘上的源码
💻 JAVA
字号:
package bluetoochgame;

import javax.microedition.lcdui.*;
public class GameWorld {
  private Control control;
  private Chess[][] chess; //棋子数组
  private int player1win, player2win;
  private MyCanvas mycanvas;
  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() {
    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; 
  }
  //按键处理程序
  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;
      }
    }
  }

  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);
        }
      }
    }
  }
  //判断游戏胜负
  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 + -