package com;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class Time extends Thread {
Main main;
boolean isRun = true;
int i = 10;
public Time(Main m, int i) {
this.main = m;
this.i = i;
}
@Override
public void run() {
while (i > -1 && isRun) {
main.time[1].setText("倒计时:" + i--);
second(1);// 等一秒
}
if (i == -1)// 正常终结,说明超时
main.time[1].setText("不抢");
main.landlord[0].setVisible(false);
main.landlord[1].setVisible(false);
for (Card card2 : main.playerList[1])
card2.canClick = true;// 可被点击
// 如果自己抢到地主
if (main.time[1].getText().equals("抢地主")) {
// 得到地主牌
main.playerList[1].addAll(main.lordList);
openlord(true);
second(2);// 等待五秒
Common.order(main.playerList[1]);
Common.rePosition(main, main.playerList[1], 1);
main.publishCard[1].setEnabled(false);
setlord(1);
} else {
// 电脑选地主
if (Common.getScore(main.playerList[0]) < Common
.getScore(main.playerList[2])) {
main.time[2].setText("抢地主");
main.time[2].setVisible(true);
setlord(2);// 设定地主
openlord(true);
second(3);
main.playerList[2].addAll(main.lordList);
Common.order(main.playerList[2]);
Common.rePosition(main, main.playerList[2], 2);
openlord(false);
} else {
main.time[0].setText("抢地主");
main.time[0].setVisible(true);
setlord(0);// 设定地主
openlord(true);
second(3);
main.playerList[0].addAll(main.lordList);
Common.order(main.playerList[0]);
Common.rePosition(main, main.playerList[0], 0);
openlord(false);
}
}
// 选完地主后 关闭地主按钮
main.landlord[0].setVisible(false);
main.landlord[1].setVisible(false);
turnOn(false);
for (int i = 0; i < 3; i++) {
main.time[i].setText("不要");
main.time[i].setVisible(false);
}
// 开始游戏 根据地主不同顺序不同
main.turn = main.dizhuFlag;
while (true) {
if (main.turn == 1) // 我
{
// 如果我主动出牌关闭不要按钮
if (main.time[0].getText().equals("不要")
&& main.time[2].getText().equals("不要"))
main.publishCard[1].setEnabled(false);
else {
main.publishCard[1].setEnabled(true);
}
turnOn(true);// 出牌按钮 --我出牌
timeWait(30, 1);// 我自己的定时器
turnOn(false);// 选完关闭
main.turn = (main.turn + 1) % 3;
if (win())// 判断输赢
break;
}
if (main.turn == 0) {
computer0();
main.turn = (main.turn + 1) % 3;
if (win())// 判断输赢
break;
}
if (main.turn == 2) {
computer2();
main.turn = (main.turn + 1) % 3;
if (win())// 判断输赢
break;
}
}
}
// 等待i秒
public void second(int i) {
try {
Thread.sleep(i * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 地主牌翻看
public void openlord(boolean is) {
for (int i = 0; i < 3; i++) {
if (is)
main.lordList.get(i).turnFront(); // 地主牌翻看
else {
main.lordList.get(i).turnRear(); // 地主牌闭合
}
main.lordList.get(i).canClick = true;// 可被点击
}
}
// 设定地主
public void setlord(int i) {
Point point = new Point();
if (i == 1)// 我是地主
{
point.x = 80;
point.y = 430;
main.dizhuFlag = 1;// 设定地主
}
if (i == 0) {
point.x = 80;
point.y = 20;
main.dizhuFlag = 0;
}
if (i == 2) {
point.x = 700;
point.y = 20;
main.dizhuFlag = 2;
}
main.dizhu.setLocation(point);
main.dizhu.setVisible(true);
}
// 打开出牌按钮
public void turnOn(boolean flag) {
main.publishCard[0].setVisible(flag);
main.publishCard[1].setVisible(flag);
}
// 电脑0走牌(我代表1)
public void computer0() {
timeWait(1, 0); // 定时
ShowCard(0); // 出牌
}
// 电脑2走牌(我代表1)
public void computer2() {
timeWait(1, 2); // 定时
ShowCard(2); // 出牌
}
// 走牌
public void ShowCard(int role) {
int orders[] = new int[] { 4, 3, 2, 1, 5 };
Model model = Common.getModel(main.playerList[role], orders);
// 待走的牌
List<String> list = new ArrayList();
// 如果是主动出牌
if (main.time[(role + 1) % 3].getText().equals("不要")
&& main.time[(role + 2) % 3].getText().equals("不要")) {
// 有顺子出顺子
if (model.a123.size() > 0) {
list.add(model.a123.get(model.a123.size() - 1));
}// 有3带就出3带,没有就出光3
else if (model.a3.size() > 0) {
// 3带单,且非关键时刻不能带王,2
if (model.a1.size() > 0) {
list.add(model.a1.get(model.a1.size() - 1));
}// 3带对
else if (model.a2.size() > 0) {
list.add(model.a2.get(model.a2.size() - 1));
}
list.add(model.a3.get(model.a3.size() - 1));
}// 有双顺出双顺
else if (model.a112233.size() > 0) {
list.add(model.a112233.get(model.a112233.size() - 1));
}// 有飞机出飞机
else if (model.a111222.size() > 0) {
String name[] = model.a111222.get(0).split(",");
// 带单
if (name.length / 3 <= model.a1.size()) {
list.add(model.a111222.get(model.a111222.size() - 1));
for (int i = 0; i < name.length / 3; i++)
list.add(model.a1.get(i));
} else if (name.length / 3 <= model.a2.size())// 带双
{
list.add(model.a111222.get(model.a111222.size() - 1));
for (int i = 0; i < name.length / 3; i++)
list.add(model.a2.get(i));
}
}// 有单出单 (除开3带,飞机能带的单牌)
else if(model.a1.size() > (model.a111222.size() * 2 + model.a3.size())) {
list.add(model.a1.get(model.a1.size() - 1));
}// 有对子出对子 (除开3带,飞机)
else if (model.a2.size() > (model.a111222.size() * 2 + model.a3
.size())) {
list.add(model.a2.get(model.a2.size() - 1));
}// 有炸弹出炸弹
else if (model.a4.size() > 0) {
// 4带2,1
int sizea1 = model.a1.size();
int sizea2 = model.a2.size();
if (sizea1 >= 2) {
list.add(model.a1.get(sizea1 - 1));
list.add(model.a1.get(sizea1 - 2));
list.add(model.a4.get(0));
} else if (sizea2 >= 2) {
list.add(model.a2.get(sizea1 - 1));
list.add(model.a2.get(sizea1 - 2));
list.add(model.a4.get(0));
} else {// 直接炸
list.add(model.a4.get(0));
}
}
}// 如果是跟牌
else {
//如果队友牌大则不出
if(role!=main.dizhuFlag)
{
int f=0;
if(main.time[main.dizhuFlag].getText().equals("不要"))
{
f=1;
}//如果我的下家是地主,且我的上家出的比较大了
if((role+1)%3==main.dizhuFlag)
{
if((Common.jugdeType(main.currentList[(role+2)%3])!=CardType.c1||
Common.jugdeType(main.currentList[(role+2)%3])!=CardType.c2)
&&main.currentList[main.dizhuFlag].size()<1)
f=1;
if(main.currentList[(role+2)%3].size()>0&&Common.getValue(main.currentList[(role+2)%3].get(0))>13)
f=1;
}
if(f==1){
main.time[role].setVisible(true);
main.time[role].setText("不要");
return;
}
}
// 拆牌打
int can = 0;
if (role == main.dizhuFlag)// 如果自己是地主
{// 当对手牌小于5张的时候炸
if (main.playerList[(role + 1) % 3].size() <= 5
|| main.playerList[(role + 2) % 3].size() <= 5)
can = 1;
} else {// 当地主牌小于5张的时候炸
if (main.playerList[main.dizhuFlag].size() <= 5)
can = 1;
}
// 如果can=1就要拆牌model得重新来
List<Card> player;
if(main.time[(role + 2) % 3].getText().equals("不要"))
player=main.currentList[(role + 1) % 3];
else
player= main.currentList[(role + 2) % 3];
CardType cType = Common.jugdeType(player);
// 如果是单牌
if (cType == CardType.c1) {
if (can == 1)
model = Common.getModel(main.playerList[role], new int[] {
1, 4, 3, 2, 5 });
AI_1(model.a1, player, list, role);
}// 如果是对子
else if
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
JAVA 斗地主游戏源码 (206个子文件)
run.bat 29B
run.bat 29B
Common.class 13KB
Common.class 13KB
Time.class 13KB
Time.class 13KB
Main.class 7KB
Main.class 7KB
Card.class 2KB
Card.class 2KB
CardType.class 2KB
CardType.class 2KB
Common$1.class 1KB
Common$1.class 1KB
Model.class 720B
Model.class 717B
Card_index.class 342B
Card_index.class 339B
NewSwing.class 257B
.classpath 301B
.classpath 301B
5-1.gif 5KB
5-2.gif 5KB
5-1.gif 5KB
5-2.gif 5KB
5-1.gif 5KB
5-2.gif 5KB
rear.gif 4KB
rear.gif 4KB
rear.gif 4KB
dizhu.gif 3KB
dizhu.gif 3KB
dizhu.gif 3KB
2-12.gif 1KB
2-12.gif 1KB
2-12.gif 1KB
4-12.gif 1KB
4-12.gif 1KB
4-12.gif 1KB
3-12.gif 1KB
3-12.gif 1KB
3-12.gif 1KB
2-13.gif 1KB
2-13.gif 1KB
2-13.gif 1KB
2-11.gif 1KB
2-11.gif 1KB
2-11.gif 1KB
1-12.gif 1KB
4-11.gif 1KB
1-12.gif 1KB
4-11.gif 1KB
1-12.gif 1KB
4-11.gif 1KB
3-11.gif 1KB
3-11.gif 1KB
3-11.gif 1KB
4-13.gif 1KB
4-13.gif 1KB
4-13.gif 1KB
3-13.gif 1KB
3-13.gif 1KB
3-13.gif 1KB
1-11.gif 1KB
1-11.gif 1KB
1-11.gif 1KB
1-13.gif 1KB
1-13.gif 1KB
1-13.gif 1KB
2-10.gif 661B
2-10.gif 661B
2-10.gif 661B
2-9.gif 623B
3-10.gif 623B
2-9.gif 623B
3-10.gif 623B
2-9.gif 623B
3-10.gif 623B
4-10.gif 621B
4-10.gif 621B
4-10.gif 621B
1-10.gif 618B
1-10.gif 618B
1-10.gif 618B
2-8.gif 606B
2-8.gif 606B
2-8.gif 606B
3-9.gif 587B
3-9.gif 587B
3-9.gif 587B
4-9.gif 582B
4-9.gif 582B
4-9.gif 582B
1-9.gif 581B
1-9.gif 581B
1-9.gif 581B
3-8.gif 572B
3-8.gif 572B
3-8.gif 572B
2-7.gif 570B
共 206 条
- 1
- 2
- 3
Erics_He
- 粉丝: 9
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Linux知识体系复习
- 东华深度学习课后习题全部
- 基于STM32+ESP8266+OneNET平台的环境监测报警系统设计.rar
- 基于Django+Django -Rest-Framework实现的在线考试系统
- mt7628 breed 固件
- 基于STM32F103+ESP8266+机智云的室内室外各种环境监测系统设计
- 基于STM32+MPU9250的小型四轴飞行器设计-毕设开题报告&PPT&部分回答问题.rar
- 基于STM32+NB-IOT的风机环境监控系统设计
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的节能断电保护电路设计
- 基于python+django+vue开发的外卖点餐系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页