也可以理解为往桌子上摆扑克牌
每张牌都是一个面板 , 每个面板有不同的内容
多个不同内容的面板 就拼出了 一个网页 (就像你在桌子上摆了好多纸牌一样)
代码仅供参考,如有疑问,欢迎追问:
import java.util.ArrayListimport java.util.List
import java.util.Scanner
/**
* 随机扑克牌
* @author STONE
* @version 2015-10-28
*/
public class Poker {
//用于记录丢失的手牌数
private static Integer lostTotal = 0
//用于存放已下发的扑克
private static Integer[] its1 = new Integer[54]
//用于存放当前的扑克
private static Integer[] its2 = new Integer[54]
private static List<Integer> lostList = new ArrayList<Integer>()
public static void main(String[] args) {
Scanner scn = new Scanner(System.in)
for(int i=0i<54i++){
its1[i] = 0
its2[i] = 0
}
System.out.println("系统开始发牌...")
givePoker(5)
System.out.println("发牌完毕,当前手牌为:")
printPoker(its2)
Integer gameTotal = 0
while(gameTotal<10){//循环跑10次,请注意此处发牌没做限制,如果循环次数过大,会导致死循环
System.out.println("请输入需要丢弃的手牌(多张牌格式如下:黑桃1,黑桃2,黑桃3):")
String lost = scn.nextLine()
checkLost(lost)
System.out.println("丢失手牌完毕,当前手牌:")
printPoker(its2)
System.out.println("系统开始重发手牌...")
givePoker(lostTotal)
System.out.println("重发发牌完毕,当前手牌为:")
printPoker(its2)
gameTotal++
}
scn.close()
}
public static void givePoker(Integer num){//随机分发手牌
int total = 0
while(total<num){
int poke = (int)(Math.random()*54)
if(its1[poke] == 0){
its1[poke] = 1
its2[poke] = 1
total++
}
}
lostTotal = 0
}
public static Boolean checkLost(String lost){//检查需要丢失的手牌
if(lost==null || lost.equals("")){
System.out.println("输入手牌错误,系统无法处理...")
return false
}
if(lost.indexOf("黑桃")<0 && lost.indexOf("红心")<0 && lost.indexOf("梅花")<0 && lost.indexOf("方块")<0){
System.out.println("输入手牌错误,系统无法处理...")
return false
}
String[] strs = lost.split(",")
Boolean bol = false
for(String str : strs){
str = str.trim()
if(str==null || str.equals("")) continue//去掉,防止空格
bol = getPokerNum(str)
}
if(bol){
losePoker()
}
return false
}
public static void losePoker(){//丢掉手牌
lostTotal = lostList.size()
for(Integer itr : lostList){//丢掉手牌
its2[itr-1] = 0
}
lostList = new ArrayList<Integer>()
}
public static Boolean getPokerNum(String str){//获取手牌点数并去掉
try{
Integer itr = 0
if(str.indexOf("黑桃")==0){
str = str.replace("黑桃", "")
itr = Integer.parseInt(str)
if(itr>13){
System.out.println("输入手牌不存在:黑桃"+str)
return false
}
if(its2[itr-1]==1){
lostList.add(itr)
}
} else if(str.indexOf("红心")==0){
str = str.replace("红心", "")
itr = Integer.parseInt(str)
if(itr>13){
System.out.println("输入手牌不存在:红心"+str)
return false
}
if(its2[itr+12]==1){
lostList.add(itr+13)
}
} else if(str.indexOf("梅花")==0){
str = str.replace("梅花", "")
itr = Integer.parseInt(str)
if(itr>13){
System.out.println("输入手牌不存在:梅花"+str)
return false
}
if(its2[itr+25]==1){
lostList.add(itr+26)
}
} else if(str.indexOf("方块")==0){
str = str.replace("方块", "")
itr = Integer.parseInt(str)
if(itr>13){
System.out.println("输入手牌不存在:方块"+str)
return false
}
if(its2[itr+38]==1){
lostList.add(itr+39)
}
} else if(str.indexOf("小王")==0){
if(its2[52]==1){
lostList.add(53)
}
} else if(str.indexOf("大王")==0){
if(its2[53]==1){
lostList.add(54)
}
}
return true
} catch( Exception e ){
System.out.println("输入手牌有误...")
return false
}
}
public static void printPoker(Integer[] its){//打印当前手牌
String result = ""
for(int i=0i<its.lengthi++){
if(its[i]==1){//等于1表示当前手牌存在
result+=pukerCheck(i+1)+","
}
}
System.out.println(result)
}
public static String pukerCheck(Integer itr){//判断扑克类型
/**
* 1~13黑桃花色、14~26红心花色、27~39梅花花色
* 40~52方块花色、53小王、54大王
*/
if(1<=itr && itr<=13){
return "黑桃"+itr
} else if(14<=itr && itr<=26){
return "红心"+(itr-13)
} else if(27<=itr && itr<=39){
return "梅花"+(itr-26)
} else if(40<=itr && itr<=52){
return "方块"+(itr-39)
} else if(itr==53){
return "小王"
} else if(itr==54){
return "大王"
}
return ""
}
}
测试运行结果: