當前位置:編程學習大全網 - 編程語言 - 跪求高手幫忙寫個java程序

跪求高手幫忙寫個java程序

有意思,我就給妳設計下

import java.util.*;

import java.io.*;

class Poker{

private String color;

private String value;

private int inner;

/*inner值是:2-14*/

public Poker(String color,int inner){

this.color=color;

this.inner=inner;

if(inner==11) value="J";

else if(inner==12) value="Q";

else if(inner==13) value="K";

else if(inner==14) value="A";

else value=String.valueOf(inner+1);

this.value=value;

}

public String getColor(){

return this.color;

}

public String getValue(){

return this.value;

}

public int getInner(){

return this.inner;

}

public String getPoker(){

return this.color+this.value;

}

}

class Game{

private Poker[] pokers=new Poker[52];

private Poker[] random;

private String type;

private int level;

public Game(){

for(int i=0;i<pokers.length;i++){

if(i/13==0) {

pokers[i]=new Poker("紅桃",i%13+2);

}

if(i/13==1) {

pokers[i]=new Poker("黑桃",i%13+2);

}

if(i/13==2) {

pokers[i]=new Poker("方片",i%13+2);

}

if(i/13==3) {

pokers[i]=new Poker("櫻花",i%13+2);

}

}

}

public void print(){

for(int i=0;i<pokers.length;i++){

System.out.println(pokers[i].getPoker());

}

}

public void printSelect(){

System.out.println("-------"+type+"--------");

for(int i=0;i<random.length;i++){

System.out.println(random[i].getPoker());

}

System.out.println("-------------------------------");

}

public void randomSelect(int num,boolean ai){

Set<Integer> set=new HashSet<Integer>();

if(!ai){

Scanner s=new Scanner(System.in);

for(int i=0;i<num;i++){

System.out.println("請輸入牌序號(1-52)[當前第"+(i+1)+"張,***"+num+"張]:");

int tmp=s.nextInt();

if(tmp>52 || tmp<1){

System.out.println("錯誤的序列!");

i--;

continue;

}

if(set.contains(tmp)){

System.out.println("該撲克牌已選取!");

i--;

continue;

}

set.add(i-1);

}

s.close();

}

else{

for(int i=0;i<num;i++){

int tmp=(int)(Math.random()*52);

if(set.contains(tmp)){

i--;

continue;

}

else set.add(i);

}

}

random=new Poker[num];

int m=0;

for(int option:set){

random[m++]=pokers[option];

}

}

public void ruffle(){

for(int i=0;i<52;i++){

int a=(int)(Math.random()*52);

int b=(int)(Math.random()*52);

Poker temp;

temp=pokers[a];

pokers[a]=pokers[b];

pokers[b]=temp;

}

}

//檢查是否同花

public boolean isSameColor(){

Set<String> set=new HashSet<String>();

for(int i=0;i<random.length;i++)

set.add(random[i].getColor());

if(set.size()==1) return true;

else return false;

}

//檢查是否順子

public boolean isStraight(){

int[] list=new int[random.length];

for(int i=0;i<random.length;i++)

list[i]=random[i].getInner();

Arrays.sort(list);

for(int i=1;i<random.length;i++)

if(list[i-1]!=list[i]-1) return false;

return true;

}

//檢查同花順

public boolean isSameColorAndStraight(){

if(isSameColor() && isStraight()) return true;

else return false;

}

//最大同花順A K Q J 10

public boolean isMax(){

if(isSameColorAndStraight()){

int[] list=new int[random.length];

for(int i=0;i<random.length;i++)

list[i]=random[i].getInner();

Arrays.sort(list);

if(list[0]==10 && list[4]==14) return true;

else return false;

}

return false;

}

//檢查是否4個壹樣的

public boolean isBomb(){

Map<Integer,Integer> map=new HashMap<Integer,Integer>();

for(int i=0;i<random.length;i++)

if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);

else map.put(random[i].getInner(),1);

for(int value:map.keySet()){

if(map.get(value)==4) return true;

}

return false;

}

//檢查是否3+2

public boolean isThreeAndTwo(){

Map<Integer,Integer> map=new HashMap<Integer,Integer>();

for(int i=0;i<random.length;i++)

if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);

else map.put(random[i].getInner(),1);

if(map.size()!=2) return false;

else{

for(int value:map.keySet()){

if(map.get(value)==2 || map.get(value)==3) return true;

else return false;

}

return false;

}

}

//檢查有3個壹樣的

public boolean isThree(){

Map<Integer,Integer> map=new HashMap<Integer,Integer>();

for(int i=0;i<random.length;i++)

if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);

else map.put(random[i].getInner(),1);

for(int value:map.keySet()){

if(map.get(value)==3) return true;

}

return false;

}

//檢查有2個壹樣的(單對)

public boolean isTwoByOdd(){

Map<Integer,Integer> map=new HashMap<Integer,Integer>();

for(int i=0;i<random.length;i++)

if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);

else map.put(random[i].getInner(),1);

for(int value:map.keySet()){

if(map.get(value)==2) return true;

}

return false;

}

//檢查有2個壹樣的(雙對)

public boolean isTwoByDouble(){

Map<Integer,Integer> map=new HashMap<Integer,Integer>();

int number=0;

for(int i=0;i<random.length;i++)

if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);

else map.put(random[i].getInner(),1);

for(int value:map.keySet()){

if(map.get(value)==2) number++;

}

if(number==2) return true;

else return false;

}

public void check(){

if(isTwoByOdd()) {type="妳手中的牌是單對子";level=1;}

else if(isTwoByOdd()) {type="妳手中的牌是雙對子";level=2;}

else if(isThree()) {type="妳手中的牌是小炸彈";level=3;}

else if(isThreeAndTwo()) {type="妳手中的牌是小炸彈加單對子";level=4;}

else if(isBomb()) {type="妳手中的牌是核彈";level=7;}

else if(isMax()) {type="恭喜妳,妳手中的牌是同花大順";level=9;}

else if(isSameColorAndStraight()) {type="恭喜妳,妳手中的牌是同花順";level=8;}

else if(isStraight()) {type="妳手中的牌是順子";level=5;}

else if(isSameColor()) {type="妳手中的牌是同花";level=6;}

else {type="妳手中的牌比較小";level=0;}

}

public String getType(){

return this.type;

}

public int getLevel(){

return this.level;

}

public void clear(){

random=new Poker[5];

type="";

level=0;

}

public static void main(String[] str){

Game game=new Game();

game.ruffle();

for(int i=0;i<5000;i++){

game.clear();

game.ruffle();

game.randomSelect(5,true);

game.check();

//選擇5000次,看看有多少順子

if(game.getLevel()==5) game.printSelect();

}

}

}

  • 上一篇:求2010年9月計算機三級網絡技術教程以及筆試題目
  • 下一篇:java語言可以做什麽?
  • copyright 2024編程學習大全網