为了账号安全,请及时绑定邮箱和手机立即绑定

java基础,请多多指教

标签:
Java

package com.lt.wqkpuke;

/*
主游戏类,主要负责输出交互信息并调用其它方法
*简易扑克牌游戏

  • @wqk
  • */

public class GameMain {

PlayGame pg=new PlayGame();//将PlayGame类作为GameMain类的一个属性,以便实现方法的调用

public static void main(String[] args) {
    System.out.println("--------@扑克游戏开发(by java)--------");
    System.out.println("----------欢迎进入游戏-----------");
    GameMain gm=new GameMain();
    gm.pg.CrePuke();
    gm.pg.CrePlayer();
    gm.pg.CreXipai();
    gm.pg.CreFapai();
    gm.pg.Compare();
    gm.pg.CreShow();

    System.out.println("------------游戏结束------------");

}

}


package com.lt.wqkpuke;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class PlayGame {
String[] Huase={"黑桃","红桃","梅花","方块"};
String[] Pai={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
public Scanner console;
List<Puke> PukeList=new ArrayList<Puke>();
List<Player> PlayerList=new ArrayList<Player>();

public PlayGame(){  //构造器
    console=new Scanner(System.in);
}

/*
 * 创建扑克
 */
public void CrePuke(){
    System.out.println("---------开始创建扑克牌---------");
    for(int i=0;i<4;i++){
        for(int j=0;j<13;j++){
            PukeList.add(new Puke(Huase[i],Pai[j]));
        }
    }
    int n=1;
    for (Puke Puke: PukeList) {
        System.out.print(Puke.Huase+Puke.Pai+" ");
        if(n%13==0){
            System.out.println();
        }
        n++;
    }
    System.out.println("----------创建扑克完毕----------");
}

/*
 * 创建玩家
 */
public void CrePlayer(){
    for(int i=1;i<=2;i++){
        System.out.println("请输入第"+i+"个玩家的ID(整数):");
        int ID=0;
        try{
            ID = Integer.parseInt(console.next());
        }catch(Exception e){
            System.out.println(e.getMessage());
            i--;
            continue;
        }
        for(int j=i;j<=2;j++){
            System.out.println("请输入第"+j+"个玩家的姓名:");
            String Name=console.next();
            if(Name==null){
                System.out.println("你未输入玩家姓名,请重新输入");
                j--;
                continue;
            }else{
                System.out.println("欢迎第"+i+"个玩家"+Name+"加入游戏");
                PlayerList.add(new Player(ID,Name));
                break;
            }
        }           
    }
}

/*
 * 洗牌
 */
public void CreXipai(){
    System.out.println("-----------开始洗牌------------");
    Collections.shuffle(PukeList);
    System.out.println("-----------洗牌结束------------");
} 

/*
 * 发牌
 */
public void CreFapai(){
    for(int i=0;i<2;i++){
        for (Player p : PlayerList) {
            Puke pc=PukeList.get(0);
            p.handCards.add(pc);
            System.out.println("--------玩家:" + p.Name + "-拿牌-------");
            PukeList.remove(0);
        }
    }
}

/*
 * 比较大小
 */
public void Compare(){
    List<Puke> Puke1=new ArrayList<Puke>();
    List<Puke> Puke2=new ArrayList<Puke>();
    Puke1.add(0,PlayerList.get(0).handCards.get(0));
    Puke1.add(1,PlayerList.get(0).handCards.get(0));
    Puke2.add(0,PlayerList.get(1).handCards.get(0));
    Puke2.add(1,PlayerList.get(1).handCards.get(0));
    //调用方法比较大小,先确定玩家各自手牌中较大的一张 
    ComparePuke comparepuke=new ComparePuke();
    Puke a=comparepuke.compareTest(Puke1.get(0), Puke1.get(1));
    Puke b=comparepuke.compareTest(Puke2.get(0), Puke2.get(1));
    int c=comparepuke.compare(a, b);

    if(c>0){//玩家1获胜
        System.out.println("-----本次获胜玩家"+ PlayerList.get(0).Name+ "获胜!------");
    }
    else{//玩家2获胜
        System.out.println("-----本次获胜玩家"+ PlayerList.get(1).Name+ "获胜!--------"); 
        } 
}

/*
 * 展示玩家手牌
 */
public void CreShow(){
    System.out.println("---------开始展示玩家手牌---------");
    for (Player player : PlayerList) {
        System.out.print("玩家"+player.Name+"手牌为:");
        for (Puke puke : player.handCards) {
            System.out.print(puke.Huase+" "+puke.Pai+" ");
        }
        System.out.println();
    }
}

}


package com.lt.wqkpuke;

public class Puke {
public String Huase;
public String Pai;

public Puke(String Huase,String Pai){
    this.Huase=Huase;
    this.Pai=Pai;
}
public Puke(){

}

}


package com.lt.wqkpuke;

import java.util.ArrayList;
import java.util.List;

public class Player {
public int ID;
public String Name;
List<Puke> handCards=new ArrayList<Puke>();

public Player(int ID,String Name){
    this.ID=ID;
    this.Name=Name;

}

}


package com.lt.wqkpuke;

import java.util.Comparator;

public class ComparePuke implements Comparator<Puke> {
String[] Huase={"黑桃","红桃","梅花","方块"};
String[] Pai={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

@Override
public int compare(Puke pk1, Puke pk2) {
    int a=0,b=0,c=0;
    for(int i=0;i<Pai.length;i++){
        if(pk1.Pai==Pai[i]){
            a=i;
        }
        if(pk2.Pai==Pai[i]){
            b=i;
        }
    }
    if(a>b){
        c=1;
    }else if(a<b){
        c=-1;
    }else if(a==b){
        int k1 = 0, k2 = 0; 
        for(int j=0; j<Huase.length; j++){ 
         if(pk1.Huase == Huase[j])
           k1 = j ;
         if(pk2.Huase == Huase[j]) 
           k2 = j ;
         } 
           if(k1 > k2)
             c = -1; 
           else 
             c = 1; 
    }
    return c;
}

 public Puke compareTest(Puke pk3,Puke pk4){//返回大的扑克牌 
        int a = 0, b = 0;
        Puke c = new Puke();
        for(int i=0; i<Pai.length; i++) { 
            if(pk3.Pai == Pai[i])
                a = i; 
            if(pk4.Pai == Pai[i]) 
                b = i; 
            }
        if(a > b) //比较大小
            c = pk3;
        else if(a < b)
            c = pk4; 
        else if(a == b){ //数字相等时 
                int k1 = 0, k2 = 0; 
                for(int j=0; j<Huase.length; j++){ 
                 if(pk3.Huase == Huase[j])
                   k1 = j ;
                 if(pk4.Huase == Huase[j]) 
                   k2 = j ;
                 } 
                   if(k1 > k2)//比较花色
                     c = pk4; 
                   else 
                     c = pk3; 
             } 
            return c;    
    }

}

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消