其实还是有一些错误的,很多功能懒得实现了,顺子方面我实现不来,好吧主要还是偷懒,仅供参考,java做扑克的视频b站有,不过具体实现要靠自己完成,上面只有怎么把符号和点数组合成一张牌

package Game;public class Card implements Comparable{//花色private int suit;//点数private int rank;public Card() {super();}public Card(int suit, int rank) {super();this.suit = suit;this.rank = rank;}public int getSuit() {return suit;}public void setSuit(int suit) {this.suit = suit;}public int getRank() {return rank;}public void setRank(int rank) {this.rank = rank;}public String toString() {return App.SUITS[suit]+""+App.RANKS[rank];}public int compareTo(Object otherCard) {Card other = (Card)otherCard;return this.rank-other.getRank();}
}
package Game;
//工具类public class App {//存放花色public static final String[] SUITS= {"♠","♥","♣","♦"};public static final String[] RANKS= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};//红桃public static final int HEART = 0;//黑桃public static final int SPADE = 1;//梅花public static final int CLUB = 2;//方块public static final int DIAMOND = 3;//点数public static final int  TWO = 0;public static final int  THREE = 1;public static final int  FOUR = 2;public static final int  FIVE = 3;public static final int  SIX = 4;public static final int  SEVEN = 5;public static final int  EIGHT = 6;public static final int  NINE = 7;public static final int  TEN = 8;public static final int  JACK = 9;public static final int  QUEEN = 10;public static final int  KING = 11;public static final int  ACE = 12;
}
package Game;import java.util.List;
import java.util.ArrayList;/** 玩家类* */public class Player {//名字private String name;//手牌,不清楚数量,用集合private List<Card> cards = new ArrayList<Card>();public Player(String name) {super();this.name = name;}public Player() {super();}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Card> getCards() {return cards;}public void setCards(List<Card> cards) {this.cards = cards;}@Overridepublic String toString() {return name+":"+cards;}}
package Game;
import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;public class MainTest {//扑克牌放集合中static List<Card> poker;//玩家集合static List<Player>players;static int money1=100,money2=100;//筹码,也可用线程,这里嫌麻烦没用static int max_suit1=1,max_rank1=1,max_suit2=1,max_rank2=1,max_data1=1,max_data2=1;//分别设值,求相同花色的最大值(同一颜色最多有几张)和相同大小的最多有几张static int summary_suit=1,summary_rank=1;//设中间值,和最大值比较并更新public MainTest()throws Exception{User u =new User();u.setVisible(true);}class User extends JFrame{JButton btn1,btn2,btn3;//开始、下注、弃牌JTextField text1,text2,text_user,text_show;JLabel lbl1,lbl2,lbl_user,lbl_show,lbl;int Jackpot;//奖池public User() {this.setTitle("胖虎和小夫的德州扑克");this.setBounds(200,200,600,700);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLayout(new GridLayout(6,1));lbl = new JLabel("每次20筹码,弃牌10筹码,加注可加一次,10筹码");lbl1 = new JLabel("卢本伟的筹码");lbl2 = new JLabel("PDD的筹码");lbl_user = new JLabel("卢本伟的底牌:");lbl_show = new JLabel("公牌:");text1 = new JTextField(""+money1);text2 = new JTextField(""+money2);text_user = new JTextField(""); text_show = new JTextField("");btn1 = new JButton("开始");btn2 = new JButton("比牌");btn3 = new JButton("弃牌");btn1.addActionListener(new ActionListener(){  //添加监听器,单击开始按钮后产生事件,洗牌并发牌,理牌public void actionPerformed(ActionEvent e){//清零text_show.setText("");text_user.setText("");//初始化玩家initPlayer();//生成扑克牌poker = createPoker();//洗牌,shuffle函数打乱集合的顺序Collections.shuffle(poker);//发牌deal();//理牌sort();
//                  for(Player p:players) {
//                      System.out.println(p);
//                  }text_show.setText(""+poker.get(0)+poker.get(1)+poker.get(2)+poker.get(3)+poker.get(4));Player p = players.get(0);text_user.setText(""+p);}});btn2.addActionListener(new ActionListener(){  //添加监听器,进行比较大小,并相应加减筹码public void actionPerformed(ActionEvent e){//先把5张底牌加到每个人的牌底下,让每个人有7张牌,然后排序,最后通过比较确定大小summary();sort();if(compare() == 1) {money1+=20;money2-=20;text1.setText(""+money1);text2.setText(""+money2);}else {money1-=20;money2+=20;text1.setText(""+money1);text2.setText(""+money2);}if(money1 <= 0) {JOptionPane.showMessageDialog(null, "光屁股了,别玩了, 回家做作业去吧!", null, JOptionPane.PLAIN_MESSAGE);System.exit(0);}else if(money2 <= 0) {JOptionPane.showMessageDialog(null, "你们可能不知道只用20万赢到578万是什么概念\r\n" + "\r\n" + "我们一般只会用两个字来形容这种人:土块!!", null, JOptionPane.PLAIN_MESSAGE);System.exit(0);}}});btn3.addActionListener(new ActionListener(){  //添加监听器,直接弃牌认输,少扣筹码public void actionPerformed(ActionEvent e){money1-=10;money2+=10;text1.setText(""+money1);text2.setText(""+money2);if(money1 == 0) {JOptionPane.showMessageDialog(null, "光屁股了,别玩了, 回家做作业去吧!", null, JOptionPane.PLAIN_MESSAGE);System.exit(0);}}});add(lbl1);add(text1);add(lbl2);add(text2);add(lbl_show);add(text_show);add(lbl_user);add(text_user);add(btn1);add(btn2);add(btn3);add(lbl);}}public static void main(String [] args) throws Exception {//System.out.println(poker);//展示手牌//show();MainTest test=new MainTest();}//把底牌也放进人物的牌组中private static void summary() {int i;Player lbw = players.get(0);Player pdd = players.get(1);List<Card> cards1 = lbw.getCards();List<Card> cards2 = pdd.getCards();for(i=0; i<5; i++) {cards1.add(poker.get(i));cards2.add(poker.get(i));}}//进行比较并输出结果private int compare() {Player lbw = players.get(0);Player pdd = players.get(1);List<Card> cards1 = lbw.getCards();List<Card> cards2 = pdd.getCards();max_suit1=1;max_rank1=1;//分别设值,求相同花色的最大值(同一颜色最多有几张)和相同大小的最多有几张summary_suit=1;summary_rank=1;//设中间值,和最大值比较并更新max_data1=1;max_data2=1;//记录相同情况下谁更大//审阅检查cards1for(int i=0; i<cards1.size()-1; i++) {if(cards1.get(i).getSuit() == cards1.get(i+1).getSuit()) {summary_suit+=1;}else {if(summary_suit > max_suit1) {max_suit1 = summary_suit;}}if(cards1.get(i).getRank() == cards1.get(i+1).getRank()) {summary_rank+=1;}else {if(summary_rank > max_rank1) {max_rank1 = summary_rank;max_data1 = cards1.get(i+1).getRank();}}}summary_suit=1;summary_rank=1;//设中间值值,和最大值比较并更新//审阅检查cards2for(int i=0; i<cards2.size()-1; i++) {if(cards2.get(i).getSuit() == cards2.get(i+1).getSuit()) {summary_suit+=1;}else {if(summary_suit > max_suit2) {max_suit2 = summary_suit;}}if(cards2.get(i).getRank() == cards2.get(i+1).getRank()) {summary_rank+=1;}else {if(summary_rank >= max_rank2) {max_rank2 = summary_rank;max_data2 = cards2.get(i+1).getRank();}}}//大小规则:皇家同花顺>同花顺>炸弹>俘虏(3+2)>同花>顺子>三条>一对>高牌if(max_rank1 == 4){JOptionPane.showMessageDialog(null, "卢本伟牛逼!", null, JOptionPane.PLAIN_MESSAGE);return 1;}else if(max_rank2 == 4) {JOptionPane.showMessageDialog(null, "干尼玛的杀破狼!干尼玛超人战士!日尼玛威猛先生!", null, JOptionPane.PLAIN_MESSAGE);return 2;}else if(max_suit1>=5) {JOptionPane.showMessageDialog(null, "从现在开始这里叫卢本伟广场!", null, JOptionPane.PLAIN_MESSAGE);return 1;}else if(max_suit2>=5) {JOptionPane.showMessageDialog(null, "跟我刘某玩操作!!", null, JOptionPane.PLAIN_MESSAGE);return 2;}else if(max_rank1 == 3 && max_rank2<3) {JOptionPane.showMessageDialog(null, "当年,陈刀仔用20块赢到3700万,我卢本伟用20万赢到500万不是问题!", null, JOptionPane.PLAIN_MESSAGE);return 1;}else if(max_rank2 == 3 && max_rank1<3) {JOptionPane.showMessageDialog(null, "皮皮虾,我们走~!", null, JOptionPane.PLAIN_MESSAGE);return 2;}else if(max_rank1 == 2 && max_rank2<2) {JOptionPane.showMessageDialog(null, "给阿姨倒一杯卡布奇诺~", null, JOptionPane.PLAIN_MESSAGE);return 1;}else if(max_rank2 == 2 && max_rank1<2) {JOptionPane.showMessageDialog(null, "好险好险,骚猪我依然发育起来了。", null, JOptionPane.PLAIN_MESSAGE);return 2;}else if(max_rank2 == max_rank1){if(max_data1 >= max_data1) {JOptionPane.showMessageDialog(null, "2张牌你能秒我?你能秒杀我?2张牌你能秒杀我,我当场,把电脑屏幕吃掉!", null, JOptionPane.PLAIN_MESSAGE);return 1;}else {JOptionPane.showMessageDialog(null, "芽儿呦,差点裂开了,太瓦了!", null, JOptionPane.PLAIN_MESSAGE);return 2;}}return 1;}private static void sort() {for(Player p:players) {List<Card> cards = p.getCards();Collections.sort(cards);}}private static void show() {for(Player p:players) {System.out.println(p);}}//发牌private static void deal() {//3张公牌,令i=5就是从第6张牌开始发给玩家和NPC,前五张作为公牌int i=5;for(int j=0; j<2; j++) {for(int k=0; k<players.size(); k++) {Player player = players.get(k);List<Card> cards = player.getCards();cards.add(poker.get(i));i++;}}}//初始化玩家private static void initPlayer() {//创建players = new ArrayList<Player>();//添加玩家players.add(new Player("卢本伟"));players.add(new Player("PDD"));}/**生成扑克牌*public static final String[] SUITS= {"♠","♥","♣","♦"};*public static final String[] RANKS= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};* @return*/private static List<Card> createPoker(){List<Card> poker = new ArrayList<Card>();for(int i=0; i<App.SUITS.length; i++) {for(int j=0; j<App.RANKS.length;j++) {//System.out.println(App.SUITS[i]+""+App.RANKS[j]);//根据花色点数创建扑克牌Card card = new Card(i,j);poker.add(card);}}return poker;}
}

Java小游戏 —— 德州扑克相关推荐

  1. 各种经典java小游戏_Java是这个世界上最好的语言!

    为什么? 请看TIOBE最新发布的编程语言排行榜: TIOBE开发语言排行榜每月更新一次,其结果可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的. ...

  2. Java小游戏:模仿微信群发红包

    Java小游戏:模仿微信群发红包 微信群主发普通红包,普通红包规则: 群主的一笔金额,从群主余额中扣除,平均分成n等分,让群员领取. 成员领取红包后,保存到余额中. 请根据规则,完成案例中所有类的定义 ...

  3. 《Java小游戏实现》:坦克大战

    <Java小游戏实现>:坦克大战 前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用. 这个游戏的完成,我们也是分步完成,逐步累加,一个一个 ...

  4. java小游戏-超级玛丽

    java小游戏-java小游戏-超级玛丽 1 创建窗口 2 创建并完成常量类 3 创建背景类 4 绘制背景类 5 创建障碍物 6 第一关的设计 7 第二关的设计 8 第三关的设计 9 创建马里奥类 1 ...

  5. java小游戏-java小游戏-大鱼吃小鱼

    java小游戏-java小游戏-大鱼吃小鱼 1 创建窗口 2 添加背景图 3 启动封面 4 启动页面的点击事件 5 游戏开始时的背景添加 6 双缓存解决闪屏问题 7 地方第一条小鱼的添加 8 敌方左方 ...

  6. java小游戏之捕鱼达人,学了java,妈妈不再担心我去网吧游戏厅了!

    Java小项目捕鱼达人 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 捕鱼达人这款游戏,相信和我年纪相仿的朋友,肯定很熟悉.在当时半智能手机和智能手机刚刚出现 ...

  7. java小游戏——飞翔的小鸟(java初学作品)

    注:学习了java基础后,做出来的一个小作品,可以用来巩固学习 概述: 飞翔的小鸟能够作为Java基础的收官之作,包涵了Java很多的基础知识,在学习完Java基础后,尝试编写一些东西,能够起到很好的 ...

  8. java小游戏------Flappy Bird(飞翔的小鸟含源码)

    前言:本小游戏可作为java入门阶段收尾创作. 需:掌握面向对象的使用,了解多线程和异常处理等知识. 如上图所示:我们需要绘制背景,小鸟,障碍物,当然也包括游戏开始界面以及死亡界面. 一:思路解析: ...

  9. java小游戏-飞翔的小鸟

    java小游戏-ava小游戏-飞翔的小鸟 1 游戏窗口的显示 2 游戏背景添加 3 背景颜色的添加 4 屏幕中绘制小鸟 5 实现小鸟上下移动 6 解决屏幕闪烁问题 7 云彩的添加与移动 8 云彩的自动 ...

最新文章

  1. javascript推荐书籍
  2. python教程app下载地址_python教程
  3. Algs4-2.1.37部分有序
  4. sklearn数据集操作API
  5. python中json模块读写数据
  6. python多个装饰器执行顺序_Python面试题之多个装饰器执行顺序
  7. 【牛客 - 181B】送分题(另类求解a+b,二分)
  8. uva 10635 Prince and Princess(LCS成问题LIS问题O(nlogn))
  9. liunx下mysql远程连接_Linux下mysql实现远程连接
  10. Android启动的init进程
  11. Java入门——(5)Java API
  12. 产品经理面试题目转载
  13. 2012第二届GIS制图大赛——赛前培训资料(上篇)
  14. 项目上拿来的 有演示 类似kindlePush微信小程序 内容值得
  15. Python爬虫项目:爬虫爬取正则分析糗百数据
  16. 解决:蓝奏云下载链接没法打开问题
  17. 如何利用魔棒工具抠图_ps魔棒工具怎么用?抠图常用工具(二)
  18. excel 取消合并单元格
  19. 最近招聘和面试的感想
  20. 【FPGA】学习的32个开源网站

热门文章

  1. Golang之new和make
  2. Hibernate总结1
  3. mysql 修改字符集
  4. printf的使用和test的使用
  5. 关于重载函数的一些学习
  6. djandgo model id
  7. C# Image 、 byte[] 、Bitmap之间的转化
  8. 编程方法学10:私有变量的重要性
  9. Python学习笔记:I/O编程
  10. 现代谱估计:Blackman-Tukey 相关图