項目由來
2018年QQ寵物就此停服,童年的回憶就此消失,為此我們(L.Z.G)決定自己寫一個桌面寵物。做這個之前我們需要一些前期的准備工作,前期調查,需要我們寵物的圖片后期的PS,還要數據庫來存儲我們的登錄信息,這里我們使用了Mysql數據庫並且使用了Navicat 的可視化操作數據庫軟件,又為了我們的桌面寵物能讓每一個人都擁有一只這么可愛的寵物,我們使用了阿里雲服務器來搭建我們的數據庫。實現每個人都擁有一只可愛無比的桌面寵物。該程序主要為了給那些懷念那只可愛的小企鵝的用戶設計。
一、團隊介紹
成員姓名 | 任務分配 | 備注 |
---|---|---|
郭東陽(隊長) | 服務器、主界面GUI、模塊拼接、多線程 | 可愛、帥氣 |
周理偉 | 實體類的設計、數據庫 | 機智、勇敢 |
李星寶 | 部分GUI、音樂模塊、程序可執行調試 | 帥氣、迷人 |
https://gitee.com/jellysheep/development_of_desktop_pet.git
三、Git項目提交記錄截圖
四、項目功能架構圖、主要功能流程圖
五、面向對象設計類圖
1、Skill接口
2、User 類存儲登錄用戶信息
3、pet類.存儲寵物信息屬性、好感度以及互動的方法
4、Account類 存儲記賬的信息
5、pet.Girl類 特有類繼承接口Skill
6、Reminder類 提醒類 存儲數據庫中提示語句
六、項目運行截圖與屏幕錄制
1、登錄界面后面的背景皮卡丘是個動態的小寵物
2、注冊界面
3、寵物主界面
4、系統托盤菜單
5、菜單主界面、包含播放和暫停音樂按鈕
6、寵物屬性、好感度
7、記賬界面
8、寵物演示小視頻
https://v.youku.com/v_show/id_XNDUwNDM3MjYxMg==.html
七、項目關鍵代碼
1、登錄按鈕的監聽
這里對登錄按鈕添加了監聽器,在該部分代碼中使用UserDaoImpl類里的isLogin方法對服務器發送請求獲取服務端的數據庫信息,並且做出比對給出判斷反饋
2、主界面的多線程
Def和Cil線程是維持桌面寵物一直處於動態的主要代碼,以及每個一段時間的彈窗小提醒也是在這個線程里,互動之類的,好感度的實時增加
3、系統托盤
支持系統托盤、增加可操作性菜單
4、鼠標拖動寵物代碼
這部分代碼比較關鍵、如果不能拖動寵物,互動就大大的打了折扣
5、服務器端獲取彈窗信息
對服務器發送請求、進行連接,獲取數據庫中talk數據,進行隨機輸出
6、彈窗GUI的實現
這部分是為jframe設置背景圖片,在GUI的設計中,JLabel放了圖片就會把其它jLabel擠開,這很讓人頭疼;在查詢資料的過程中我發現:
在jframe上添加組件,往往是添加在contentpane中。但是在contentpane的下面還有兩層面板,那就是layeredpane和jrootpane。
任何一本關於java的書中都會介紹contentpane,卻很少提到layeredpane和jrootpane。
八、測試、改進與感想
1、測試的過程中遇到了很多問題比如線程,在鼠標進行操作的時候要怎么去變化,通過監聽器去修改一個flag值在線程里加上一個比較flag來判斷什么時候要做什么事情,還有服務器。在使用服務器作為數據庫,要注意的有很多;首先要先在阿里雲控制台設置端口的出入, 一般數據庫的端口為3306,但是服務器並沒有默認該端口可以通過,所以不開的話將不能通過3306端口訪問數據庫,同時還要在雲端數據庫運行允許外網ip訪問權限的開放的命令,並且設置外網訪問密碼;還有和隊友們對接的時候往往會出現意想不到的問題,好比如我調用隊友寫的菜單中的一個選項,會跳出一個GUI但是在關閉這個彈窗的時候會把其它GUI一起關閉這時候就需要隊友修改自己的代碼;
2、改進方面,就是互動的動作可能太少了,時間的不足沒辦法讓我們的GUI寵物動作更加豐富,因為很多圖片都需要我們自己去PS修改才能用;
3、通過這次課程設計,讓我明白了團隊合作有很大的好處,同時默契也是團隊合作中的關鍵,團隊合作使我靈活應用所學的知識,完成自己團隊分工的內容;學會了很多東西,也知道可如何在服務器上架構數據庫,怎么連接遠程數據庫,GUI的布局管理;這些都是日后實用的,只有不斷的學習、實踐,再學習、再實踐才會成長。
九、關於雲端服務器
剛開始,想着的是用本地數據庫,但是那樣別人用起來就不是特別的方便了,所以我買了一個阿里雲服務來構架我們桌面寵物的數據庫。