咚咚K伱
2017-12-01 14:19
java新手,花了半天时间完成的! 简易的扑克牌比较大小! http://www.imooc.com/opus/resource?opus_id=3480
才知道有我的作品这个东西
Card.java
package com.jiang.cards;
//要比较卡牌的大小,所以要添加比较方法
public class Card implements Comparable<Card> {
public String suit;
//花色
public String number;
//点数
Card(String suit, String number){
this.suit=suit;
this.number=number;
}
//展示卡牌信息用
public String toString(){
return suit+number;
}
//实现比较方法
public int compareTo(Card c){
if(this.getNumberNum()==c.getNumberNum())
return this.getSuitNum()-c.getSuitNum();
else return this.getNumberNum()-c.getNumberNum();
}
//获取点数排序
public int getNumberNum(){
String[] numbers={"2","3","4","5","6","7","8","9","10", "J","Q","K","A"};
for(int i=0;i<numbers.length;i++){
if(numbers[i].equals(number))
return i;
}
return -1;
}
//获取花色排序
public int getSuitNum(){
String[] suits={"黑桃","红桃","梅花","方片"};
for(int i=0;i<suits.length;i++){
if(suits[i].equals(suit))
return i;
}
return -1;
}
}
Player.java
package com.jiang.cards;
import java.util.ArrayList;
import java.util.List;
//用户类,为了防止ID重复,重写了equals,这样可以调用contains判断
public class Player {
public String id;
public String name;
public List<Card> cards;
Player(String id, String name){
this.id=id; this.name=name;
cards=new ArrayList<Card>();
}
public void setCards(Card c){
cards.add(c);
}
//重写toString只是为了写程序的时候测试用着方便
public String toString(){
return "Name:"+name;
}
public boolean equals(Object o){
if(this==o)
return true;
if(o==null)
return false;
if(!(o instanceof Player))
return false;
Player p=(Player)o;
return id.equals(p.id);
}
}
Game.java
package com.jiang.cards;
import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Game {
private List<Card> cards;
private List<Player> players;
Game(){
cards=new ArrayList<Card>();
players=new ArrayList<Player>();
}
//初始化卡牌
public void setCards(){
System.out.println("-----------创建扑克牌--------------");
String[] suits={"黑桃","红桃","梅花","方片"};//花色
String[] numbers={"2","3","4","5","6","7","8","9","10", "J","Q","K","A"};//点数
for(int i=0;i<suits.length;i++){
for(int j=0;j<numbers.length;j++){
cards.add(new Card(suits[i],numbers[j]));
}
}
System.out.println("-----------扑克牌创建成功!--------------");
System.out.println(cards);
}
//洗牌,第一个对象插入随机位置
public void shuffle(){
System.out.println("-----------开始洗牌!--------------");
Random random=new Random();
for(int i=0;i<cards.size();i++){
//洗牌次数我随便设的,没有科学依据
Card c=cards.get(0);
//获取第一个元素
cards.add(random.nextInt(cards.size()),c);
//将第一个元素再次添加在任意位置
cards.remove(0);
//移除第一个元素
}
System.out.println("-----------洗牌结束!--------------");
//System.out.println(cards); }
}
//初始化玩家2人
public void setPlayers(){
Scanner in=new Scanner(System.in);
int i=1;
do{
System.out.println("请输入第"+i+"位玩家的ID和姓名:");
while(true){
try{
System.out.println("请输入ID:");
int id=in.nextInt();
if(players.contains(new Player(id+"",null)))
throw new Exception();
//ID已存在,抛出异常 System.out.println("请输入玩家姓名:");
System.out.println("请输入姓名:");
String name=in.next();
players.add(new Player(id+"",name));
break;
//新建信息成功,跳出循环
}catch(InputMismatchException e){
in=new Scanner(System.in);
//这个必须有,不然就是死循环了
System.out.println("请输入整数类型的ID!");
}catch(Exception e){
System.out.println("该ID已存在,请重新输入!");
}
}
i++;
}while(i<3);
for(int j=0;j<players.size();j++){
System.out.println("---欢迎玩家:"+players.get(j).name);
}
}
//发牌
public void dealCards(){
System.out.println("-----------开始发牌!--------------");
for(int i=0;i<2;i++){//每人发牌数i
for(int j=0;j<players.size();j++){//玩家数j
System.out.println("---玩家"+players.get(j).name+"-拿牌");
players.get(j).setCards(cards.get(0)); cards.remove(0);
}
}
System.out.println("-----------发牌结束!--------------");
}
//比较卡牌大小
public void playCards(){
System.out.println("-----------游戏开始!--------------");
for(int i=0;i<players.size();i++){
Collections.sort(players.get(i).cards);
System.out.println("玩家:"+players.get(i).name+"最大的手牌为"+players.get(i).cards.get(1));
int judge=players.get(0).cards.get(1).compareTo(players.get(1).cards.get(1));
String name=judge>0 ? players.get(0).name:players.get(1).name;
//条件语句,相当于if...else
System.out.println("-----------玩家:"+name+"获胜!--------------");
}
}
//展示手牌
public void showCards(){
System.out.println("-----------玩家手牌展示--------------");
System.out.println(players.get(0)+""+players.get(0).cards);
System.out.println(players.get(1)+""+players.get(1).cards);
}
}
PlayCard.java
package com.jiang.cards;
public class PlayCard {
public static void main(String[] args) {
Game gm=new Game();
gm.setCards();//获取卡牌
gm.shuffle();//洗牌
gm.setPlayers();//获取用户
gm.dealCards();//发牌
gm.playCards();//开始游戏
gm.showCards();//展示卡牌
}
}Java入门第三季
409775 学习 · 4546 问题
相似问题