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

📄 gamescreen.java

📁 一个很好玩的手机游戏
💻 JAVA
字号:
import java.util.Random;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;class GameScreen    extends Canvas implements CommandListener{  //定义不变量  private static final int BLACK = 0x00000000;  private static final int WHITE = 0x00FFFFFF;  private static final int RED   = 0x00FF0000;  private static final int BLUE  = 0x000000FF;  private static final int NO_MOVE  = -1;  private final SVSBMIDlet midlet;  private final Game game;  private final Command quitCommand;  private final Command newGameCommand;  private final Random random = new Random();  private int screenWidth,screenHeight;  private int boardCellSize,boardSize,boardTop,boardLeft;  private boolean playerIsCircle ,computerIsCircle;  private int preCursorPosition,cursorPosition;  private int computerMove = NO_MOVE;  private int playerMove = NO_MOVE;  private int computerGamesWonTally = 0;  private int playerGamesWonTally = 0;  private boolean isRestart;  private Image[] aImage = {loadImage("/white.png"),//0                            loadImage("/black.png"),//1                            loadImage("/white2.png"),//2                            loadImage("/black2.png"),//3                            loadImage("/d1.png")};//4  public GameScreen(SVSBMIDlet midlet,boolean playerIsCircle)  {    this.midlet = midlet;    this.playerIsCircle = playerIsCircle ;    computerIsCircle = !playerIsCircle;    game = new Game(random);    initializeBoard();//调用地图初始化    quitCommand = new Command("退出",Command.EXIT,1);//配置游戏窗口下方命令栏    newGameCommand = new Command("新游戏",Command.SCREEN ,1);    addCommand(quitCommand);    addCommand(newGameCommand);    setCommandListener(this);    initialize();//调用游戏初始化函数  }  private void initialize()//游戏初始化函数定义  {    game.initialize();    preCursorPosition = cursorPosition =0 ;    playerMove = NO_MOVE;    boolean computerFirst = ((random.nextInt() & 1) == 0);    if(computerFirst)    {      computerMove = game.makeComputerMove() ;    }    isRestart = true;    repaint();  }  public void paint(Graphics g)  {    if(game.isGameOver())    {      paintGameOver(g);    }    else    {      paintGame(g);    }  }  private void paintGame(Graphics g) //绘出游戏画面  {    if(isRestart)    {      g.setColor(WHITE);      g.fillRect(0,0,screenWidth,screenHeight);      drawBoard(g);      isRestart = false ;    }    drawCursor(g);    if(playerMove != NO_MOVE)    {      drawPiece(g,playerIsCircle,playerMove);    }    if(computerMove != NO_MOVE)    {      drawPiece(g,computerIsCircle,computerMove);    }  }  private void paintGameOver(Graphics g)//绘出游戏结束的画面  {    Image gameOverImage = null ;    if(game.isComputerWinner())//电脑胜利    {      if(computerIsCircle)//傻大母胜利      {        g.setColor(WHITE) ;        g.fillRect(0,0,screenWidth,screenHeight);        gameOverImage = loadImage("/lost.png");//电脑傻大母胜利图       g.drawImage(gameOverImage,0,0,g.TOP|g.LEFT );      }      else//不死胜利      {        g.setColor(WHITE) ;        g.fillRect(0,0,screenWidth,screenHeight);        gameOverImage = loadImage("/lost.png");//电脑不死胜利图        g.drawImage(gameOverImage,0,0,g.TOP|g.LEFT );      }    }    else if(game.isPlayerWinner())//玩家胜利    {      if(playerIsCircle) //傻大母胜利      {        g.setColor(WHITE) ;        g.fillRect(0,0,screenWidth,screenHeight);        gameOverImage = loadImage("/win.png");//玩家傻大母胜利图        g.drawImage(gameOverImage,0,0,g.TOP|g.LEFT);      }      else//不死胜利      {        g.setColor(WHITE) ;        g.fillRect(0,0,screenWidth,screenHeight);        gameOverImage = loadImage("/win.png");//玩家不死胜利图        g.drawImage(gameOverImage,0,0,g.TOP|g.LEFT );      }    }    else    {      g.setColor(BLUE) ;      g.fillRect(0,0,screenWidth,screenHeight);      gameOverImage = loadImage("/stalemate.png");//drawn game 图      g.drawImage(gameOverImage,screenWidth/2,screenHeight/2,g.HCENTER|g.VCENTER );    }  }  public Image loadImage(String imgName) //加载图片的函数  {    Image image = null ;    try    {      image = Image.createImage(imgName);    }    catch(Exception e)    {    }    return image;  }  public void commandAction(Command c,Displayable d)  {    if(c == quitCommand)    {      midlet.exit() ;    }    else if(c == newGameCommand)    {      initialize();    }  }  private void initializeBoard()//地图初始化函数调用  {    screenWidth = getWidth();    screenHeight = getHeight();    if(screenWidth>screenHeight)    {      boardCellSize = (screenHeight - 2)/3 ;      boardLeft = (screenWidth - boardCellSize*3)/2;      boardTop = 1;    }    else    {      boardCellSize = (screenWidth -2)/3;      boardLeft = 1;      boardTop = (screenHeight - boardCellSize*3)/2;    }  }  protected void keyPressed(int keyCode)  {    if(game.isGameOver())    {      return;    }    int gameAction = getGameAction(keyCode);    switch(gameAction)    {      case FIRE:        doPlayerMove();        break;      case RIGHT:        doMoveCursor(1,0);        break;      case LEFT:        doMoveCursor(-1,0);        break;      case UP:        doMoveCursor(0,-1);        break;      case DOWN:        doMoveCursor(0,1);        break;        default:          break;    }  }  private void doPlayerMove()  {    if(game.isFree(cursorPosition))    {  //下面两句为玩家移动      game.makePlayerMove(cursorPosition);      playerMove = cursorPosition;      if(!game.isGameOver())//玩家移动完了电脑紧接着移动      {        computerMove = game.makeComputerMove() ;      }      repaint();    }  }  private void doMoveCursor(int dx,int dy)  {    int newCursorPosition = cursorPosition + dx + 3*dy;    if ((newCursorPosition>=0)&&(newCursorPosition<9))    {      preCursorPosition = cursorPosition ;      cursorPosition = newCursorPosition;      repaint();    }  }  private void drawPiece(Graphics g,boolean isCircle,int pos)  {    int x = ((pos%3)*boardCellSize)+3;    int y = ((pos/3)*boardCellSize)+3;    if(isCircle)    {      drawCircle(g,x,y);    }    else    {      drawCross(g,x,y);    }  }  private void drawCircle(Graphics g,int x,int y)  {    //Image aImage =null;    //aImage = loadImage("/white2.png");    g.drawImage(aImage[2],x+boardLeft,y+boardTop,g.TOP|g.LEFT);  }  private void drawCross(Graphics g,int x,int y)  {    //Image aImage =null;    //aImage = loadImage("/black2.png");    g.drawImage(aImage[3],x+boardLeft,y+boardTop,g.TOP|g.LEFT);  }  private void loadMap(Graphics g)  {    //Image mapImage = null;   // mapImage = loadImage("/d1.png");    g.drawImage(aImage[4],0,0,g.TOP|g.LEFT);  }  private void drawBoard(Graphics g)  {    loadMap(g);  //在这里加载地图,随即在三副地图中选一个    g.setColor(BLACK);        for (int i = 0; i < 4; i++)        {//画四根横线            g.fillRect(boardLeft, boardCellSize * i + boardTop,                       (boardCellSize * 3) + 2, 2);//最后一个2表示横线宽度         //画四根竖线            g.fillRect(boardCellSize * i + boardLeft, boardTop,                       2, boardCellSize * 3);        }  }  private void drawCursor(Graphics g)      {    // draw cursor at selected Player square.          g.setColor(BLACK);          g.drawRect(((preCursorPosition % 3) * boardCellSize) + 1 + boardLeft,               ((preCursorPosition/3) * boardCellSize) + 1 + boardTop,               boardCellSize - 2,                     boardCellSize - 2);    // draw cursor at selected Player square.          g.setColor(RED);          g.drawRect(((cursorPosition % 3) * boardCellSize) + 1 + boardLeft,                     ((cursorPosition/3) * boardCellSize) + 1 + boardTop,                     boardCellSize - 2,                     boardCellSize - 2);    }}

⌨️ 快捷键说明

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