package poker;
/**
* <p>Title: 斗地主</p>
* <p>Description: 面板类</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author 李艳生
* @version 1.0
*/
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.io.PrintStream;
import javax.swing.JComponent;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.util.Vector;
import java2d.AnimatingControlsSurface;
import java2d.CustomControls;
public class MainPanel extends JPanel implements Runnable{
Thread thread;
//出牌音乐
private Sound postsound = new Sound("post.wav");
int x1, y1;
int x2, y2;
int x3, y3;
//two玩家的每张牌的坐标
int twoX[] = new int[20];
int twoY[] = new int[20];
//two玩家的每张牌的状态:false:没有选中
boolean twoStatus[] = new boolean[20];
public MainPanel() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public void run(){
while(true){
if(PokerKernal.posted){
repaint();
//延时3秒
delay(3000);
//叫牌,并找出最终拿牌人
callPoker();
PokerKernal.posted = false;
repaint();
}
if(PokerKernal.take){
repaint();
//延时3秒
delay(3000);
//把底牌给地主
CardOperation.takeLow();
repaint();
PokerKernal.take = false;
}
}
}
//延时
public void delay(int time){
try{
thread.sleep(time);
}
catch(Exception e){}
}
//叫牌,并找出最终拿牌人
public void callPoker(){
CallPokerDialog cpd = new CallPokerDialog();
//叫牌
if(PokerKernal.master.equalsIgnoreCase("one")){
//根据手中的牌来叫牌
PokerKernal.one.call = 1;
PokerKernal.score = 1;
cpd.show();
if(PokerKernal.score<3){
//根据手中的牌来叫牌
PokerKernal.score = 3;
PokerKernal.three.call = 3;
}
}
else if(PokerKernal.master.equalsIgnoreCase("two")){
cpd.show();
if(PokerKernal.score<3){
//根据手中的牌来叫牌
PokerKernal.one.call = 2;
PokerKernal.score = 2;
}
if(PokerKernal.score<3){
//根据手中的牌来叫牌
PokerKernal.score = 3;
PokerKernal.three.call = 3;
}
}
if(PokerKernal.master.equalsIgnoreCase("three")){
PokerKernal.three.call = 1;
PokerKernal.score = 1;
cpd.show();
if(PokerKernal.score<3){
PokerKernal.score = 3;
PokerKernal.one.call = 3;
}
}
//确定拿牌人
int one = PokerKernal.one.call;
int two = PokerKernal.two.call;
int three = PokerKernal.three.call;
if((one>three)&&(one>two)){
PokerKernal.master = "one";
}
else if((two>one)&&(two>three)){
PokerKernal.master = "two";
}
else if((three>one)&&(three>two)){
PokerKernal.master = "three";
}
PokerKernal.take = true;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//判断游戏状态
if(PokerKernal.status){
//理牌
PokerKernal.sortOneCards();
PokerKernal.sortTwoCards();
PokerKernal.sortThreeCards();
//显示地主
displayMaster(g2);
//输入玩家信息
displayPlayer(g2);
//显示最初发的牌
displayFirst(g2);
}
}
//显示最初发的牌
public void displayFirst(Graphics2D g2){
x1 = 10;y1 = 60;
y2 = 415;
x3 = 712; y3 = 60;
for (int i = 0; i < 17; i++) {
if (PokerKernal.master.equalsIgnoreCase("one")) {
//g2.drawImage( ( (Card) PokerKernal.oneCards.get(i)).getImg(), x1, y1, 71, 96, null);
g2.drawImage(((Card)CardOperation.cards.get(54)).getImg(),x1,y1,71,96,null);
y1 += 15;
//g2.drawImage(((Card)CardOperation.cards.get(54)).getImg(),330,130, 71, 96, null);
g2.drawImage( ( (Card) PokerKernal.twoCards.get(i)).getImg(), twoX[i], twoY[i], 71, 96, null);
g2.drawImage( ( (Card) PokerKernal.threeCards.get(i)).getImg(), x3, y3, 71, 96, null);
y3 += 15;
}
else if (PokerKernal.master.equalsIgnoreCase("two")) {
g2.drawImage( ( (Card) PokerKernal.twoCards.get(i)).getImg(),twoX[i], twoY[i], 71, 96, null);
g2.drawImage( ( (Card) PokerKernal.threeCards.get(i)).getImg(), x3, y3, 71, 96, null);
y3 += 15;
//g2.drawImage( ( (Card) PokerKernal.oneCards.get(i)).getImg(), x1, y1, 71, 96, null);
g2.drawImage(((Card)CardOperation.cards.get(54)).getImg(),x1,y1,71,96,null);
y1 += 15;
}
else if (PokerKernal.master.equalsIgnoreCase("three")) {
g2.drawImage( ( (Card) PokerKernal.threeCards.get(i)).getImg(), x3, y3, 71, 96, null);
y3 += 15;
//g2.drawImage( ( (Card) PokerKernal.oneCards.get(i)).getImg(),x1, y1, 71, 96, null);
g2.drawImage(((Card)CardOperation.cards.get(54)).getImg(),x1,y1,71,96,null);
y1 += 15;
g2.drawImage( ( (Card) PokerKernal.twoCards.get(i)).getImg(), twoX[i], twoY[i], 71, 96, null);
}
}
//显示底牌
if(PokerKernal.takelow){
for (int i = 17; i < 20; i++) {
if(PokerKernal.master.equalsIgnoreCase("one")){
g2.drawImage( ( (Card) PokerKernal.oneCards.get(i)).getImg(), x1, y1, 71, 96, null);
y1 = y1 + 15;
}
else if (PokerKernal.master.equalsIgnoreCase("two")) {
g2.drawImage( ( (Card) PokerKernal.twoCards.get(i)).getImg(),twoX[i], twoY[i], 71, 96, null);
}
else if (PokerKernal.master.equalsIgnoreCase("three")) {
g2.drawImage( ( (Card) PokerKernal.threeCards.get(i)).getImg(), x3, y3, 71, 96, null);
y3 += 15;
}
}
}
else{
displayLow(g2);
}
}
//显示地主的图像
public void displayMaster(Graphics2D g2){
String master = PokerKernal.master;
Image img = null;
if(master.equalsIgnoreCase("one")){
img = PokerKernal.one.image;
}
else if(master.equalsIgnoreCase("two")){
img = PokerKernal.two.image;
}
else if(master.equalsIgnoreCase("three")){
img = PokerKernal.three.image;
}
g2.drawImage(img,(800-71)/2, 0, 71,54, null);
//g2.drawString(String.valueOf(PokerKernal.score), 300,70);
}
//输出玩家信息
public void displayPlayer(Graphics2D g2){
//输出玩家信息
//g2.drawString(PokerKernal.one.name,10,40);
g2.drawImage(PokerKernal.one.image, x1, 0, 71, 54, null);
//g2.drawString(PokerKernal.three.name,695,40);
g2.drawImage(PokerKernal.three.image, x3, 0, 71, 54, null);
//g2.drawString(PokerKernal.two.name, 365,480);
g2.drawImage(PokerKernal.two.image, x1, y2 + 42, 71, 54, null);
g2.drawImage(PokerKernal.two.image, x3, y2 + 42, 71, 54, null);
}
//显示底牌
public void displayLow(Graphics2D g2){
//是否明底牌
if(PokerKernal.take){
g2.drawImage( ( (Card) CardOperation.cards.get(51)).getImg(), 280,
130, 71, 96, null);
g2.drawImage( ( (Card) CardOperation.cards.get(52)).getImg(), 365,
130, 71, 96, null);
g2.drawImage( ( (Card) CardOperation.cards.get(53)).getImg(), 450,
130, 71, 96, null);
}
else{
//没有明牌
g2.drawImage( ( (Card) CardOperation.cards.get(54)).getImg(), 280,
130, 71, 96, null);
g2.drawImage( ( (Card) CardOperation.cards.get(54)).getImg(), 365,
130, 71, 96, null);
g2.drawImage( ( (Card) CardOperation.cards.get(54)).getImg(), 450,
130, 71, 96, null);
}
}
private void jbInit() throws Exception {
this.setFont(new java.awt.Font("Dialog", 0, 13));
this.setForeground(Color.green);
this.addMouseMotionListener(new MainPanel_this_mouseMotionAdapter(this));
this.addMouseListener(new MainPanel_this_mouseAdapter(this));
x1 = 10;
y1 = 60;
x2 = 90 + (631 - (81 + 16 * 25)) / 2;
y2 = 415;
x3 = 712;
y3 = 60;
//初始化two玩家的每张牌的坐标
for(int i=0;i<20;i++){
twoX[i] = x2;
x2 += 25;
twoY[i] = y2;
//初始化two玩家的每张牌的状态
twoStatus[i] = false;
}
thread = new Thread(this);
thread.start();
}
void this_mousePressed(MouseEvent e) {
int x = e.getX(), y= e.getY();
int beginX = 166,beginY = 415;
//if(!PokerKernal
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
java斗地主游戏模仿的是qq平台 (263个子文件)
run.bat 35B
InputDialog.class 8KB
PokerFrame.class 6KB
MainPanel.class 6KB
CardOperation.class 4KB
CallPokerDialog.class 3KB
HelpDialog.class 3KB
RandomMaster.class 3KB
Sound.class 2KB
PokerKernal.class 2KB
OneHandCard.class 1KB
Card.class 1KB
PokerFrame$3.class 1KB
PokerFrame$4.class 1KB
PokerFrame$8.class 1KB
PokerFrame$9.class 1KB
PokerFrame$10.class 1KB
PokerFrame$5.class 982B
PokerFrame$1.class 966B
PokerFrame$6.class 865B
PokerFrame$2.class 795B
PokerFrame$11.class 713B
CallPokerDialog_btnThree_actionAdapter.class 701B
CallPokerDialog_btnFour_actionAdapter.class 698B
CallPokerDialog_btnOne_actionAdapter.class 695B
CallPokerDialog_btnTwo_actionAdapter.class 695B
InputDialog_cancel_actionAdapter.class 671B
PokerFrame$12.class 664B
HelpDialog_btnOK_actionAdapter.class 662B
InputDialog_image_itemAdapter.class 660B
PokerFrame$7.class 660B
InputDialog_ok_actionAdapter.class 659B
InputDialog_this_windowAdapter.class 636B
Player.class 633B
MainPanel_this_mouseMotionAdapter.class 631B
MainPanel_this_mouseAdapter.class 617B
InputDialog_this_keyAdapter.class 615B
PokerGame.class 520B
Thumbs.db 27KB
poker.dep2 30KB
4.gif 4KB
1.gif 4KB
5.gif 4KB
9.gif 4KB
8.gif 4KB
0.gif 3KB
10.gif 3KB
20.gif 3KB
6.gif 3KB
7.gif 3KB
2.gif 3KB
3.gif 3KB
MainPanel.java 9KB
InputDialog.java 8KB
PokerFrame.java 6KB
CardOperation.java 4KB
CallPokerDialog.java 4KB
HelpDialog.java 2KB
PokerKernal.java 2KB
RandomMaster.java 2KB
Sound.java 1KB
OneHandCard.java 1KB
Card.java 821B
Player.java 748B
PokerGame.java 466B
CallPokerDialog.java~10~ 4KB
MasterDialog.java~10~ 3KB
CallPokerDialog.java~11~ 4KB
MasterDialog.java~11~ 3KB
Sound.java~11~ 1011B
CallPokerDialog.java~12~ 4KB
MasterDialog.java~12~ 3KB
Sound.java~12~ 1010B
CallPokerDialog.java~13~ 4KB
MasterDialog.java~13~ 3KB
Sound.java~13~ 1010B
MasterDialog.java~14~ 3KB
RandomMaster.java~14~ 2KB
Sound.java~14~ 1010B
MasterDialog.java~15~ 3KB
RandomMaster.java~15~ 2KB
Sound.java~15~ 1022B
MasterDialog.java~16~ 3KB
RandomMaster.java~16~ 2KB
Sound.java~16~ 1KB
PokerFrame.java~179~ 6KB
MasterDialog.java~17~ 3KB
RandomMaster.java~17~ 2KB
Sound.java~17~ 1KB
PokerFrame.java~180~ 6KB
PokerFrame.java~181~ 6KB
PokerFrame.java~182~ 6KB
PokerFrame.java~183~ 6KB
PokerFrame.java~184~ 6KB
PokerFrame.java~185~ 6KB
PokerFrame.java~186~ 6KB
PokerFrame.java~187~ 6KB
PokerFrame.java~188~ 6KB
RandomMaster.java~18~ 2KB
Sound.java~18~ 1KB
共 263 条
- 1
- 2
- 3
资源评论
- zhengaabb2012-10-30不错,但是仍需改进。
- zedweein2013-05-30能用但是 是啥编码格式啊 我换了好几种都无法解码
- infyding2014-12-17东西还可以 就是积分太贵了 无法运行出来 可能是自己缺少源类库了
- 清晨的微光2012-07-05看起来还不错。改进一下就更好了。
- 码农的回忆2011-12-15内容还不错 只是没有出牌算法 只能看着 不能玩的啊 挺可惜的
zq358427304
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功