使用Java語言編寫一個五子棋UI介面並實現網路對戰功能(非區域網)
使用Java語言編寫一個五子棋UI介面並實現網路對戰功能(非區域網)
一,前期準備
1,Java IDE(Eclipse)與JDK的安裝與配置
jdk-15.0.1-免配置路徑版
提取碼:earu
免安裝版Eclipse 解壓即可使用
提取碼:5iyy
網路上很多配置jdk的方法,我不再重複
這裡提供一種便捷操作的方法(針對新手)
由於高版本jdk不需要手動配置路徑,將我上傳的jdk資源下載後一鍵安裝,路徑即可自動配置
2,一台雲主機
阿里雲,騰訊雲,華為雲的雲主機均可,我用的是windows系統
(window是自帶的遠程連接很方便),如果想用其他的也可,最好選擇一個有桌面的,這樣調試起來容易些
在雲主機上同樣需要安裝Eclipse與配置jdk,步驟同上
如果記憶體較大的可以安裝資料庫,這樣編寫的程式上可以加帳號登錄註冊功能
我的雲主機
3,另一台可供測試可以聯網的電腦或虛擬機
建議方便的同學用另一台電腦,一台電腦用手機熱點,另一台用WiFi
這樣可以測試外網的連接情況
- 1
- 2
4,轉換Java Jar為exe文件的軟體(如exe4j)
網上很多關於轉換的教程(非必須,如果不需要可以忽略這一步)
- 1
二,功能分析與效果展示
1,這個程式主要分為三部分,UI介面,單機落子部分,聯網落子部分,而UI介面又分為登錄介面和棋盤介面。在這篇文章中UI介面與聯網落子部分為講述重點。
2,登錄介面實現的功能有以下幾點,首先當啟動程式時,應自動檢測與伺服器的連接,如果連接失敗,則不出現網路登錄入口,如果連接成功,則出現網路對戰登錄入口。
連接失敗效果展示
連接成功效果展示
3,棋盤介面應滿足的功能,黑白棋的落子,判斷勝利,重新開始
棋盤效果展示
4,網路對戰應滿足的功能,由於很多電腦使用路由器與外網訪問(有的通訊服務提供商會隱藏真實ip,故兩台由不同路由器連接的電腦很難建立連接),同時增加編寫難度,採用下棋雙方與伺服器連接的方式,A->伺服器<-B,A<-伺服器->B,程式應做到迅速響應伺服器資訊,減少延遲,雙方棋盤資訊應一致。
三,具體實現方法
1,棋盤UI的實現
JPanel jpan1 = new JPanel() { //根據新棋盤資訊作圖,覆蓋原有Panel
private static final long serialVersionUID = 1L;
public void paint(Graphics graphics){ //重構paint函數
int xst=20,yst=20,add=32;
for(int t=0;t<15;t++) //畫豎線
{
graphics.drawLine(xst,yst,xst,468);
xst=xst+add;
}
xst=20;yst=20;add=32;
for(int t=0;t<15;t++) //畫橫線
{
graphics.drawLine(xst,yst,468,yst);
yst=yst+add;
}
graphics.setColor(Color.BLACK); //畫棋盤上五個黑點
graphics.fillOval(113, 113, 6, 6);
graphics.fillOval(369, 113, 6, 6);
graphics.fillOval(113, 369, 6, 6);
graphics.fillOval(369, 369, 6, 6);
graphics.fillOval(241, 241, 6, 6);
for(int t=0;t<15;t++) //根據棋盤數組裡存儲的棋子資訊畫黑白子
{
for(int t1=0;t1<15;t1++)
{
if(node[t][t1]==1)
{
graphics.setColor(Color.BLACK);
graphics.fillOval(t1*32+20-13,t*32+20-13,26,26);
}
if(node[t][t1]==-1)
{
graphics.setColor(Color.WHITE);
graphics.fillOval(t1*32+20-