日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java写的网络版斗地主_JAVA网络版斗地主游戏

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java写的网络版斗地主_JAVA网络版斗地主游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,歡迎各位前輩看小弟寫的一個網絡版的斗地主程序,下面是小弟用了兩個多星期的心血寫成的,請各位前輩多指教!使小弟我能夠得到前輩的指點,更上一層樓,謝謝支持!

下面是我寫的項目分析和講解:

由于我裝的eclipse沒有裝UML插件,所以就沒有設計UML圖,但是我的源碼當中大部分有注解講解。

在此程序當中,我的主要抽象對象是牌這個對象

Puker.java代碼如下:

/*

*這是一個牌對象的抽象類

*是為了表現牌這個對象

* */

import java.awt.*;

public class Puker

{

public int P_x,P_y;//表示牌X,Y坐標的屬性

private final int P_w=60,P_h=80; //表示牌寬,高的屬性

public Puker_num puker_num=null; //表示牌的牌值的屬性

public Puker_hushe puker_hushe=null; //表示牌的花色的屬性

public String puker_n=null;//表示畫牌時用到的一個屬性

public int puker_num1,puker_hushe1; //用整數形式表示牌的牌值和花色的屬性

public int puker_dx;//表示牌的大小的值

public boolean bUp=false; //表示牌是否被選中的屬性

/*

*用于構造用戶自己的牌的構造方法

* */

public Puker(int P_x,int P_y,Puker_num puker_num,Puker_hushe puker_hushe)

{

this.P_x=P_x;

this.P_y=P_y;

this.puker_num=puker_num;

this.puker_hushe=puker_hushe;

this.BPuker_num();

}

/*

*用于構造54張牌組的構造方法

* */

public Puker(int puker_num1,int puker_hushe1)

{

this.puker_num1=puker_num1;

this.puker_hushe1=puker_hushe1;

}

/*

*用于畫牌這個對象的方法

* */

public void paint(Graphics g)

{

Color c=g.getColor();

g.setColor(Color.WHITE);

g.fill3DRect(this.P_x, this.P_y, this.P_w, this.P_h, true);

g.setColor(Color.BLACK);

g.draw3DRect(this.P_x, this.P_y, this.P_w, this.P_h, true);

g.drawString(this.puker_n, this.P_x+5, this.P_y+20);

if(this.puker_n.equals("大王")||this.puker_n.equals("小王"))

{

}else g.drawString(this.puker_hushe.toString(), this.P_x+20, this.P_y+20);

g.setColor(c);

}

/*

*此方法根據構造方法當中的屬性來

*決定牌的其他屬性

* */

public void BPuker_num ()

{

switch(puker_num)

{

case p1: this.puker_n="1";

this.puker_dx=14;

this.puker_num1=1;

break;

case p2: this.puker_n="2";

this.puker_dx=15;

this.puker_num1=2;

break;

case p3: this.puker_n="3";

this.puker_dx=3;

this.puker_num1=3;

break;

case p4: this.puker_n="4";

this.puker_dx=4;

this.puker_num1=4;

break;

case p5: this.puker_n="5";

this.puker_dx=5;

this.puker_num1=5;

break;

case p6: this.puker_n="6";

this.puker_dx=6;

this.puker_num1=6;

break;

case p7: this.puker_n="7";

this.puker_dx=7;

this.puker_num1=7;

break;

case p8: this.puker_n="8";

this.puker_dx=8;

this.puker_num1=8;

break;

case p9: this.puker_n="9";

this.puker_dx=9;

this.puker_num1=9;

break;

case p0: this.puker_n="10";

this.puker_dx=10;

this.puker_num1=10;

break;

case pJ: this.puker_n="J";

this.puker_dx=11;

this.puker_num1=11;

break;

case pQ: this.puker_n="Q";

this.puker_dx=12;

this.puker_num1=12;

break;

case pK: this.puker_n="K";

this.puker_dx=13;

this.puker_num1=13;

break;

case pD: this.puker_n="大王";

this.puker_dx=17;

this.puker_num1=15;

break;

case pX: this.puker_n="小王";

this.puker_dx=16;

this.puker_num1=14;

break;

}

switch(puker_hushe)

{

case黑桃: this.puker_hushe1=1;

break;

case紅心: this.puker_hushe1=2;

break;

case梅花: this.puker_hushe1=3;

break;

case方塊: this.puker_hushe1=4;

break;

case無: if(this.puker_num1==14){

this.puker_hushe1=5;

}else if(this.puker_num1==15){

this.puker_hushe1=6;

}

break;

}

}

/*

*此方法是得到一個牌

*的一矩形對象,是為了

*選擇牌時用鼠標拖一個矩形然后

*與牌對象的矩形對象進行相交決定

*是否被選中

* */

public Rectangle getRect(){

return new Rectangle(P_x,P_y,P_w,P_h);

}

}

應該說我這個程序主要是圍繞著這個對象再操作。

那么表示牌的牌值我是用了一個枚舉類型表示的

Puker_num.java代碼如下:

/*

*此枚舉是表示牌

*的牌值的一個枚舉

* */

public enum Puker_num

{

p1,p2,p3,p4,p5,p6,p7,p8,p9,p0,pJ,pQ,pK,pX,pD;

}

這個枚舉主要表現牌的牌值的作用。

那么表示牌的花色我也是用了一個枚舉類型表示的

Puker_hushe.java代碼如下:

/*

*此枚舉是一個表示牌

*花色的枚舉

* */

public enum Puker_hushe {

黑桃,紅心,梅花,方塊,無;

}

在這里主要表示牌上的花色的一個作用。那么里有個“無”是表示大小王的時候用到的。

下面就來講一講出牌的規則算法的類吧,我在這里設計的是一個靜態類,里的成員方法和屬性也都是靜態,因為規則嗎,我想應該是不需要構造的,只要你出牌,你就使用。

可能Rule.java這個算法類的代碼會相對的多一點,我就不在這個地列出來了,朋友們可以下載我的源代碼。可以到我的個人站點上去下載或。

再設計算法的同時,我也設計了一個出牌類型的枚舉的類。這個類主要是表現所有可能出現出牌的類型情況。

PukerGroupLaiXin.java代碼如下:

*此枚舉是一個區分出的牌組

*和區分接收的牌組類型的作用

* */

public enum PukerGroupLaiXin

{

個子,對子,雙王炸彈,一飛機,一飛機帶翅膀,炸彈,五順子,六張順子,二飛機,三連對,炸彈帶二,

七張順子,八張順子,二飛機帶翅膀,四連對,九張順子,三飛機,十張順子,五連對,十一張順子,

十二順子,三飛機帶翅膀,六連對,四飛機,七連對,五飛機,四飛機帶翅膀,八連對,九連對,六飛機,

十連對,五飛機帶翅膀,發送無,接收無;

}

程序的設計就說到這了。然后謝謝大家的支持,我的QQ是:565345652,希望大家能夠給提一些意見。

下面說一說此程序的使用方法:

因為這是一個網絡版的斗地主游戲,我設計的是三個人玩的,所以要開三個程序,才能玩,我的服務器和客戶端都寫在了一起,所以不管是誰,都可以服務器的程序,但是三個程序當中只能有一個服務器端的程序,那么執行什么才是服務器的程序的:

樣例圖如下:

選擇“游戲管理” 》“創建游戲”就彈出一個界面如下:

可以輸入自己的真實明字或隨便的游戲名字,只要不為空就可以了,然后點擊創建游戲就可以了!就點擊主界面上的“準備”按鈕,然后就出現一個“開始”按鈕,然后服務器端的這個程序就等待客戶端的連接,只要有兩個客戶端連接上來,并且它們都點擊了“準備”按鈕之后,服務器端再點“開始”按鈕才會有效。

效果圖如下:

這時等待客戶端的連接。

那么怎樣創建客戶端程序呢!

樣例如下:

選擇“游戲管理” 》“加入游戲”就彈出一個界面如下:

輸入服務器端程序的IP地址,和自己的用戶名后點擊“連接”按鈕即可連接服務,如果連接上了會彈出一個對話框如下:

點擊確定之后:

點擊“準備”按鈕之后,等待服務器端的發牌。

當有兩個客戶端連接之后,并且它們都點擊了“準備”按鈕之后,服務器端就可以點擊“開始”按鈕發牌開始游戲了。這時服務器也會將地主選擇出來,此例當中選擇的第二個用戶為地主。

效果圖如下:

服務器端:

客戶端1:

客戶端2:

下面再來看一出牌的效果圖:

先從地主開始出牌:

Client1:

Client2:

Server:

其實在選擇要出的牌時,不光可以單擊一張牌,也可以用鼠標拖動來選擇牌。

游戲說明就說到這了,謝謝大家支持。由于時間原因在這里我可能沒有把網絡實現講一下,我可能會在以后有時間再寫出來,就發到網上去,希望大家支持。可能我的網絡這一方面寫的不是很優美,需要改進的地方可能會有很多。

總結

以上是生活随笔為你收集整理的java写的网络版斗地主_JAVA网络版斗地主游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。