Seabed, Desert, Sky, Gobi, Forest, Tumulus, Spirit

JAVA畢業設計-五子棋

急于交畢業設計... 比較簡單, 功能也相對貧乏. 不過應該還是有不少人需要吧~

大小: 73.59 K
尺寸: 500 x 325
浏览: 974 次
点击打开新窗口浏览全图

大小: 53.88 K
尺寸: 500 x 500
浏览: 1009 次
点击打开新窗口浏览全图

獻上完整源代碼:

Java代码
  1. package five;   
  2.     
  3. import java.awt.*;   
  4. import java.awt.event.*;   
  5. public class Five extends Frame{   
  6.      static Five mainfram; //當前表單的控制碼   
  7.      Bowl bowl = new Bowl();    
  8.      ControlPanel cp = new ControlPanel();   
  9.      static int cheese = 1;//cheese為棋子的顏色,1:黑,2:白   
  10.      static int allCheese[][] = new int[13][13]; //用二維陣列來存儲棋盤上已經下過的棋子   
  11.                                                  //初始化為0,然後1代表黑子,2代表白子   
  12.     //陣列初始化為0(棋盤清空)   
  13.     static{   
  14.         for(int i=0;i<13;i++){   
  15.             for(int j=0;j<13;j++){   
  16.                 allCheese[i][j] = 0;   
  17.             }   
  18.         }   
  19.     }     
  20.   
  21.     public Five() {   
  22.         setLayout(new BorderLayout());   
  23.         add(bowl,BorderLayout.CENTER);   
  24.         add(cp,BorderLayout.EAST);   
  25.         addWindowListener(new FiveWindowLinstener());   
  26.         setTitle("++WAYCE 五子棋++");   
  27.         mainfram = this;   
  28.     }   
  29.        
  30.     public static void main(String[] args) {   
  31.         Five f = new Five();   
  32.         f.setSize(500,500);   
  33.         f.show();   
  34.     }   
  35.        
  36.     public class FiveWindowLinstener extends WindowAdapter   
  37.     {   
  38.         public void windowClosing(WindowEvent e){   
  39.             dispose();   
  40.             System.exit(0);   
  41.         }   
  42.     }//end FiveWindowLinstener   
  43. }//end Five   
  44.   
  45. /***************************棋盤********************************/  
  46. class Bowl extends Panel   
  47. {   
  48.     FivePanel fp[][] = new FivePanel[13][13];//棋盤實際由169個儲存格面板所組成   
  49.        
  50.     Bowl()   
  51.     {    
  52.         setLayout(new GridLayout(13,13));    
  53.         for(int i=0;i<13;i++){   
  54.             for(int j=0;j<13;j++){   
  55.                 fp[i][j] = new FivePanel(i,j);   
  56.                 add(fp[i][j]); //按網格類型填加儲存格面板   
  57.             }     
  58.         }    
  59.     }//end Bowl()   
  60.        
  61.     class FivePanel extends Panel   
  62.     {   
  63.         int row,column;   
  64.         public FivePanel(int row,int column)   
  65.         {   
  66.             this.row = row;   
  67.             this.column = column;   
  68.             setBackground(Color.gray);   
  69.             addMouseListener(new PutCheese());   
  70.         }//end FivePanel     
  71.         public void paint(Graphics g){   
  72.             g.setColor(Color.white);   
  73.             if(row == 0 && column == 0){//左上角   
  74.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth(),getHeight()/2);   
  75.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth()/2,getHeight());   
  76.             }else if( row == 0 && column == 12){//右上角   
  77.                 g.drawLine(0,getHeight()/2,getWidth()/2,getHeight()/2);   
  78.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth()/2,getHeight());   
  79.             }else if(row == 12 && column == 0){//左下角   
  80.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth(),getHeight()/2);   
  81.                 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight()/2);   
  82.             }else if(row ==12 && column ==12){//左下角   
  83.                 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight()/2);   
  84.                 g.drawLine(0,getHeight()/2,getWidth()/2,getHeight()/2);   
  85.             }else if(row == 0){   
  86.                 g.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);   
  87.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth()/2,getHeight());   
  88.             }else if(row == 12){   
  89.                 g.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);   
  90.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth()/2,0);   
  91.             }else if(column == 0){   
  92.                 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());   
  93.                 g.drawLine(getWidth()/2,getHeight()/2,getWidth(),getHeight()/2);   
  94.             }else if(column == 12){   
  95.                 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());   
  96.                 g.drawLine(getWidth()/2,getHeight()/2,0,getHeight()/2);   
  97.             }else{   
  98.                 g.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);   
  99.                 g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());   
  100.             }   
  101.             if(Five.allCheese[row][column]==1){   
  102.                 g.setColor(Color.orange);   
  103.                 g.fillOval(getWidth()/4,getHeight()/4,getWidth()/2,getHeight()/2);   
  104.             }else if(Five.allCheese[row][column]==2){   
  105.                 g.setColor(Color.white);   
  106.                 g.fillOval(getWidth()/4,getHeight()/4,getWidth()/2,getHeight()/2);   
  107.             }   
  108.                    
  109.         }//end paint   
  110.            
  111.         public class PutCheese extends MouseAdapter{   
  112.             public void mouseClicked(MouseEvent e){   
  113.                 Graphics g = getGraphics();   
  114.                 System.out.println(Five.cheese+"-------------------");   
  115.                 if(Five.allCheese[row][column] != 0return//此處已經下過棋子了   
  116.                    
  117.                 if (Five.cheese == 1){   
  118.                    g.setColor(Color.orange);   
  119.                    g.fillOval(getWidth()/4,getHeight()/4,getWidth()/2,getHeight()/2);   
  120.                    Five.allCheese[row][column] = 1;   
  121.                 }else if(Five.cheese == 2){   
  122.                    g.setColor(Color.white);   
  123.                    g.fillOval(getWidth()/4,getHeight()/4,getWidth()/2,getHeight()/2);   
  124.                    Five.allCheese[row][column] = 2;   
  125.                 }   
  126.                    
  127.                  if(checkWin(Five.cheese,row,column)==1){   
  128.                 //  System.out.println("win");   
  129.                     MessageBox dl = new MessageBox((Frame)Five.mainfram,"五子棋",true,"       黃方勝!      ");   
  130.                  }else if(checkWin(Five.cheese,row,column)==2){   
  131.                     MessageBox dl = new MessageBox((Frame)Five.mainfram,"五子棋",true,"       白方勝!      ");   
  132.                  }     
  133.                        
  134.                        
  135.                 if(Five.cheese == 1){   
  136.                    Five.cheese = 2;   
  137.                 }else {   
  138.                    Five.cheese = 1;   
  139.                 }   
  140.                    
  141.                 for(int i=0;i<13;i++){   
  142.                     for(int j=0;j<13;j++){   
  143.                         System.out.print(Five.allCheese[i][j]+" ");   
  144.                     }   
  145.                     System.out.println("");   
  146.                 }   
  147.                    
  148.                   
  149.             }//end  mouseClicked()   
  150.         }//end PutCheese   
  151. //*******計算輸贏的函數******************   
  152.         public  int checkWin(int che,int row,int column){   
  153.             int startRow=0;   
  154.             int startColumn=0;   
  155.             int line =0;   
  156.            //左斜線   
  157.            System.out.println("棋子為:"+che+",row="+row+",column="+column);   
  158.               
  159.            startRow = row; startColumn = column;   
  160.            while(true){   
  161.             if((startRow == 0)||(startColumn == 0)) {break;}   
  162.             else {startRow--; startColumn--;}   
  163.            }   
  164.            while(true){   
  165.               if( (startRow == 12)||(startColumn ==12) ||(line>=5)) break;//遍歷到最後結束   
  166.               if( Five.allCheese[startRow][startColumn]==che){   
  167.                   line++;   
  168.                   System.out.print(line);   
  169.               }else{ line = 0; }   
  170.               startRow++; startColumn++;   
  171.            }   
  172.            System.out.println("左斜線:"+line);   
  173.            if(line>=5return che;//五子連線,贏!   
  174.            else line = 0;   
  175.        
  176.            //右斜線   
  177.            startRow = row; startColumn = column;   
  178.            while(true){   
  179.             if((startRow == 0)||(startColumn == 12)) {break;}   
  180.             else {startRow--; startColumn++;}   
  181.            }   
  182.              
  183.            while(true){   
  184.                if( (startRow == 12)||(startColumn ==0)  ||(line>=5))break;//遍歷到最後結束   
  185.                if( Five.allCheese[startRow][startColumn]==che){   
  186.                    line++;   
  187.                    System.out.print(line);   
  188.                }else{ line = 0; }   
  189.                startRow++; startColumn--;   
  190.            }   
  191.            System.out.println("右斜線:"+line);   
  192.            if(line>=5return che;//五子連線,贏!   
  193.            else line = 0;   
  194.        
  195.            //水平線   
  196.            startRow = row; startColumn = 0;   
  197.            while(true){   
  198.                if((startColumn ==12) ||(line>=5)) break;//遍歷到最後結束   
  199.                if( Five.allCheese[startRow][startColumn]==che){   
  200.                     line++;   
  201.                     System.out.print(Five.allCheese[startRow][startColumn]);   
  202.                     System.out.println("");   
  203.                     System.out.print(line);   
  204.                }else{ line = 0; }   
  205.                startColumn++;   
  206.          }   
  207.          System.out.println("水平線:"+line);   
  208.          if(line>=5return che;//五子連線,贏!   
  209.          else   line = 0;   
  210.   
  211.          //垂直線   
  212.          startRow = 0; startColumn = column;   
  213.          while(true){   
  214.              if((startRow ==12) ||(line>=5))break;//遍歷到最後結束   
  215.              if( Five.allCheese[startRow][startColumn]==che){   
  216.                  line++;System.out.print(line);   
  217.              }else{ line = 0; }   
  218.              startRow++;   
  219.          }   
  220.          System.out.println("垂直線:"+line);   
  221.           if(line>=5return che;//五子連線,贏!   
  222.           else  line = 0;   
  223.        
  224.           return 0;   
  225.       }//end checkWin()   
  226.          
  227.       class MessageBox extends Dialog   
  228.       {   
  229.         Label message;   
  230.         Button confirm = new Button("確定");   
  231.            
  232.         MessageBox(Frame owner,String title,boolean modal,String msg){   
  233.             super(owner,title,modal);   
  234.             setLayout(new FlowLayout(FlowLayout.CENTER));   
  235.             message = new Label(msg);   
  236.             add(message);   
  237.             add(confirm);   
  238.             confirm.addActionListener(new ActionListener(){   
  239.                 public void actionPerformed(ActionEvent e){   
  240.                     dispose();   
  241.                 }   
  242.                 });   
  243.             setSize(130,100);   
  244.             setResizable(false) ;   
  245.             setBounds(200,200,130,100);   
  246.                
  247.             show();   
  248.        
  249.         }   
  250.       }   
  251.    }//end FivePanel   
  252.            
  253. }//end Bowl;   
  254.   
  255. /*******************控制台****************************/   
  256. class ControlPanel extends Panel   
  257. {   
  258.     CheckboxGroup cbg = new CheckboxGroup();   
  259.     
  260.     Checkbox cb1 = new Checkbox("黃方先",cbg,true);   
  261.     Checkbox cb2 = new Checkbox("白方先",cbg,false);   
  262.     Button b1 = new Button("開始");   
  263.     Button b2 = new Button("重新開始");   
  264.     Button b3 = new Button("幫助");   
  265.     Button b4 = new Button("退出");   
  266.     ControlPanel()   
  267.     {   
  268.         setLayout(new GridLayout(14,1,10,5));   
  269.            
  270.         add(cb1);   
  271.         add(cb2);   
  272.         add(new Label());   
  273.         add(new Label());   
  274.         add(new Label());   
  275.         add(b1);   
  276.         add(b2);   
  277.         add(b3);   
  278.         add(b4);   
  279.         setBounds(0,0,200,500);   
  280.     }   
  281. }   

Tags: wayce, 毕业设计, java, 簡易, 五子棋

[上一篇]«没有了-|-我鬱悶,小偷更加鬱悶吧..»[下一篇]

Trackbacks

點擊獲得Trackback地址,Encode: UTF-8 點擊獲得Trackback地址,Encode: GB2312 or GBK 點擊獲得Trackback地址,Encode: BIG5

 

18條記錄訪客評論

我想请问下,这些代码是不是放进JCreator就可以实现lz以上的图片呢? 还是要怎样才能实现?  我真的不知道那么多代码放进哪里才会有跟VB一样的界面出来? 在线等待lz的赐教,可以的话 加QQ199114740 一定万分感谢您

Post by ai83580102 on 2009, January 5, 1:29 AM 引用此文發表評論 #1

嗯, 對的!
我給出的代碼就是這個五子棋程式的完整源代碼, 你只需把它copy到JCREATOR中編譯運行即可實現以上圖片功能。
JAVA和VB是完全不同的, JAVA是用代碼來構建窗體的。
你不妨試試先, 有任何問題歡迎再來一起討論!

Post by way on 2009, January 5, 2:04 AM 引用此文發表評論 #2

好的 不懂的问题我再回来问你哦! 你记得要常在线上 不然有问题不知道向谁请教了 呵呵!

Post by ai83580102 on 2009, January 5, 7:55 AM 引用此文發表評論 #3

不行呀! 上面写着 -------------------------配置:            Five - JDK  < - <默认>     --------------------
注意:D:\Program Files\myjava\JCreator Pro\MyProjects\Five\src\Five.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
请问这是什么意思呢?

Post by ai83580102 on 2009, January 5, 7:59 AM 引用此文發表評論 #4

那兩個注意是正常的, 不過兩個注意的下邊沒有顯示“處理已完成”嗎..?
如果沒有顯示的話一定是你的編譯器有問題, 如果有顯示那麼就說明正常, 你就可以運行它了!

Post by way on 2009, January 5, 1:03 PM 引用此文發表評論 #5

楼主 你能不能发一个设计给我呢? 我拿来看看!? 谢谢您了  发送到allen10172008@hotamail.com 我仔细研究下?

Post by ai83580102 on 2009, January 5, 1:26 PM 引用此文發表評論 #6

就是您已经做好页面上那个五子棋的设计,发给我自己研究下 可以么?allen10172008@hotmail.com  刚才那个写错了!

Post by ai83580102 on 2009, January 5, 1:28 PM 引用此文發表評論 #7

ok~ 已經發了。

Post by way on 2009, January 5, 5:43 PM 引用此文發表評論 #8

恩 谢谢了  我运行出来了 LZ! 可是一个新的问题又出来了! 就是怎么生成出一个小图标JDK 然后可以运行?  听的我的意思么? 我要怎么保存还是有别的方法呢?  我是菜鸟 请别见笑!

Post by ai83580102 on 2009, January 5, 7:57 PM 引用此文發表評論 #9

你意思是生成可執行程式?

Post by way on 2009, January 5, 10:18 PM 引用此文發表評論 #10

对的 对的! 在JCreator可以运行,可是不懂怎么保存成可执行程序

Post by ai83580102 on 2009, January 5, 10:25 PM 引用此文發表評論 #11

這個不是幾句話能說清楚的, 網上有不少相關的教程, 你不妨找了參考一下先。

Post by way on 2009, January 5, 10:37 PM 引用此文發表評論 #12

晕! 那你是怎样生成的呢? 如果你觉得很多的话 那就别说了吧 我去看看!
还有一个最后一个问题,为什么没有设计一个网络对战的呢? 就是输入IP地址就可以实现人与人的对战! 请问这样的设计你有吗? LZ

Post by ai83580102 on 2009, January 5, 11:45 PM 引用此文發表評論 #13

我沒有生成, 我那個是運行的截圖!
因為我們的設計不是要求連線對戰, 我也沒有, 不過網路上也很多~

Post by way on 2009, January 6, 1:12 PM 引用此文發表評論 #14

楼主  我运行不了你的这个!我要一个直接通过命令提示的~能有吗、。

Post by yy on 2010, June 22, 7:39 PM 引用此文發表評論 #15

運行不了的話一定是你編譯器的問題哦~
你可以把源程式打包為exe文件就行了。

Post by way on 2010, July 8, 9:55 AM 引用此文發表評論 #16

請問我也有用了另一個程式碼 是五子棋但目前只有期子和線

請問如何讓他判定誰輸誰贏

Post by 五毛 on 2012, January 2, 11:50 PM 引用此文發表評論 #17

回覆五毛, 請仔細看看我貼出來的code

Post by way on 2012, January 5, 2:11 AM 引用此文發表評論 #18


發表評論

評論內容(必填):