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

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

?? frame1.java

?? java 五子棋 v2.1 Java源碼。
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
package ball;

import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JScrollPane;
import javax.swing.JEditorPane;
import javax.swing.JSplitPane;
import javax.swing.JOptionPane;
import java.io.InputStream;
import sun.audio.*;
import java.net.URL;
import java.util.Random;

/**
 * <p>Title: 類說明</p>
 *
 * <p>Description: 程序主類</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author goodboy
 * @version 2.1
 */
public class Frame1 extends JFrame {
    int size=16; //棋盤大小
    int[][] board=new int[size][size]; //棋盤數(shù)據(jù) 0:無棋子 1:用戶棋子 2:AI棋子
    int time=0;; //游戲時間
    boolean suspend=true; //是否暫停
    int aiX, aiY; //AI下子坐標
    Random rand=new Random(); //隨機數(shù)對象
    String aiText1, aiText2, aiText3, aiText4, aiText5, aiText6, aiText7, aiText8, aiText9
            , aiText10, aiText11, aiText12, aiText13, aiText14, aiText15, aiText16, aiText17
            , aiText18, aiText19, aiText20; //AI表情說明文字

    //記錄棋子的歷史位置
    ArrayList userLastX=new ArrayList(); //用戶棋子橫坐標
    ArrayList userLastY=new ArrayList(); //用戶棋子縱坐標
    ArrayList aiLastX=new ArrayList(); //AI棋子橫坐標
    ArrayList aiLastY=new ArrayList(); //AI棋子縱坐標
    ArrayList lastText=new ArrayList(); //AI分析文本信息
    int backStep=0; //可以悔棋的步數(shù)
    String tempText=""; //AI分析的臨時文本信息

    static int turn=0; //目前下子方
    static int winner=0; //游戲結(jié)果 1:用戶勝 2:AI勝 3:平局
    static int userStep=0; //用戶行棋步數(shù)
    static int aiStep=0; //AI行棋步數(shù)
    static int userFourLine=0; //用戶4子成線數(shù)
    static int aiFourLine=0; //AI4子成線數(shù)
    static int userThreeLine=0; //用戶3子成線數(shù)
    static int aiThreeLine=0; //AI3子成線數(shù)
    static int userMultiLine=0; //用戶多線成型數(shù)
    static int aiMultiLine=0; //AI多線成型數(shù)
    static int forbidStyle=0; //禁手次數(shù)
    static int regretTime=0; //悔棋次數(shù)
    static int retroSpeed=1000; //回顧演示的速度
    static boolean retroSuspend=true; //回顧演示線程標記

    ControlThread thread1=new ControlThread();//控制線程對象
    RetroThread thread2=new RetroThread(); //回顧演示線程
    UserChess user=new UserChess(); //用戶對象
    AIChess ai=new AIChess(); //AI對象
    AIShow show=new AIShow();//AI分析演示對象
    Result result=new Result(); //結(jié)果顯示對象
    Information info=new Information(); //關于信息對象
    Rule rule=new Rule(); //規(guī)則信息對象
    Retrospect retro=new Retrospect(); //回顧演示控制對象
    URL url; //資源位置對象

    JPanel contentPane;
    Canvas canvas = new Canvas();
    JPanel jPanel1 = new JPanel();
    JMenuBar jMenuBar1 = new JMenuBar();
    JMenu jMenu1 = new JMenu();
    JMenu jMenu2 = new JMenu();
    JMenuItem jMenuItem1 = new JMenuItem();
    JMenuItem jMenuItem2 = new JMenuItem();
    JMenuItem jMenuItem3 = new JMenuItem();
    JMenuItem jMenuItem4 = new JMenuItem();
    JScrollPane jScrollPane1 = new JScrollPane();
    JEditorPane jEditorPane1 = new JEditorPane();
    JScrollPane jScrollPane2 = new JScrollPane();
    JEditorPane jEditorPane2 = new JEditorPane();
    JMenuItem jMenuItem5 = new JMenuItem();
    JMenuItem jMenuItem6 = new JMenuItem();
    JSplitPane jSplitPane1 = new JSplitPane();
    JMenuItem jMenuItem8 = new JMenuItem();
    JMenuItem jMenuItem7 = new JMenuItem();
    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
            thread1.start();
            thread2.start();
        } catch (Exception exception) {
            exception.printStackTrace();
            JOptionPane.showMessageDialog(null, exception.toString(), "程序面板初始化產(chǎn)生異常", JOptionPane.ERROR_MESSAGE);
        }
    }

    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        this.setJMenuBar(jMenuBar1);
        this.setResizable(false);
        setSize(new Dimension(820, 715));
        setTitle("java 五子棋 v2.1");
        canvas.setBounds(new Rectangle(15, 15, 630, 630));
        jPanel1.setBorder(BorderFactory.createEtchedBorder());
        jPanel1.setBounds(new Rectangle(660, 30, 135, 601));
        jPanel1.setLayout(null);
        jMenu1.setText("游戲");
        jMenu2.setText("幫助");
        jMenuItem1.setToolTipText("程序信息");
        jMenuItem1.setText("關于");
        jMenuItem1.addActionListener(new Frame1_jMenuItem1_actionAdapter(this));
        jMenuItem2.setToolTipText("開始游戲");
        jMenuItem2.setText("開始");
        jMenuItem2.addActionListener(new Frame1_jMenuItem2_actionAdapter(this));
        jMenuItem3.setToolTipText("退出游戲");
        jMenuItem3.setText("結(jié)束");
        jMenuItem3.addActionListener(new Frame1_jMenuItem3_actionAdapter(this));
        jMenuItem4.setToolTipText("五子棋的游戲規(guī)則");
        jMenuItem4.setText("規(guī)則");
        jMenuItem4.addActionListener(new Frame1_jMenuItem4_actionAdapter(this));
        jMenuItem6.setEnabled(false);
        jMenuItem6.setToolTipText("恢復到上一步的棋盤狀態(tài)");
        jMenuItem6.setText("悔棋");
        jMenuItem6.addActionListener(new Frame1_jMenuItem6_actionAdapter(this));
        jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
        jSplitPane1.setDividerSize(10);
        jSplitPane1.setOneTouchExpandable(true);
        jSplitPane1.setBounds(new Rectangle(10, 9, 115, 580));
        jEditorPane2.setToolTipText("AI表情");
        jEditorPane1.setToolTipText("AI分析");
        jMenuItem8.setEnabled(false);
        jMenuItem8.setToolTipText("查看該局棋的行棋過程");
        jMenuItem8.setText("回顧");
        jMenuItem8.addActionListener(new Frame1_jMenuItem8_actionAdapter(this));
        jMenuItem7.setToolTipText("查看AI分析數(shù)據(jù)");
        jMenuItem7.setText("AI數(shù)據(jù)");
        jMenuItem7.addActionListener(new Frame1_jMenuItem7_actionAdapter(this));
        contentPane.add(canvas, null);
        contentPane.add(jPanel1);
        jPanel1.add(jSplitPane1);
        jMenuBar1.add(jMenu1);
        jMenuBar1.add(jMenu2);
        jMenu2.add(jMenuItem7);
        jMenu2.add(jMenuItem4);
        jMenu2.add(jMenuItem1);
        jMenu1.add(jMenuItem2);
        jMenu1.add(jMenuItem6);
        jMenu1.add(jMenuItem8);
        jMenu1.add(jMenuItem3);
        jSplitPane1.add(jScrollPane2, JSplitPane.TOP);
        jSplitPane1.add(jScrollPane1, JSplitPane.BOTTOM);
        jScrollPane1.getViewport().add(jEditorPane1);
        jScrollPane2.getViewport().add(jEditorPane2);
        jEditorPane1.setContentType("text/html");
        jEditorPane2.setContentType("text/html");
        jSplitPane1.setDividerLocation(100);
        jEditorPane1.setText("<html><b>AI分析</b>");

        //圖片資源
        url=this.getClass().getResource("pic/nb.gif");
        aiText1="<html><center><img src="+url+"><br><font color=purple>和我來一局吧</font>";
        url=this.getClass().getResource("pic/find.gif");
        aiText2="<html><center><img src="+url+"><br><font color=purple>我再想想看</font>";
        url=this.getClass().getResource("pic/vic.gif");
        aiText3="<html><center><img src="+url+"><br><font color=purple>繼續(xù)加油吧</font>";
        url=this.getClass().getResource("pic/dk.gif");
        aiText4="<html><center><img src="+url+"><br><font color=purple>再來一局~</font>";
        url=this.getClass().getResource("pic/gongxi.gif");
        aiText5="<html><center><img src="+url+"><br><font color=purple>和氣生財哈</font>";
        url=this.getClass().getResource("pic/why.gif");
        aiText6="<html><center><img src="+url+"><br><font color=purple>禁手不算</font>";
        url=this.getClass().getResource("pic/music.gif");
        aiText7="<html><center><img src="+url+"><br><font color=purple>休息一會</font>";
        url=this.getClass().getResource("pic/daxiao.gif");
        aiText8="<html><center><img src="+url+"><br><font color=purple>將軍~</font>";
        url=this.getClass().getResource("pic/bomb.gif");
        aiText9="<html><center><img src="+url+"><br><font color=purple>好險~</font>";
        url=this.getClass().getResource("pic/kubi.gif");
        aiText10="<html><center><img src="+url+"><br><font color=purple>看招</font>";
        url=this.getClass().getResource("pic/mon.gif");
        aiText11="<html><center><img src="+url+"><br><font color=purple>貌似有難度</font>";
        url=this.getClass().getResource("pic/anwei.gif");
        aiText12="<html><center><img src="+url+"><br><font color=purple>慢慢來哈</font>";
        url=this.getClass().getResource("pic/df.gif");
        aiText13="<html><center><img src="+url+"><br><font color=purple>好累~</font>";
        url=this.getClass().getResource("pic/smile.gif");
        aiText14="<html><center><img src="+url+"><br><font color=purple>just for fun</font>";
        url=this.getClass().getResource("pic/yumen.gif");
        aiText15="<html><center><img src="+url+"><br><font color=purple>計算量太大了</font>";
        url=this.getClass().getResource("pic/kiss.gif");
        aiText16="<html><center><img src="+url+"><br><font color=purple>開小差了</font>";
        url=this.getClass().getResource("pic/kk.gif");
        aiText17="<html><center><img src="+url+"><br><font color=purple>希望沒bug</font>";
        url=this.getClass().getResource("pic/shy.gif");
        aiText18="<html><center><img src="+url+"><br><font color=purple>活動一下~</font>";
        url=this.getClass().getResource("pic/no.gif");
        aiText19="<html><center><img src="+url+"><br><font color=purple>別急~別急~</font>";
        url=this.getClass().getResource("pic/yun.gif");
        aiText20="<html><center><img src="+url+"><br><font color=purple>棋盤快滿了</font>";
        jEditorPane2.setText(aiText1);
    }

    /**
     *
     * <p>Title: 類說明</p>
     *
     * <p>Description: 控制線程類</p>
     *
     * <p>Copyright: Copyright (c) 2006</p>
     *
     * <p>Company: </p>
     *
     * @author goodboy
     * @version 2.1
     */
    class ControlThread extends Thread{
      public void run(){
        try{
          while(true){
            if(!suspend){ //未選擇暫停
              if(turn==1){ //輪到AI下子
                board[canvas.userX][canvas.userY]=1;
                canvas.board=board;
                canvas.repaint();
                userStep++;
                jMenuItem6.setEnabled(true);

                if(checkLine()){ //用戶勝利
                  suspend=true;
                  jMenuItem6.setEnabled(false);
                  jMenuItem8.setEnabled(true);
                  result.updateData();
                  result.setVisible(true);
                  playSound(2);
                  jEditorPane2.setText(aiText4);
                }
                else if(checkEqual()){ //平局
                  suspend=true;
                  jMenuItem6.setEnabled(false);
                  jMenuItem8.setEnabled(true);
                  result.updateData();
                  result.setVisible(true);
                  playSound(2);
                  jEditorPane2.setText(aiText5);
                }
                else{
                  clearTable(canvas.userX,canvas.userY);
                  refreshTable(1); //更新用戶預測表
                  refreshTable(2); //更新AI預測表

                  select();
                  board[aiX][aiY]=2;
                  canvas.board=board;
                  canvas.setLast(aiX,aiY);
                  canvas.repaint();
                  aiStep++;

                  if(checkLine()){ //ai勝利
                    suspend=true;
                    jMenuItem6.setEnabled(false);
                    jMenuItem8.setEnabled(true);
                    result.updateData();
                    result.setVisible(true);
                    playSound(2);
                    jEditorPane2.setText(aiText3);
                  }
                  else if(checkEqual()){ //平局
                    suspend=true;
                    jMenuItem6.setEnabled(false);
                    jMenuItem8.setEnabled(true);
                    result.updateData();
                    result.setVisible(true);
                    playSound(2);
                    jEditorPane2.setText(aiText5);
                  }
                  else{ //輪到用戶下子
                    clearTable(aiX,aiY);
                    refreshTable(1); //更新用戶預測表
                    refreshTable(2); //更新AI預測表

                    //禁手檢測
                    canvas.setForbid(false);
                    if(user.maxValue2>1){ //檢測4,4禁手(高優(yōu)先級)
                      for(int i=0; i<user.number2; i++){
                        canvas.setForbidLocation(Integer.parseInt(user.maxX2.get(i).toString()), Integer.parseInt(user.maxY2.get(i).toString()));
                      }
                      jEditorPane2.setText(aiText6);
                    }
                    if(user.maxValue3>1){ //檢測4,4禁手(低優(yōu)先級)
                      for(int i=0; i<user.number3; i++){
                        canvas.setForbidLocation(Integer.parseInt(user.maxX3.get(i).toString()), Integer.parseInt(user.maxY3.get(i).toString()));
                      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一二二区| 欧美精品一区二区久久婷婷| 成人久久视频在线观看| 国产精品1区2区| 国产成人免费高清| 粉嫩13p一区二区三区| 大尺度一区二区| 99久久婷婷国产| 一本色道**综合亚洲精品蜜桃冫| 91视频91自| 欧美亚一区二区| 91精品国产综合久久福利| 欧美一区二区三区免费在线看 | 日韩一区二区在线免费观看| 在线电影欧美成精品| 日韩一区二区三区视频在线 | 亚洲国产高清aⅴ视频| 欧美激情自拍偷拍| 亚洲男女一区二区三区| 天天影视涩香欲综合网| 久久精品国产网站| 懂色一区二区三区免费观看| 91在线播放网址| 91麻豆精品国产91久久久更新时间| 91精品国产麻豆国产自产在线 | 91精品国模一区二区三区| 精品日韩在线观看| 中文字幕av在线一区二区三区| 国产精品三级在线观看| 亚洲久草在线视频| 视频一区视频二区中文| 国产麻豆精品theporn| 不卡视频一二三四| 欧美日韩国产综合一区二区| 日韩三级中文字幕| 国产精品久久久久毛片软件| 亚洲国产毛片aaaaa无费看 | 国产麻豆精品久久一二三| voyeur盗摄精品| 欧美日韩另类一区| 久久久亚洲精品一区二区三区| 国产精品夫妻自拍| 日韩精品一卡二卡三卡四卡无卡| 国内精品在线播放| 日本丰满少妇一区二区三区| 91精品国产色综合久久ai换脸| 国产欧美在线观看一区| 亚洲一区免费在线观看| 国产麻豆欧美日韩一区| 欧美性感一类影片在线播放| 久久众筹精品私拍模特| 亚洲一区二区av在线| 国产精品性做久久久久久| 欧美伊人久久大香线蕉综合69| 久久先锋影音av鲁色资源| 亚洲午夜精品网| 从欧美一区二区三区| 欧美一区二区三区日韩| 亚洲美女视频一区| 国产精品一区二区在线观看不卡| 欧美艳星brazzers| 国产精品另类一区| 日本亚洲电影天堂| 色老汉一区二区三区| 国产欧美日韩激情| 蜜臀av性久久久久蜜臀aⅴ四虎| 91网址在线看| 国产欧美精品日韩区二区麻豆天美| 亚洲一区二区精品久久av| av亚洲精华国产精华精华| www国产精品av| 日韩中文字幕av电影| 色999日韩国产欧美一区二区| 国产亲近乱来精品视频| 久久99国产精品久久99果冻传媒| 欧美美女一区二区在线观看| 成人欧美一区二区三区小说| 国产一区二区福利视频| 欧美mv日韩mv国产网站| 肉丝袜脚交视频一区二区| 91福利视频网站| 亚洲欧美日韩国产中文在线| 福利一区二区在线观看| 久久网站最新地址| 久久国产尿小便嘘嘘尿| 91精品国产91热久久久做人人| 一区二区成人在线视频| 色婷婷一区二区| 亚洲欧洲日韩av| 成人黄色av电影| 国产精品无遮挡| 成人av网站免费| 国产蜜臀av在线一区二区三区| 国产一区二区三区免费观看| 精品久久久网站| 久久疯狂做爰流白浆xx| 91精品国产综合久久福利软件| 污片在线观看一区二区| 欧美在线free| 亚洲一区二区欧美日韩| 在线观看日产精品| 日日夜夜免费精品| 欧美一区二区三区四区五区| 久久国产三级精品| 久久亚洲二区三区| 国产成人超碰人人澡人人澡| 中文成人av在线| 99在线热播精品免费| 亚洲裸体在线观看| 91丨porny丨中文| 亚洲成人www| 91精品国产91久久久久久最新毛片| 免费亚洲电影在线| 久久精品亚洲精品国产欧美 | 欧美视频在线一区二区三区| 一区二区激情小说| 337p亚洲精品色噜噜狠狠| 日韩av一级电影| 欧美大片顶级少妇| 国产99久久久国产精品| 亚洲欧洲日韩一区二区三区| 在线亚洲欧美专区二区| 午夜精品久久久久久久99水蜜桃| 7777精品伊人久久久大香线蕉经典版下载 | 91麻豆精品国产| 国产一区不卡在线| 国产精品成人免费在线| 欧美日韩一区 二区 三区 久久精品| 日日夜夜一区二区| 国产欧美精品日韩区二区麻豆天美| 99麻豆久久久国产精品免费| 亚洲老妇xxxxxx| 欧美电视剧在线观看完整版| 国产精品亚洲专一区二区三区 | 成人动漫一区二区三区| 一区二区三区产品免费精品久久75| 欧美色图一区二区三区| 九九视频精品免费| 亚洲视频 欧洲视频| 制服丝袜av成人在线看| 国产99久久久久| 亚洲成a人在线观看| 久久婷婷国产综合精品青草| 91视频一区二区三区| 日本不卡一区二区三区高清视频| 久久久91精品国产一区二区三区| 91捆绑美女网站| 精品在线观看免费| 亚洲免费成人av| 久久综合五月天婷婷伊人| 色婷婷综合久久久久中文一区二区| 久久99热99| 洋洋av久久久久久久一区| 久久综合色天天久久综合图片| 91精彩视频在线| 国产精品影视网| 婷婷开心久久网| 国产精品乱码妇女bbbb| 欧美videos中文字幕| 色诱视频网站一区| 国产成人午夜电影网| 日韩二区在线观看| 亚洲日穴在线视频| 久久综合五月天婷婷伊人| 欧美日韩国产一区| proumb性欧美在线观看| 久久精品99久久久| 婷婷综合五月天| 亚洲欧美日韩一区二区| 国产亚洲一区二区三区四区| 欧美精品一卡两卡| 91蝌蚪国产九色| 国产91精品久久久久久久网曝门| 免费观看一级特黄欧美大片| 一区二区三区在线视频观看 | 男人操女人的视频在线观看欧美| 国产精品久久看| 久久色在线观看| 91精品国产aⅴ一区二区| 在线免费精品视频| 成人av在线播放网址| 国产在线不卡视频| 精品一二线国产| 美女视频黄a大片欧美| 午夜欧美2019年伦理| 亚洲综合小说图片| 亚洲日本青草视频在线怡红院| 国产欧美精品在线观看| 久久女同精品一区二区| 欧美成人猛片aaaaaaa| 精品视频免费在线| 91福利视频久久久久| 91麻豆国产福利精品| 99久久婷婷国产| 不卡电影免费在线播放一区| 成人教育av在线| 成人在线一区二区三区| 国产剧情一区二区| 国产福利91精品一区二区三区| 精品午夜一区二区三区在线观看|