Java:扑克牌发牌程序(除大小王)

几个语法上容易出现的错误:

1:定义内部类Poke类并在主函数中调用时,如果采用以下方法会产生报错(若是外部类则不会出现这种错误):

 b5f7937468644531bbf07f6eca058f08.png

解决方法:

6e4845be321048499d419ba7431a50a6.png

 注:Class_poke是最大的类的名称

2:主函数要加static否则无法以Java程序的形式运行

3:在进行花色比较的时候String类型无法直接比较大小,因此需要采用String.compareTo函数

4:Java中括号中一定是真值表达式即bool值

import java.util.Random;
public class Class_poke {
	class Poke{
		int name;
	    String color;
		public void setPoke(int n){
			int Color=n%4;
			int Name=n/4;
			name=Name+2;
			switch(Color) {
			case 0:color="方片♦";break;
			case 1:color="梅花♣";break;
			case 2:color="黑桃♠";break;
			case 3:color="红桃♥";break;
			}
		}
	}
	public static void main(String[] args) {
		Class_poke p=new Class_poke();
		Poke pok[]=new Poke[52];
		for(int i=0;i<52;i++) {
			pok[i]=p.new Poke();
		}
		int poke[]=new int[52];
		for(int i=0;i<52;i++) {
			poke[i]=1;
		}
		Random random=new Random();
		for(int i=0;i<52;i++) {
			int j=0;
			do {
				j=random.nextInt(52);
				if(poke[j]==1)break;
			}while(true);
			Poke po=p.new Poke();
			po.setPoke(j);
			poke[j]--;
			pok[i].color=po.color;
			pok[i].name=po.name;
		}
		for(int i=0;i<4;i++) {
			for(int j=0+13*i;j<13+13*i;j++) {
				for(int k=0+13*i;k<13+13*i-1;k++) {
					if(pok[k].name>pok[k+1].name) {
						int name;String color;
						name=pok[k].name;
						color=pok[k].color;
						pok[k].name=pok[k+1].name;
						pok[k].color=pok[k+1].color;
						pok[k+1].name=name;
						pok[k+1].color=color;
					}
					else if(pok[k].name==pok[k+1].name&&pok[k].color.compareTo(pok[k+1].color)>0) {
						int name;String color;
						name=pok[k].name;
						color=pok[k].color;
						pok[k].name=pok[k+1].name;
						pok[k].color=pok[k+1].color;
						pok[k+1].name=name;
						pok[k+1].color=color;
					}
				}
			}
		}
		for(int i=0;i<52;i++) {
			if(i%13==0)System.out.print("Player"+(i/13+1)+":   ");
			System.out.print(pok[i].color+":");
			switch(pok[i].name) {
			case 11:System.out.print("J  ");break;
			case 12:System.out.print("Q  ");break;
			case 13:System.out.print("K  ");break;
			case 14:System.out.print("A  ");break;
			default:System.out.print(pok[i].name+"  ");break;
			}
			if((i+1)%13==0)System.out.println();
		}
		return;
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
* Game 类 * 功能:整个游戏:开始游戏 -> 初始牌 -> 洗牌 -> 发牌 -> 排序 -> 比较大小 -> 游戏结果 * 游戏说明: * 1.创建一副扑克牌,不考虑大小 * 2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合 * 3.洗牌,将之前创建的扑克牌顺序打乱 * 4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张 * 5.开始游戏,比大小大小相同比花色 * * PockerCard 类 * 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void refreshCard() //洗牌 从第一支牌开始从所有牌中随机取一只与之交换 * public void addPeopleInfo() //添加玩家的基本信息 * public void dealCard() //发牌 从开始分别给A B发牌 每人两支 * public void showPeopleCard() //显示两个角色自己获得的牌 * public void sortCard() //将每个角色自己的牌按从小到大排序 * public void comparePeopleCard() //比较角色的牌 * * SingleCard类 实现Comparable接口 * 功能:产生单支牌 * 属性:ID、color、keyID数组、keyColor数组 * 方法:public SingleCard(){} //无参构造函数 * public SingleCard(String ID,String color) //有参构造函数 * @Override public int compareTo(SingleCard o) //比较当前牌与SingleCard o的牌的大小 * * People类 * 功能:产生一个角色 * 属性:ID、Name、和、存储牌的List集合。 * 方法: public People() //初始化存储牌的List集合; *

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淬炼之火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值