以前只是一個人完成一個項目,不論什么都是,現在突然要兩個人一起來寫, 聽上去挺稀奇的,也挺簡單的,可惜了就是“聽上去”而已。我認為這也是一種技術啊~
我跟我的搭檔研究了好久好久,選擇了好久,然后也選了各種語言,最后決定了用Java。本來我打算做一個數獨的小項目,可惜搭檔說還是做五子棋的(主要我覺得做五子棋的人太多了),所以最后還是做了五子棋的,這是源碼的github鏈接。
我們用Java編寫了一個五子棋游戲,實現了實現了人人對戰,人機對戰。其中人機對戰使用了很簡單的AI,使棋子隨機出現在棋盤的各個位置。在整個過程中,我有我的活兒,我的搭檔(cnblongs)也有他的任務。
一、分工情況:
崔琪:GUI設計以及代碼規范
孫明東:負責棋子勝負判斷部分
二、過程分析:
這次我主要負責的是GUI設計以及代碼規范,我來大概說說GUI吧。
GUI編程規范總結:
1、一般情況下對話框第一欄都是菜單欄,因此首先就是建立菜單欄。在GUI控件使用時所有的控件都是層層嵌套的,就是控件依托,最終整合到面板上,進而再添加事件監聽器,已響應事件的發生;
建立菜單:
public MenuBar getMB(){//創建菜單欄 MenuBar mb = new MenuBar(); Menu file = new Menu("文件");//文件菜單 MenuItem open = new MenuItem("打開");//打開菜單項 file.add(open); MenuItem save = new MenuItem("保存");//保存菜單項 file.add(save); file.addSeparator(); MenuItem exit = new MenuItem("退出");//退出菜單項 file.add(exit); Menu game = new Menu("游戲"); MenuItem begin = new MenuItem("開始游戲");//開始游戲菜單項 game.add(begin); game.addSeparator(); MenuItem mantoman = new MenuItem("人人對戰"); game.add(mantoman); MenuItem mantocpu = new MenuItem("人機對戰"); game.add(mantocpu); Menu have = new Menu("執子顏色"); MenuItem haveblcak = new MenuItem("黑色"); have.add(haveblcak); MenuItem havewhite = new MenuItem("白色"); have.add(havewhite); game.addSeparator(); game.add(have); Menu help = new Menu("幫助");//幫助菜單 MenuItem about = new MenuItem("關於");//打開菜單項 help.add(about); mb.add(file); mb.add(game); mb.add(help); MenuAction al = new MenuAction(); open.addActionListener(al); save.addActionListener(al); about.addActionListener(al); exit.addActionListener(al); begin.addActionListener(al); mantoman.addActionListener(al); mantocpu.addActionListener(al); haveblcak.addActionListener(al); havewhite.addActionListener(al); return mb; }
在這里舉一例。
GUI框架的設計步驟:
①首先要建立主框架:JFrame f=new JFrame();
②取得框架的內容窗格 Container contentPane=f.getContentPane();
③在制作復雜的用戶界面時,常常需要使用多個JPanel將復雜的界面分解為先對建大的子界面,然后再對每個JPanel進行布局:
如
Menu file = new Menu("文件");//文件菜單
MenuItem open = new MenuItem("打開");//打開菜單項
file.add(open);
MenuItem save = new MenuItem("保存");//保存菜單項
file.add(save);
file.addSeparator();
MenuItem exit = new MenuItem("退出");//退出菜單項
file.add(exit);
④將面板添加到框架的內容窗格中,如:
Menu have = new Menu("執子顏色"); MenuItem haveblcak = new MenuItem("黑色"); have.add(haveblcak); MenuItem havewhite = new MenuItem("白色"); have.add(havewhite); game.addSeparator(); game.add(have);
⑤處理控件的依賴關系,及消息的定義,各種細節的設計
⑥控件的逐級加入
JSSFMenu.add(DBJFItem);//將下拉子菜單加入到主菜單中去
menuBar.add(DBJFItem);//將主菜單加入到主菜單工具條中
⑦將面板加入到框架的內容窗格中
contentPanel.add(P);
三、設計結果:
運行界面
接下來是運行的結果
以上是項目的過程
四、收獲
在這次的結對項目中,我體會到了兩人在一起工作時的狀態,好處總要比弊處多。首先兩個人在一起做一個項目會節省很多的時間,分工合作要比一個人瞎忙來得好;還有,一個人的思維往往是受局限的,有了伙伴之后總會讓你在思維上有所啟發。相互的交流學習是非常重要的,往往有所經驗才有所收獲。很高興和搭檔的這次合作!