一个简单的扑克牌小游戏

来源:互联网 发布:软件项目经理个人总结 编辑:程序博客网 时间:2024/04/28 15:42

这是我在慕课学习Java的一个小游戏作业

游戏规则如下:

一、创建一副扑克牌 

包括四种花色: 黑桃、红桃、梅花、方片 

十三种点数:2——10,J、Q、K、A,不考虑大小王 

二、创建两名玩家 

玩家有ID、姓名、手牌等属性,手牌为扑克牌的集合

三、洗牌

将之前创建的“一副扑克牌”打乱顺序

四、发牌

将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张

五、游戏

比较两名玩家手中的扑克牌,规则为:取两人各自手中点数最大的牌进行比较,点数大的赢;若两人各自的点数最大的牌相等,则再按花色(黑红梅方)比较。


代码如下吐舌头

package imooc;/** * 扑克牌 */public class Cards {/** * suits->花色 * figures->点数 */public String suits;public String figures;//构造器public Cards(String suits, String figures) {this.suits = suits;this.figures = figures;}}

package imooc;import java.util.ArrayList;import java.util.List;/** * 玩家 *创建List属性的cards用于存储玩家的牌 */public class Players {public int ID;public String name;public List<Cards> cards;public Players(){this.cards=new ArrayList<Cards>();}}

package imooc;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Test {Scanner input=new Scanner(System.in);public List<Cards> allCards;//存储所有的牌//String数组suits来存储牌的花色String[] suits={"方块","梅花","红心","黑桃"};//String数组figures存储牌的所有点数String[] figures={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};//构造函数public Test(){this.allCards=new ArrayList<Cards>();}/** * 创建扑克牌 */public void creatCards(){for(int i=0;i<4;i++){for(int j=0;j<13;j++){allCards.add(new Cards(suits[i],figures[j]));}}}/** * 输出扑克牌 */public void showCards(){int num=0;for(int i=0;i<52;i++){System.out.print(allCards.get(i).suits+allCards.get(i).figures+"  ");num++;if(num%13==0)//输出一行13张牌换行System.out.println();}}/** * 洗牌 * 遍历一个元素后 * 随机产生一个0到52的数与之交换 */public void shuffle(){for(int i=0;i<52;i++){int x=(int)(Math.random()*52);Cards temp=allCards.get(x);allCards.set(i, temp);allCards.set(x, allCards.get(i));}}/** * 创建两个玩家并发牌决斗 */public void creatPlayers(){Players p1=new Players();Players p2=new Players();//创建第一个玩家while(true){try{System.out.println("请输入第一个玩家账号(数字!):");String id=input.next();p1.ID=Integer.parseInt(id);break;}catch(NumberFormatException e){//当输入的数据不是整数类型时,捕捉异常System.out.println("请输入正确的账号!");}}System.out.println("请输入玩家名称:");p1.name=input.next();//创建第二个玩家while(true){try{System.out.println("请输入第二个玩家账号(数字!):");String id=input.next();p2.ID=Integer.parseInt(id);break;}catch(NumberFormatException e){System.out.println("请输入正确的账号!");}}System.out.println("请输入第二个玩家的名称:");p2.name=input.next();System.out.println("\n玩家创建成功!\n ");/** * 发牌 */System.out.println("-------------发牌------------");p1.cards.add(allCards.get(0));p2.cards.add(allCards.get(1));p1.cards.add(allCards.get(2));p2.cards.add(allCards.get(3));System.out.println("发牌结束\n");//终极PK!fight(p1,p2);}/** * 玩家PK */public void fight(Players p1,Players p2){System.out.println("开始PK啦--");//先选出玩家1和玩家2各自的最大牌,然后比较各自的最大牌谁最大,大的就赢了int a=compare(p1.cards.get(0), p1.cards.get(1));int b=compare(p2.cards.get(0), p2.cards.get(1));int c=0;//c是用来存储比较玩家各自最大牌比较后的数值if(a==1){if(b==1)c=compare(p1.cards.get(0), p2.cards.get(0));elsec=compare(p1.cards.get(0), p2.cards.get(1));}else{if(b==1)c=compare(p1.cards.get(1), p2.cards.get(0));elsec=compare(p1.cards.get(1), p2.cards.get(1));}//此时玩家1和玩家2决斗完毕,胜利结果掌握在c的手里if(c==1){System.out.println("恭喜"+p1.name+"赢得冠军!");}else{System.out.println("恭喜"+p2.name+"赢得冠军!");}System.out.println();//亮出双方的牌showPlayer(p1);System.out.println();showPlayer(p2);}/** * 对牌进行比大小 * 第一个牌大则返回1,否则返回-1 */public int compare(Cards fir,Cards sec){int fir_suit=0,sec_suit=0,fir_figure=0,sec_figure=0;for(int i=0;i<4;i++){if(fir.suits.equals(suits[i]))fir_suit=i;if(sec.suits.equals(suits[i]))sec_suit=i;}for(int j=0;j<13;j++){if(fir.figures.equals(figures[j]))fir_figure=j;if(sec.figures.equals(figures[j]))sec_figure=j;}//先比较点数,大者赢if(fir_figure>sec_figure)return 1;if(fir_figure<sec_figure)return -1;else{//如果点数相同则比较花色if(fir_suit>sec_suit)return 1;elsereturn -1;}}/** * 显示玩家牌 */public void showPlayer(Players p){System.out.println("玩家"+p.name+"的牌:");System.out.println(p.cards.get(0).suits+"  "+p.cards.get(0).figures);System.out.println(p.cards.get(1).suits+"  "+p.cards.get(1).figures);}public static void main(String[] args){Test t=new Test();System.out.println("-------------创建扑克牌------------");System.out.println("......");t.creatCards();System.out.println("-------------创建扑克牌成功!------------");System.out.println("\n创建的牌如下:");t.showCards();System.out.println("\n-------------开始洗牌------------");System.out.println("......");t.shuffle();System.out.println("-------------洗牌成功!------------");System.out.println("\n洗完的牌如下:");t.showCards();System.out.println("\n-------------创建玩家并发牌------------");t.creatPlayers();}}
测试如下





0 0
原创粉丝点击