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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? canvas.java

?? java 五子棋 v2.1 Java源碼。
?? JAVA
字號(hào):
package ball;

import javax.swing.JPanel;
import java.awt.Graphics2D;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.Color;
import javax.swing.JOptionPane;
import java.io.InputStream;
import sun.audio.*;
import java.awt.event.MouseMotionAdapter;

/**
 * <p>Title: 類說明</p>
 *
 * <p>Description: 棋盤面板</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author goodboy
 * @version 2.1
 */
public class Canvas extends JPanel {
    int size=16; //棋盤大小
    int[][] board=new int[size][size]; //棋盤數(shù)據(jù) 0:無棋子 1:用戶棋子 2:AI棋子
    Color aiColor, userColor; //棋子顏色
    int userX, userY; //用戶落子位置
    int lastX=-1, lastY=-1; //AI最后落子位置
    int endX1,endY1,endX2,endY2; //結(jié)束成線繪制
    int[] forbidX=new int[5]; //禁手位置橫坐標(biāo)
    int[] forbidY=new int[5]; //禁手位置縱坐標(biāo)
    String tipText="<html>";

    boolean avail=false; //繪制標(biāo)志
    boolean drawEndLine=false; //繪制結(jié)束直線標(biāo)志
    boolean forbidStyle=false; //禁手提示標(biāo)記
    boolean lastAvail=false; //AI最后落子標(biāo)記
    boolean[] forbidAvail={false,false,false,false,false}; //禁手標(biāo)記

    public Canvas(){
      try{
        jbInit();
      }
      catch(Exception exception){
        exception.printStackTrace();
      }
    }

    private void jbInit() throws Exception {
      this.setLayout(null);
      this.addMouseListener(new Canvas_this_mouseAdapter(this));
        this.addMouseMotionListener(new Canvas_this_mouseMotionAdapter(this));
    }

    //繪圖方法
    public void paintComponent(Graphics g){
      super.paintComponent(g);
      Graphics2D draw = (Graphics2D) g;

      drawBoard(draw); //繪制棋盤

      if(avail){ //繪制圖形
        //繪制棋子
        for(int i=0;i<size;i++){
          for(int j=0;j<size;j++){
            if(board[i][j]==1){ //用戶棋子
              drawChessman(draw,i*40,j*40,userColor);
            }
            else if(board[i][j]==2){ //AI棋子
              drawChessman(draw,i*40,j*40,aiColor);
            }
          }
        }
        //突出AI上一個(gè)落子位置
        if(lastAvail){
          draw.setColor(Color.lightGray);
          draw.fillOval(lastX*40,lastY*40,30,30);
        }

        //繪制禁手提示位置
        for(int i=0;i<5;i++){
          if(forbidAvail[i]){
            draw.setColor(Color.magenta);
            draw.drawOval(forbidX[i]*40,forbidY[i]*40,30,30);
            draw.drawString("禁手",forbidX[i]*40+5,forbidY[i]*40+20);
          }
        }

        //顯示結(jié)束直線
        if(drawEndLine){
          draw.setColor(Color.magenta);
          draw.drawLine(endX1*40+15,endY1*40+15,endX2*40+15,endY2*40+15);
        }
      }
    }

    /**
     * <p>Description: 初始化數(shù)據(jù)</p>
     */
    public void initData(){
      for(int i=0;i<size;i++){
        for(int j=0;j<size;j++){
          board[i][j]=0;
        }
      }
      for(int i=0;i<5;i++){
        forbidAvail[i]=false;
      }
      userColor=Color.black;
      aiColor=Color.white;
      lastX=-1;
      lastY=-1;
      drawEndLine=false;
      forbidStyle=false;
      lastAvail=false;
    }

    /**
     * <p>Description: 繪制棋盤</p>
     * @param g Graphics2D對(duì)象
     */
    public void drawBoard(Graphics2D g){
      for(int i=0;i<size;i++){
        //繪制邊框
        g.setColor(Color.blue);
        g.drawLine(15,15+i*40,15+(size-1)*40,15+i*40);
        g.drawLine(15+i*40,15,15+i*40,15+(size-1)*40);
        //繪制標(biāo)記
        g.setColor(Color.black);
        g.drawString(i+"", 12+i*40, 10);
        g.drawString(i+"", 2, 18+i*40);
      }
    }

    /**
     * <p>Description: 繪制棋子</p>
     * @param g Graphics2D對(duì)象
     * @param i 棋子橫坐標(biāo)
     * @param j 棋子縱坐標(biāo)
     * @param c 棋子顏色
     */
    public void drawChessman(Graphics2D g, int i, int j, Color c){
      g.setColor(c);
      g.fillOval(i,j,30,30);
    }

    /**
     * <p>Description: 設(shè)置AI最后落子坐標(biāo)</p>
     * @param i AI最后落子橫坐標(biāo)
     * @param j AI最后落子縱坐標(biāo)
     */
    public void setLast(int i, int j){
      lastAvail=true;
      lastX=i;
      lastY=j;
    }

    /**
     * <p>Description: 設(shè)置結(jié)束成線標(biāo)記</p>
     * @param x1 起點(diǎn)橫坐標(biāo)
     * @param y1 起點(diǎn)縱坐標(biāo)
     * @param x2 終點(diǎn)橫坐標(biāo)
     * @param y2 終點(diǎn)縱坐標(biāo)
     */
    public void setLine(int x1, int y1, int x2, int y2){
      drawEndLine=true;
      endX1=x1;
      endY1=y1;
      endX2=x2;
      endY2=y2;
    }

    /**
     * <p>Description: 設(shè)置禁手提示位置</p>
     * @param x 提示位置橫坐標(biāo)
     * @param y 提示位置縱坐標(biāo)
     */
    public void setForbidLocation(int x,int y){
      for(int i=0;i<5;i++){
        if(!forbidAvail[i]){
          forbidX[i]=x;
          forbidY[i]=y;
          forbidAvail[i]=true;
          break;
        }
      }
    }

    /**
     * <p>Description: 設(shè)置禁手位置繪制標(biāo)記</p>
     * @param n 繪制禁手位置標(biāo)記
     */
    public void setForbid(boolean n){
      for(int i=0;i<5;i++){
        forbidAvail[i]=n;
      }
    }

    /**
     * <p>Description: 播放聲音</p>
     * @param index 播放音頻文件序號(hào)(0-2)
     */
    public void playSound(int index){
      try{
        InputStream stream;
        AudioStream audio;

        switch(index){
          case 1:{ //落子聲
            stream=this.getClass().getResourceAsStream("sound/waveUp.wav");
            break;
          }
          case 2:{ //游戲結(jié)束聲
            stream=this.getClass().getResourceAsStream("sound/waveEnd.wav");
            break;
          }
          case 3:{ //游戲結(jié)束聲
            stream=this.getClass().getResourceAsStream("sound/waveDrop.wav");
            break;
          }
          default:{ //落子聲
            stream=this.getClass().getResourceAsStream("sound/waveUp.wav");
            break;
          }
        }

        audio=new AudioStream(stream);
        AudioPlayer.player.start(audio);
      }
      catch(Exception e1){
        e1.printStackTrace();
        JOptionPane.showMessageDialog(null, e1.toString(), "播放音頻文件產(chǎn)生異常", JOptionPane.ERROR_MESSAGE);
      }
    }

    //鼠標(biāo)點(diǎn)擊事件
    public void this_mousePressed(MouseEvent e) {
      int tempX=e.getX();
      int tempY=e.getY();

      //設(shè)置邊界
      if(tempX<15){
        tempX=15;
      }
      if(tempY<15){
        tempY=15;
      }
      if(tempX>15+(size-1)*40){
        tempX=15+(size-1)*40;
      }
      if(tempY>15+(size-1)*40){
        tempY=15+(size-1)*40;
      }

      if(e.getButton()==e.BUTTON1){ //鼠標(biāo)左鍵點(diǎn)擊
        if(Frame1.turn==0&&avail&&board[(int)(tempX+5)/40][(int)(tempY+5)/40]==0){ //輪到用戶下子
          for(int i=0;i<5;i++){
            if(forbidAvail[i]){
              if(forbidX[i]==(int)(tempX+5)/40&&forbidY[i]==(int)(tempY+5)/40){
                forbidStyle=true;
              }
            }
          }

          if(forbidStyle){ //檢測(cè)到禁手
            Frame1.forbidStyle++;
            forbidStyle=false;
            playSound(3);
            JOptionPane.showMessageDialog(null, "<html><b>該點(diǎn)為<font color=blue>禁手</font>位"
                 +",<font color=blue>游戲規(guī)則</font>可以查看<font color=purple>幫助</font>", "落子無效", JOptionPane.INFORMATION_MESSAGE);
          }
          else{
            userX=(int)(tempX+5)/40;
            userY=(int)(tempY+5)/40;
            playSound(1);
            Frame1.turn=1;
          }
        }
        else if(!avail){ //未選擇開始
          playSound(3);
          JOptionPane.showMessageDialog(null, "<html><b>請(qǐng)?jiān)诓藛沃袉螕?lt;font color=purple>開始</font>進(jìn)行游戲", "開始游戲", JOptionPane.INFORMATION_MESSAGE);
        }
        else if(board[(int)(tempX+5)/40][(int)(tempY+5)/40]!=0){
          playSound(3);
        }
      }
      else if(e.getButton()==e.BUTTON3){ //鼠標(biāo)右鍵點(diǎn)擊
      }
    }

    //用戶鼠標(biāo)移動(dòng)
    public void this_mouseMoved(MouseEvent e) {
    }
}


class Canvas_this_mouseAdapter extends MouseAdapter {
    private Canvas adaptee;
    Canvas_this_mouseAdapter(Canvas adaptee) {
        this.adaptee = adaptee;
    }

    public void mousePressed(MouseEvent e) {
        adaptee.this_mousePressed(e);
    }
}


class Canvas_this_mouseMotionAdapter extends MouseMotionAdapter {
    private Canvas adaptee;
    Canvas_this_mouseMotionAdapter(Canvas adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseMoved(MouseEvent e) {
        adaptee.this_mouseMoved(e);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久人人超碰| 国产欧美精品一区| 天堂av在线一区| 成人免费视频视频| 久久精品免视看| 国产麻豆精品95视频| 久久久久久综合| 国产风韵犹存在线视精品| 欧美一二三四区在线| 97se亚洲国产综合在线| 日日嗨av一区二区三区四区| 欧美大胆人体bbbb| 国产日韩欧美综合一区| 日本aⅴ亚洲精品中文乱码| 欧美日韩在线播放三区四区| 一区二区三区加勒比av| 欧美综合在线视频| 免费观看一级欧美片| 久久久亚洲高清| 91在线免费看| 日日夜夜免费精品| 日韩欧美一级二级三级| 国内偷窥港台综合视频在线播放| 国产精品国产三级国产普通话蜜臀| 国产原创一区二区| 亚洲欧洲制服丝袜| 日韩欧美一卡二卡| 成人免费av在线| 日韩精品亚洲一区| 国产精品久久久久久久岛一牛影视 | 亚洲中国最大av网站| 3d成人动漫网站| 不卡的电视剧免费网站有什么| 亚洲成人av一区二区| 国产欧美日本一区视频| 欧美一区二区网站| 在线这里只有精品| 国产高清亚洲一区| 日韩精品色哟哟| 亚洲综合色在线| 亚洲国产精品av| 26uuu精品一区二区在线观看| 欧美特级限制片免费在线观看| 国产美女视频91| 精品一区二区国语对白| 亚洲成av人影院| 亚洲成人先锋电影| 亚洲免费高清视频在线| 综合久久给合久久狠狠狠97色| 精品少妇一区二区三区在线播放| 97精品久久久午夜一区二区三区| 青青草原综合久久大伊人精品优势| 亚洲欧美在线观看| 中文字幕日韩一区| 国产精品国产馆在线真实露脸 | 亚洲国产精品ⅴa在线观看| 欧美精品一级二级三级| 欧美性大战久久久久久久蜜臀| 99久久伊人精品| 欧美丝袜丝交足nylons图片| 欧美网站大全在线观看| 欧洲av在线精品| 日韩一区二区三区视频在线| 制服丝袜激情欧洲亚洲| 日韩欧美电影一区| 久久久亚洲午夜电影| 久久久久久亚洲综合影院红桃| 久久久综合视频| 日韩理论片网站| 日日摸夜夜添夜夜添精品视频| 美女脱光内衣内裤视频久久影院| 免费视频最近日韩| 国产激情精品久久久第一区二区| 成人高清免费观看| 一本大道av伊人久久综合| 欧美久久久久久久久| 久久久精品人体av艺术| 一区二区三区在线观看欧美| 麻豆精品视频在线| thepron国产精品| 日韩视频一区二区三区在线播放| 制服丝袜在线91| 欧美韩国日本不卡| 亚洲国产精品久久久男人的天堂 | 一区二区三区国产| 国产精品综合av一区二区国产馆| 日本韩国视频一区二区| 久久久夜色精品亚洲| 无吗不卡中文字幕| 91网址在线看| 国产色产综合产在线视频| 日本最新不卡在线| 欧美精品免费视频| 亚洲一二三区在线观看| 91麻豆.com| 一区二区三区日韩欧美| 成人国产精品免费| 中文字幕中文乱码欧美一区二区 | 亚洲国产精品精华液网站 | 日韩影院在线观看| 欧美亚洲国产一卡| 亚洲成人综合网站| 91.com在线观看| 美女高潮久久久| 日韩片之四级片| 韩国女主播成人在线观看| 日韩亚洲欧美成人一区| 国产一区三区三区| 中文av一区二区| 色8久久精品久久久久久蜜| 一区二区三区四区蜜桃| 欧美三片在线视频观看| 蜜臀久久久久久久| 久久影院午夜论| 99久久亚洲一区二区三区青草| 亚洲天天做日日做天天谢日日欢 | 99久久er热在这里只有精品15| 国产精品成人免费| 91精品国产色综合久久ai换脸| 日产国产高清一区二区三区 | 精品国产一区二区三区忘忧草| 国产精品自拍在线| 一区二区不卡在线视频 午夜欧美不卡在| 91色.com| 国产一区二区精品久久99| 亚洲欧洲日产国产综合网| 欧美三级中文字幕| 欧美日韩精品欧美日韩精品| 亚洲成人一区二区在线观看| 欧美一级免费大片| 99re热这里只有精品视频| 午夜精品爽啪视频| ...av二区三区久久精品| 日韩欧美成人激情| 欧美日韩亚洲高清一区二区| 国产毛片精品一区| 久草中文综合在线| 奇米一区二区三区av| 亚洲精品伦理在线| 中文字幕在线观看不卡| 精品精品欲导航| 日韩欧美国产综合| 欧美人与禽zozo性伦| 91麻豆国产福利精品| 国产99久久久久| 国产精品资源网站| 国产精品66部| 国产剧情av麻豆香蕉精品| 日本视频一区二区三区| 亚洲第四色夜色| 麻豆免费看一区二区三区| 午夜久久久久久久久久一区二区| 亚洲男人的天堂一区二区| 亚洲人一二三区| 亚洲永久精品国产| 日韩成人一区二区三区在线观看| 午夜a成v人精品| 日本不卡一二三| 久久激情五月婷婷| 国产一区二区主播在线| 老司机精品视频在线| 韩国视频一区二区| 97se亚洲国产综合在线| 欧美视频在线不卡| 精品捆绑美女sm三区| 久久精品人人做人人综合| 中文字幕一区二区三区精华液| 亚洲精品高清在线| 精品一区二区国语对白| 懂色av一区二区夜夜嗨| 欧美影院一区二区| 久久亚洲春色中文字幕久久久| 国产精品美女久久久久久久久| 亚洲老妇xxxxxx| 激情成人午夜视频| 日韩免费电影一区| 国产精品免费视频观看| 天堂蜜桃一区二区三区 | 亚洲乱码国产乱码精品精的特点| 日韩欧美三级在线| 欧美一区二区成人6969| 国产精品久久久久久久裸模| 亚洲va欧美va人人爽| 国产精选一区二区三区| 欧美精三区欧美精三区| 国产精品美女久久久久久| 免费人成精品欧美精品| 91蜜桃传媒精品久久久一区二区| 日韩视频中午一区| 日韩精品亚洲一区| 欧美日韩一级黄| 一区二区三区在线看| 波多野结衣中文字幕一区二区三区| 欧美tickling挠脚心丨vk| 婷婷一区二区三区| 欧美一二三四在线| 久久不见久久见免费视频7| 欧美猛男男办公室激情| 爽爽淫人综合网网站| 欧美日韩1区2区|