import java.io.*;
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.*;
import ds.*;
import java.util.*;
/**
* Description:
* <br/>Copyright (C), 2008-2010, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class DdzArea extends JPanel
{
//背景图案
BufferedImage backgroundImage;
//牌背面
BufferedImage backPokeImage;
//牌
BufferedImage[][] pokeImage;
// //人
// BufferedImage[] playerImage;
//时钟
BufferedImage clockImage;
//地主头像
BufferedImage dzImage;
//"不叫"两字
BufferedImage bjzImage;
//"不出"两字
BufferedImage bczImage;
//分字
BufferedImage[] pointImage;
//"准备"两字
BufferedImage readyImage;
/*----------按钮---------*/
//开始按钮
BufferedImage[] startImage;
//不叫按钮
BufferedImage[] bjImage;
//不出按钮
BufferedImage[] bcImage;
//出牌
BufferedImage[] cpImage;
//一分
BufferedImage[] oneImage;
//两分
BufferedImage[] twoImage;
//三分
BufferedImage[] threeImage;
//playerBack 玩家形象照
BufferedImage[] boyImage;
BufferedImage[] girlImage;
//形象照背景
BufferedImage playerBackImage;
//记录鼠标在面板的位置
private int xPos;
private int yPos;
public DdzArea()
{
readImage();
setSize(810 , 738);
this.repaint();
}
public void setPos(int xPos , int yPos)
{
this.xPos = xPos;
this.yPos = yPos;
}
public void readImage()
{
String[] pokeValue = new String[]
{ "3","4","5","6", "7","8","9","10", "J","Q","K","A","2","g"};
//花色从方块,梅花,红心,黑桃排列
try
{
//桌面背景
backgroundImage = ImageIO.read(new File("ico/ddz/background.png"));
//形象照背景
playerBackImage = ImageIO.read(new File("ico/ddz/playerBack.png"));
//男女生的形象照
boyImage = new BufferedImage[3];
for (int i = 0;i < 3 ;i++)
{
boyImage[i] = ImageIO.read(new File("ico/ddz/player/"+(i+1)+"_b.gif"));
}
girlImage = new BufferedImage[3];
for (int i = 0;i < 3 ;i++)
{
girlImage[i] = ImageIO.read(new File("ico/ddz/player/"+(i+1)+"_g.gif"));
}
//牌背面
backPokeImage = ImageIO.read(new File("ico/ddz/poke/back.gif"));
//牌
pokeImage = new BufferedImage[14][4];
for (int i = 0 ; i < 14; i++ )
{
for (int j = 0; j < 4; j++)
{
if(i == 13 && j > 1) //控制,只有两个鬼
break;
pokeImage[i][j] = ImageIO.read(new File("ico/ddz/poke/" +
pokeValue[i]+j+".gif"));
}
}
//时钟
clockImage = ImageIO.read(new File("ico/ddz/clock.png"));
//地主头像
dzImage = ImageIO.read(new File("ico/ddz/dz.png"));
// //"不叫"两字
// bjzImage = ImageIO.read(new File("ico/ddz/bjz.png"));
//"不出"两字
bczImage = ImageIO.read(new File("ico/ddz/bcz.png"));
//"准备"两字
readyImage = ImageIO.read(new File("ico/ddz/ready.png"));
/*----------按钮---------*/
//开始按钮
startImage = new BufferedImage[2];
for (int i = 0; i<2 ;i++ )
{
startImage[i] = ImageIO.read(new File("ico/ddz/start"+i+".png"));
}
//不叫按钮
bjImage= new BufferedImage[2];
for (int i = 0; i<2 ;i++ )
{
bjImage[i] = ImageIO.read(new File("ico/ddz/bj"+i+".png"));
}
//不出按钮
bcImage = new BufferedImage[2];
for (int i = 0; i<2 ;i++ )
{
bcImage[i] = ImageIO.read(new File("ico/ddz/bc"+i+".png"));
}
//出牌
cpImage = new BufferedImage[2];
for (int i = 0; i<2 ;i++ )
{
cpImage[i] = ImageIO.read(new File("ico/ddz/cp"+i+".png"));
}
//一分
oneImage = new BufferedImage[3];
for (int i = 0; i<3 ;i++ )
{
oneImage[i] = ImageIO.read(new File("ico/ddz/one"+i+".png"));
}
//两分
twoImage = new BufferedImage[3];
for (int i = 0; i<3 ;i++ )
{
twoImage[i] = ImageIO.read(new File("ico/ddz/two"+i+".png"));
}
//三分
threeImage = new BufferedImage[2];
for (int i = 0; i<2 ;i++ )
{
threeImage[i] = ImageIO.read(new File("ico/ddz/three"+i+".png"));
}
//分字
pointImage = new BufferedImage[4];
for (int i = 0; i<4 ;i++ )
{
pointImage[i] = ImageIO.read(new File("ico/ddz/point"+i+".png"));
}
}
catch (Exception ex)
{
System.out.println("读取文件失败");
ex.printStackTrace();
}
}
public void paint(Graphics g)
{
try
{
//把背景画上
if(!Client.gameMsg.isStart())
g.drawImage(getBackgroundImage(Client.gameMsg.isStart()), 0 , 0 , null);
else
g.drawImage(backgroundImage,0,0,null);
//g.drawImage(backgroundImage,0,0,null);
////////////////////////////////////////////////////////////////////////如果游戏没有开始
//画所有进入游戏桌的用户形象照
if(!Client.gameMsg.isStart())
{
for(UserMsg um : Client.partner)
{
Point pt = getSite(um.getSite());
int x = (int)pt.getX();
int y = (int)pt.getY();
//写上当前用户的名字
g.setColor(Color.white);
g.setFont(new Font("宋体",Font.PLAIN ,12));
g.drawString("昵称 : " + um.getUserName(),x,y + 180);
//写级别
g.drawString("级别 : " +
UserPanel.getCaste(um.getScore()),x , y + 195);
//画上形象照
if(um.getSex().equals("女"))
{
g.drawImage(girlImage[um.getSite() -1], x,y,null);
}
else
g.drawImage(boyImage[um.getSite() -1], x,y,null);
}
//没准备好就绘制"开始"按钮
if(!Client.gameMsg.isReady())
{
if(xPos == (int)Ddz.START_BN.getX() && yPos == (int)Ddz.START_BN.getY())
{
g.drawImage(startImage[1], (int)Ddz.START_BN.getX(),
(int)Ddz.START_BN.getY() ,null);
}
else
g.drawImage(startImage[0], (int)Ddz.START_BN.getX(),
(int)Ddz.START_BN.getY() ,null);
}
//根据ready 数组来绘制 "准备"图片
for(int i = 0 ;i <3;i++)
{
Point pt =getSite(i+1);
if(Ddz.ready[i])
{
g.drawImage(readyImage,(int)pt.getX() + 70,
(int)pt.getY() + 110,null);
}
}
}
////////////////////////////////////////////////////////////////如果游戏开始了
else
{
//先把人的形象照画出
for(UserMsg um : Client.partner)
{
int site = um.getSite();
Point pt = getSite(site);
int x = (int)pt.getX();
int y = (int)pt.getY();
// return new Point(510,130);
// case 2 :
// return new Point(210,130);
// default :
// return new Point(360,360);
if(x == 510)
{
x = 690;
y = 200;
}
else
if(x == 210)
{
x = 0;
y = 200;
}
else
{
x = 80;
y = 530;
}
//写上当前用户的名字
g.setColor(Color.white);
g.setFont(new Font("宋体",Font.PLAIN ,12));
if(x == 80)
{
g.drawString("昵称 : " + um.getUserName(),310,665);
//写级别
g.drawString("级别 : " +
UserPanel.getCaste(um.getScore()),
310 + 12*(um.getUserName().length()+5) , 665);
if(Client.gameMsg.getBottomScore() == 0)
g.drawString("底分 : -- ",330,685);
else
g.drawString("底分 : " + Client.gameMsg.getBottomScore()+" ",340,685);
g.drawString("倍数 : "+Client.gameMsg.getMul() + " ",410,685);
}
else
{
g.drawString("昵称 : " + um.getUserName(),x + 25,y + 180);
//写级别
g.drawString("级别 : " +
UserPanel.getCaste(um.getScore()),x + 25 , y + 195);
}
//画上形象照
if(um.getSex().equals("女"))
{
g.drawImage(girlImage[um.getSite() -1], x,y,null);
}
else
g.drawImage(boyImage[um.getSite() -1], x,y,null);
}
//画定时器
if(Client.gameMsg.getOrder() != 0 )
{
if(Client.gameMsg.getOrder() == Client.currUser.getSite())
{
g.drawImage(getClockImage(),620,550,null);
}
else
{
Point pt = getSite(Client.gameMsg.getOrder());
int x = (int)pt.getX();
int y = (int)pt.getY();
if(x == 510)
{
x = 55
没有合适的资源?快使用搜索试试~ 我知道了~
斗地主完整源码(简单,易懂)

共252个文件
gif:82个
class:58个
jpg:40个


温馨提示
斗地主完整源码,代码通俗易懂,较于基础薄弱者使用和学习。
资源推荐
资源详情
资源评论





收起资源包目录





































































































共 252 条
- 1
- 2
- 3
资源评论

- 销号le2023-07-27这个斗地主源码质朴自然,没有过多的花哨装饰,符合实际的游戏体验。
- 今年也要加油呀2023-07-27源码中的注释非常详细,帮助我更好地理解每一行代码的作用。
- 空城大大叔2023-07-27该份源码的难度适中,对于想要进阶的开发者来说是个很好的学习项目。
- 王佛伟2023-07-27源码编写得相当清晰明了,使得即使我是初学者也能够快速上手。
- 设计师马丁2023-07-27这份源码很棒,让我能够轻松理解斗地主游戏的逻辑。

wb_java
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
