java 把一副扑克牌打乱_Java第三季-7.1-简易扑克牌游戏作业

这是一个使用Java编写的简易扑克牌游戏,包括创建一副扑克牌、玩家类、扑克类和游戏流程。游戏规则涉及洗牌、发牌和比较玩家手牌,通过比较点数和花色决定胜负。代码中创建了Player、Poker和ListPoker类,实现了扑克牌的创建、洗牌、发牌及游戏逻辑。
摘要由CSDN通过智能技术生成

游戏规则:

/* 一、创建一副扑克牌

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

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

二、创建两名玩家

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

三、洗牌

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

四、发牌

将洗牌之后的扑克牌集合,从第一张开始,

发给两名玩家,按照一人一张方式,每人发两张

五、游戏

比较两名玩家手中的扑克牌,规则为:

去两个人各自手中点数最大的牌进行比较,点数大的赢;

若两人各自的点数最大的牌相等,则再按花色比较。

*/

代码主要有三个类,玩家类Player,扑克类Poker,游戏流程类ListPoker

玩家类Player:

import java.util.ArrayList;

import java.util.List;

public class Player {

public String id;

public String name;

public List shoupai;

public Player(String id,String name) {

this.id=id;

this.name=name;

this.shoupai=new ArrayList();

}

}

扑克类Poker:

public class Poker implements Comparable{

public String flower;

public String num;

public Poker(String fl,String num) {

this.flower=fl;

this.num=num;

}

public Poker(){

}

@Override

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

public int compareTo(Poker o) {

Integer a=0,b=0;

if(this.flower==o.flower){

return this.num.compareTo(o.num);

}

else{

switch(this.flower)

{

case "黑桃": a=4;

break;

case "红桃": a=3;

break;

case "梅花": a=2;

break;

case "方片": a=3;

break;

default: a=0;

break;

}

switch(o.flower)

{

case "黑桃": b=4;

break;

case "红桃": b=3;

break;

case "梅花": b=2;

break;

case "方片": b=3;

break;

default: b=0;

break;

}

return a.compareTo(b);

}

}

}

游戏流程类ListPoker:

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

public class ListPoker {

public List PairPorker;

private Scanner console;

public List Playerlist;

public Player p1;

public Player p2;

public ListPoker() {

this.PairPorker=new ArrayList();

this.Playerlist=new ArrayList();

}

//创建扑克牌

public void MakePoker(){

System.out.println("-------------------创建扑克牌-------------------------");

for(int i=2;i<11;i++){

PairPorker.add(new Poker("黑桃",i+""));

PairPorker.add(new Poker("红桃",i+""));

PairPorker.add(new Poker("梅花",i+""));

PairPorker.add(new Poker("方片",i+""));

}

PairPorker.add(new Poker("黑桃","J"));

PairPorker.add(new Poker("红桃","J"));

PairPorker.add(new Poker("梅花","J"));

PairPorker.add(new Poker("方片","J"));

PairPorker.add(new Poker("黑桃","Q"));

PairPorker.add(new Poker("红桃","Q"));

PairPorker.add(new Poker("梅花","Q"));

PairPorker.add(new Poker("方片","Q"));

PairPorker.add(new Poker("黑桃","K"));

PairPorker.add(new Poker("红桃","K"));

PairPorker.add(new Poker("梅花","K"));

PairPorker.add(new Poker("方片","K"));

System.out.println("------------------扑克牌创建成功-----------------------");

System.out.print("为:[");

for (Poker pk: PairPorker) {

System.out.print(pk.flower+pk.num+" ");

}

System.out.print("]\n");

}

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

public void Shuffle(){

List pk=new ArrayList();

Poker ck=new Poker();

Random random=new Random();

Integer length=PairPorker.size();

System.out.println("--------------------开始洗牌-------------------------");

for(int i=0;i

{

do{

ck=PairPorker.get(random.nextInt(length));

}while(pk.contains(ck));

pk.add(ck);

}

PairPorker=pk;

System.out.println("--------------------洗牌结束-------------------------");

}

//判断输入id是否合理,处理异常

private int scanf() throws Exception{

try {

int inner=console.nextInt();

return inner;

} catch (Exception e) {

console=new Scanner(System.in);

throw new Exception("id输入不合理,请重新输入!");

}

}

public void Makeplayer(){

System.out.println("----------------------创建玩家-------------------------");

for (int i = 1; i <3; i++) {

System.out.println("请输入第"+i+"位玩家的ID和姓名:");

System.out.println("输入ID:");

console=new Scanner(System.in);

int ID=0;

try {

ID=scanf();

} catch (Exception e) {

System.out.println(e.getMessage());

i--;

continue;

}

System.out.println("输入姓名:");

String name1;

name1=console.next();

Playerlist.add(new Player(ID+"", name1));

}

p1=Playerlist.get(0);

p2=Playerlist.get(1);

console.close();

}

public void Fapai(){

System.out.println("-----------------开始发牌----------------------");

for(int i=0;i<2;i++)

{

Playerlist.get(0).shoupai.add(PairPorker.get(2*i));

System.out.println("----玩家:"+p1.name+"-拿牌");

Playerlist.get(1).shoupai.add(PairPorker.get(2*i+1));

System.out.println("----玩家:"+p2.name+"-拿牌");

}

System.out.println("-----------------发牌结束----------------------");

}

public void PlayStart(){

System.out.println("-----------------开始游戏----------------------");

Collections.sort(p1.shoupai);

Collections.sort(p2.shoupai);

Poker pkk1=p1.shoupai.get(1);

Poker pkk2=p2.shoupai.get(1);

System.out.println("玩家:"+p1.name+"最大的手牌为:"+pkk1.flower+pkk1.num);

System.out.println("玩家:"+p2.name+"最大的手牌为:"+pkk2.flower+pkk1.num);

if(pkk1.compareTo(pkk2)>0){

System.out.println("-----------玩家:"+p1.name+"获胜--------------");

}

else{

System.out.println("-----------玩家:"+p2.name+"获胜--------------");

}

System.out.println("玩家各自的手牌为:");

System.out.print(p1.name+":[");

for (Poker pk1: p1.shoupai) {

System.out.print(pk1.flower+pk1.num+" ");

}

System.out.print("]");

System.out.print("\n"+p2.name+":[");

for (Poker pk1: p2.shoupai) {

System.out.print(pk1.flower+pk1.num+" ");

}

System.out.print("]\n");

}

public static void main(String[] args) {

ListPoker lp=new ListPoker();

lp.MakePoker();

lp.Shuffle();

lp.Makeplayer();

lp.Fapai();

lp.PlayStart();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值