亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mycanvas.java

?? 參考了網上資源后優化改進的五子棋手機游戲
?? JAVA
字號:
package game;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;

/**
 * @author Administrator
 * 實現類
 * TODO 要更改此生成的類型注釋的模板,請轉至
 * 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板
 */
public class MyCanvas extends GameCanvas implements Runnable, CommandListener {
  protected MyMIDlet mymidlet; //和mylet一樣,對象變量mymidlet只在該文件中起作用
  private Graphics g;
  int empty; //游戲界面到屏幕邊緣的留空
  int canvasW, canvasH; //畫布的長和寬
  int chessLength; //棋子的直徑
  int chessMapLength, chessMapGrid, chessGridLength; //棋盤的邊長,棋盤一邊格子數,每格寬度
  int chessMapX, chessMapY; //棋盤左上角x,y坐標
  int selectedX, selectedY; //選擇框在棋盤格局上的x,y位置
  boolean isPlayer1; //是否是玩家1
  Chesses[][] chesses; //棋子數組
  boolean newGame; //是否是新的游戲
  boolean isplay; //是否游戲進行中
  private Command exitCommand;
  private Command startCommand;
  int player1win, player2win;
 // private Display display;

  public MyCanvas() {
  super(true);
    newGame = true;
    empty = 10;
    canvasW = getWidth() - empty;
    canvasH = getHeight() - empty;
    chessMapGrid = 15;
    chesses = new Chesses[chessMapGrid + 1][chessMapGrid + 1]; //因x個格子有x+1個交點
    if (canvasW > canvasH) { //根據手機屏幕設定邊長為chessMapLength的正方形棋盤
      chessMapLength = canvasH - canvasH % chessMapGrid;
      chessMapX = (canvasW - chessMapLength) / 2 + empty / 2;
      chessMapY = (canvasH % chessMapGrid) / 2 + empty / 2;
    }
    else {
      chessMapLength = canvasW - canvasW % chessMapGrid;
      chessMapX = (canvasW % chessMapGrid) / 2 + empty / 2;
      chessMapY = (canvasH - chessMapLength) / 2 + empty / 2;
    }
    chessGridLength = chessMapLength / chessMapGrid;
    chessLength = chessGridLength - 1;
    selectedX = selectedY = chessMapGrid / 2;
    isPlayer1 = true; 
    exitCommand = new Command("退出", Command.EXIT, 1);
    startCommand = new Command("重新開始", Command.SCREEN, 1);
    addCommand(startCommand);
    addCommand(exitCommand);
    setCommandListener(this);
  }


  public void startup() {
  	isplay = true;
  	    Thread thread = new Thread(this);
  	    thread.start();
  	  }
  
     protected void paintMap(Graphics g) { //畫棋盤,一格格畫
  	   for (int i = 0; i < chessMapGrid; i++) {
  	      for (int j = 0; j < chessMapGrid; j++) {
  	        g.setColor(50, 128, 100); //淺綠的格子
  	        g.drawRect(chessMapX + j * chessGridLength, //畫矩形框
  	                   chessMapY + i * chessGridLength,
  	                   chessGridLength, chessGridLength);
  	        g.setColor(0, 50, 0); //綠色填充格子
	        g.fillRect(chessMapX + 1 + j * chessGridLength, 
	                   chessMapY + 1 + i * chessGridLength,
	                   chessGridLength - 1, chessGridLength - 1);
  	        if (chesses[i][j] != null) {
  	          if (chesses[i][j].isPlayer1) {
  	   g.setColor(255, 255, 255); //Player1的棋子是白色的
  	          }
  	          else {
  	            g.setColor(255, 0, 0); //紅色
  	          }
  	        g.fillArc(chessMapX + j * chessGridLength - chessLength / 2, //畫棋子
  	        	  	chessMapY + i * chessGridLength - chessLength / 2,
  	        	  	                    chessLength, chessLength, 0, 360);
  	        }
  	      }
  	    }
  	  }

     protected void paintSelected(Graphics g) { //畫選擇框
	   g.setColor(0, 150, 255); //藍色
	      g.drawRect(chessMapX + selectedX * chessGridLength - chessGridLength / 2,
	               chessMapY + selectedY * chessGridLength - chessGridLength / 2,
	               chessGridLength, chessGridLength);
	  } 
  
     protected void paintPlayer(Graphics g, boolean isPlayer1) { 
  		if (isPlayer1) {  //用白色大框表示輪到Player1
  		      g.setColor(255, 255, 255);
  		    }
  		    else {
  		      g.setColor(255, 0, 0);
  		    }
  		    g.drawRect(1, 1, getWidth() - 2, getHeight() - 2);
  		    g.drawRect(2, 2, getWidth() - 4, getHeight() - 4);
  		    g.drawRect(3, 3, getWidth() - 6, getHeight() - 6);
  		  }

  public void paint(Graphics g) {
  		    g.setColor(0x00000000);
  		    g.fillRect(0, 0, getWidth(), getHeight());
  		    paintPlayer(g, isPlayer1); 		    
  		    paintMap(g);
  		    paintSelected(g); //后畫的在最上層
  		    flushGraphics();
  		  }

  		private void init() {
  			if (newGame) {
  			      chesses = new Chesses[chessMapGrid + 1][chessMapGrid + 1];
  			      isPlayer1 = true;
  			      selectedX = selectedY = chessMapGrid / 2;
  			    }
  			  }

  			  public void run() {
  			    g = getGraphics();
  			    while (isplay) {
  			      try {
  			        input(g);
  			        paint(g);
  			        Thread.sleep(50);
  			      }
  			      catch (Exception e) {
  			        e.printStackTrace();
  			      }
  			    }
  			  }

  	     public void input(Graphics g) {
  			  int keyStates = getKeyStates();
  			    if ( (keyStates & LEFT_PRESSED) != 0) {
  			      selectedX = (--selectedX + chessMapGrid + 1) % (chessMapGrid + 1);
  			    }  //之所以要取模是為了讓選擇框能循環地走
  			    else if ( (keyStates & RIGHT_PRESSED) != 0) {
  			      selectedX = (++selectedX) % (chessMapGrid + 1);
  			    }
  			    else if ( (keyStates & UP_PRESSED) != 0) {
  			      selectedY = (--selectedY + chessMapGrid + 1) % (chessMapGrid + 1);
  			    }
  			    else if ( (keyStates & DOWN_PRESSED) != 0) {
  			      selectedY = (++selectedY) % (chessMapGrid + 1);
  			    }
  			    
  			    else if ( (keyStates & FIRE_PRESSED) != 0) {
  			    if (chesses[selectedY][selectedX] == null) {
  			        chesses[selectedY][selectedX] = new Chesses(this.isPlayer1);
  			        if (checkWin()) {
  			          String winner;
  			          if (isPlayer1) {
  			            winner = "白方勝利";
  			            player1win++;
  			          }
  			          else {
  			            winner = "紅方勝利";
  			            player2win++;
  			          }
  			          Alert winAlert = new Alert("",
  			winner + "\n白方  " + player1win + " : " +
  			                                     player2win + "  紅方",
  			                                     null, AlertType.INFO);
  			          winAlert.setTimeout(Alert.FOREVER);
  			          Display.getDisplay(MyMIDlet.instance).setCurrent(winAlert); //顯示最終結果
  			          init();
  			          flushGraphics();
  			          // repaint();
  			        }
  			        this.isPlayer1 = !this.isPlayer1; //切換下棋方
  			      }
  			    }
  			    flushGraphics();
  			    // repaint();
  			  }

    
   private 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(isPlayer1(selectedX + i, selectedY)) { //右邊排成橫線的
    	          num++; }
    	        else{ break;}
    	                                     }
    	             }
    	    if (num < 5) {
    	      num = 1;
    	      for (int i = 1; i <= 4; i++) {
    	        if (isPlayer1(selectedX, selectedY - i)) { //上方排成豎線的
    	          num++; }
    	        else if(isPlayer1(selectedX, selectedY + i)) { //下方排成豎線的
    	          num++; }
    	        else { break;}
    	                                     }
    	                  }
    	    if (num < 5) {
    	      num = 1;
    	      for (int i = 1; i <= 4; i++) {
    	        if (isPlayer1(selectedX - i, selectedY - i)) { //左斜上方排成直線
    	          num++;}
    	        else if (isPlayer1(selectedX + i, selectedY + i)) { //右斜下方排成直線
    	          num++;}
    	        else { break;}
    	                                     }
    	                  }
    	    if (num < 5) {
    	      num = 1;
    	      for (int i = 1; i <= 4; i++) {
    	        if (isPlayer1(selectedX + i, selectedY - i)) { //右斜上方排成直線
    	          num++; }
    	        else if(isPlayer1(selectedX - i, selectedY + i)) { //左斜下方排成直線
    	          num++; }
    	        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 && chesses[x][y] != null) {
      if (chesses[x][y].isPlayer1 == this.isPlayer1) { return true; }
      else { return false; }
    }
    else { return false; }
  }

  public void commandAction(Command c, Displayable dpa) {
	if (c.equals(startCommand)) {
	      init();
	      startup();
	    }
	    else if (c.equals(exitCommand)) {
	      MyMIDlet.instance.notifyDestroyed(); //這里把整個程序都關掉了
	    //display.setCurrent(MyMIDlet.getForm());
	    }
	  }
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区二区三区| 日本成人中文字幕| 亚洲123区在线观看| 韩国三级电影一区二区| 在线精品视频免费播放| 国产清纯白嫩初高生在线观看91| 亚洲免费观看高清| 国产精品一区二区x88av| 欧美日韩国产免费一区二区 | 久久疯狂做爰流白浆xx| 欧洲一区在线观看| 亚洲国产精品ⅴa在线观看| 日韩在线a电影| 日本精品一级二级| 一区视频在线播放| 国产精品66部| 欧美sm美女调教| 热久久久久久久| 欧美日韩久久久久久| 综合久久给合久久狠狠狠97色| 国产一区二区三区久久悠悠色av| 9191国产精品| 亚洲国产人成综合网站| 一本大道av伊人久久综合| 欧美激情一区在线观看| 国产在线看一区| 日韩精品一区二区三区视频播放| 日韩国产欧美三级| 91 com成人网| 日韩成人av影视| 欧美精品乱码久久久久久| 一区二区三区影院| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 91精品国产综合久久小美女| 一区二区三区毛片| 色婷婷综合久久久| 中文字幕亚洲精品在线观看| 风间由美一区二区av101| 久久精品视频网| 国产精品99久久久久| 久久欧美中文字幕| 国产一区二区福利| 国产三级久久久| 国产成人精品影院| 亚洲国产精品99久久久久久久久| 成人久久久精品乱码一区二区三区| 国产无一区二区| 不卡av电影在线播放| 中文字幕一区二区三区精华液| a在线欧美一区| 亚洲激情图片小说视频| 欧美亚洲尤物久久| 琪琪久久久久日韩精品| 精品国产乱码久久久久久浪潮| 国产精品伊人色| 最新久久zyz资源站| 在线观看日韩毛片| 日本欧美在线看| 国产清纯美女被跳蛋高潮一区二区久久w| 成人黄色电影在线| 夜夜嗨av一区二区三区中文字幕 | www.日韩精品| 亚洲午夜激情网站| 久久夜色精品国产噜噜av| 成人av在线看| 天天综合日日夜夜精品| 久久精品亚洲乱码伦伦中文| av电影在线观看一区| 蜜桃视频第一区免费观看| 国产日韩欧美一区二区三区乱码 | 五月婷婷久久丁香| 久久免费看少妇高潮| 91老师片黄在线观看| 日本视频中文字幕一区二区三区| 中文字幕国产一区| 欧美日韩极品在线观看一区| 国产传媒欧美日韩成人| 亚洲精选免费视频| 26uuu欧美| 色先锋久久av资源部| 久久成人综合网| 亚洲综合免费观看高清完整版在线| 精品欧美一区二区三区精品久久| 99久久99久久免费精品蜜臀| 久久精品国产秦先生| 亚洲综合在线五月| 国产欧美日韩不卡免费| 日韩一区二区三区精品视频| 色综合久久88色综合天天6| 国产一区二区免费看| 日韩av中文字幕一区二区| 亚洲精品中文在线影院| 亚洲国产成人在线| 日韩一级二级三级精品视频| 欧美视频一区二区| 成人午夜激情影院| 国产精品自拍在线| 久久成人免费网| 婷婷成人综合网| 亚洲地区一二三色| 洋洋av久久久久久久一区| 亚洲国产岛国毛片在线| 久久久精品2019中文字幕之3| 欧美精品久久99| 在线免费av一区| 99久免费精品视频在线观看| 国产91精品一区二区麻豆网站| 麻豆高清免费国产一区| 日韩中文欧美在线| 亚洲成人tv网| 亚洲电影在线播放| 亚洲一区日韩精品中文字幕| 亚洲色图20p| 亚洲欧洲无码一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 久久久蜜桃精品| 欧美激情一区三区| 国产精品五月天| 欧美激情在线观看视频免费| 日本一区二区高清| 国产精品网曝门| 国产精品国产馆在线真实露脸| 一区在线观看免费| 亚洲免费av高清| 亚洲国产视频a| 亚洲aaa精品| 九色|91porny| 国产成人在线视频免费播放| 国产精品66部| 97久久人人超碰| 欧美综合亚洲图片综合区| 欧美精品久久天天躁| 日韩欧美美女一区二区三区| 久久影视一区二区| 日韩黄色小视频| 卡一卡二国产精品 | 一区二区三区四区在线| 亚洲午夜视频在线| 日韩精品欧美精品| 国产一区二区三区国产| 99精品黄色片免费大全| 欧美视频在线观看一区| 日韩欧美电影一二三| 国产蜜臀97一区二区三区| 一区二区在线电影| 久久草av在线| 99久久精品久久久久久清纯| 8x8x8国产精品| 中文字幕精品在线不卡| 无吗不卡中文字幕| 国产精品99久久不卡二区| 日本高清不卡视频| 26uuu成人网一区二区三区| 亚洲欧美国产77777| 久久国产精品免费| 一本一道波多野结衣一区二区| 日韩三级高清在线| 中文字幕字幕中文在线中不卡视频| 日韩中文字幕麻豆| 99re热视频精品| 精品久久人人做人人爱| 亚洲综合免费观看高清在线观看| 韩国精品免费视频| 欧美日本高清视频在线观看| 国产欧美精品一区二区色综合朱莉 | 欧美日免费三级在线| 久久一夜天堂av一区二区三区| 亚洲最新视频在线观看| 国产99久久久久| 51久久夜色精品国产麻豆| 欧美韩日一区二区三区| 日本va欧美va精品发布| 欧美亚洲另类激情小说| 国产精品久久久久9999吃药| 精油按摩中文字幕久久| 欧美三级电影精品| 亚洲激情图片qvod| 成人动漫一区二区| 久久夜色精品国产噜噜av| 日韩av一级片| 欧美性猛交xxxx黑人交| 日韩美女视频一区| 懂色av一区二区三区蜜臀| 欧美电影免费观看完整版| 亚洲午夜精品网| www欧美成人18+| 日韩专区一卡二卡| 精品视频一区二区不卡| 亚洲色大成网站www久久九九| 成人午夜免费av| 国产欧美日韩在线观看| 国产一区二区视频在线| 2014亚洲片线观看视频免费| 日本美女一区二区三区视频| 欧美人与性动xxxx| 亚洲国产成人av网| 欧美日韩国产色站一区二区三区| 亚洲一区二区欧美日韩| 欧美在线影院一区二区| 一区二区三区在线视频观看58|