作業(yè)代碼,可能有點(diǎn)多
import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
/**
?* ? ? 綜合練習(xí)————洗牌發(fā)牌Easy版
?* 功能描述:
?* 1、創(chuàng)建一副撲克牌?
?* 包括四種花色:黑桃、紅桃、梅花、方片
?* 十三種點(diǎn)數(shù):2-10,J,Q,K,A,不考慮大小王
?* 2、創(chuàng)建兩名玩家
?* 玩家至少有ID、姓名、手牌等屬性,手牌為撲克牌的集合
?* 3、洗牌
?* 將之前創(chuàng)建的“一副撲克牌”打亂順序
?* 4、發(fā)牌
?* 將洗牌之后的撲克牌集合,從第一張開始,發(fā)給兩名玩家,
?* 按照一人一張的方式,每人發(fā)兩張
?* 5、游戲
?* 比較兩名玩家手中的撲克牌,規(guī)則為:取兩人各自手中點(diǎn)數(shù)最大的牌進(jìn)行比較,
?* 點(diǎn)數(shù)大的贏;若兩人各自的點(diǎn)數(shù)最大的牌相等,則再按花色比較
?*/
public class CardGames {
public List<CardSystem> cardToSelect;
public List<CardSystem> ?userList1;
public List<CardSystem> ?userList2;
public CardGames(){
cardToSelect=new ArrayList<CardSystem>();
userList1=new ArrayList<CardSystem>();
userList2=new ArrayList<CardSystem>();
}
?
public void Cards(){
System.out.println("---------創(chuàng)建撲克牌---------");
String[] pkpsign=new String[]{"黑桃","紅桃","梅花","方片"};
String[] pkpnum=new String[]{"2","3","4","5","6","7","8","9","10","J",
"Q","K","A"};
System.out.println("---------撲克牌創(chuàng)建成功---------");
System.out.print("為:[");
for(int i=pkpsign.length-1;i>0;i--) {
for(int j=0;j<pkpnum.length;j++){
if(j==pkpnum.length-1&&i==pkpsign.length-1) {
System.out.print(pkpsign[i]+pkpnum[j]);
}else {
System.out.print(pkpsign[i]+pkpnum[j]+",");
}
CardSystem cardSystem=new CardSystem(pkpsign[i],pkpnum[j]);
cardToSelect.add(cardSystem);
}
}
System.out.println("]");
System.out.println("---------開始洗牌---------");
Collections.shuffle(cardToSelect);
//這個(gè)foreach循環(huán)輸出的就是打亂后的撲克牌
/* ?
for (CardSystem cSystem:cardToSelect) {
System.out.print(cSystem.getSign()+cSystem.getNum()+" ");
}
*/
System.out.println("---------洗牌結(jié)束---------");
System.out.println("---------創(chuàng)建玩家---------");
Scanner s=new Scanner(System.in);
int user1ID=inputExpetionID1();
System.out.println("輸入姓名");
String user1name=s.next();
int user2ID=inputExpetionID2();
System.out.println("輸入姓名");
String user2name=s.next();
System.out.println("---------開始發(fā)牌---------");
for(int i=0;i<4;i++) {
if(i%2==0){
System.out.println("----玩家"+user1name+"--拿牌");
userList1.add(cardToSelect.get(i));
//System.out.println(cardToSelect.get(i).getSign()+cardToSelect.get(i).getNum());
}
if(i%2!=0){
System.out.println("----玩家"+user2name+"--拿牌");
userList2.add(cardToSelect.get(i));
//System.out.println(cardToSelect.get(i).getSign()+cardToSelect.get(i).getNum());
}
}
System.out.println("---------發(fā)牌結(jié)束---------");
System.out.println("---------開始游戲---------");
//玩家1
int[] user1cardsign=new int[2];
for(int i=0;i<2;i++){
for(int j=0;j<pkpsign.length;j++){
if(userList1.get(i).getSign()==pkpsign[j]){
user1cardsign[i]=j;
//System.out.println(j);
}
}
}
int[] user1cardnum=new int[2];
for(int i=0;i<2;i++){
for(int j=0;j<pkpnum.length;j++){
if(userList1.get(i).getNum()==pkpnum[j]){
user1cardnum[i]=j;
//System.out.println(j);
}
}
}
int num1sign=0;
int num1num=0;
if(user1cardsign[0]>user1cardsign[1]){
num1sign=num1num=0;
}
if(user1cardsign[0]<user1cardsign[1]){
num1sign=num1num=1;
}
if(user1cardsign[0]==user1cardsign[1]){
if(user1cardnum[0]>user1cardnum[1]){
num1sign=0;
num1num=0;
}
if(user1cardnum[0]<user1cardnum[1]){
num1sign=0;
num1num=1;
}
if(user1cardsign[0]==user1cardsign[1]){
num1sign=num1num=0;
}
}
System.out.println("玩家:"+user1name+"最大的手牌為"
+userList1.get(num1sign).getSign()+userList1.get(num1num).getNum());
//玩家2
int[] user2cardsign=new int[2];
for(int i=0;i<2;i++){
for(int j=0;j<pkpsign.length;j++){
if(userList2.get(i).getSign()==pkpsign[j]){
user2cardsign[i]=j;
//System.out.println(j);
}
}
}
int[] user2cardnum=new int[2];
for(int i=0;i<2;i++){
for(int j=0;j<pkpnum.length;j++){
if(userList2.get(i).getNum()==pkpnum[j]){
user2cardnum[i]=j;
//System.out.println(j);
}
}
}
int num2sign=0;
int num2num=0;
if(user2cardsign[0]>user2cardsign[1]){
num2sign=num2num=0;
}
if(user2cardsign[0]<user2cardsign[1]){
num2sign=num1num=1;
}
if(user2cardsign[0]==user2cardsign[1]){
if(user2cardnum[0]>user2cardnum[1]){
num2sign=0;
num2num=0;
}
if(user2cardnum[0]<user2cardnum[1]){
num2sign=0;
num2num=1;
}
if(user2cardsign[0]==user2cardsign[1]){
num2sign=num2num=0;
}
}
System.out.println("玩家:"+user2name+"最大的手牌為"
+userList2.get(num2sign).getSign()+userList2.get(num2num).getNum());
//贏家
if(user1cardsign[num1sign]>user2cardsign[num2sign]) {
System.out.println("----------玩家"+user1name+"-------------");
}
if(user1cardsign[num1sign]<user2cardsign[num2sign]) {
System.out.println("----------玩家"+user2name+"-------------");
}
if(user1cardsign[num1sign]==user2cardsign[num2sign]) {
if(user1cardnum[num1num]>user2cardnum[num2num]) {
System.out.println("----------玩家"+user1name+"-------------");
}
if(user1cardnum[num1num]<user2cardnum[num2num]) {
System.out.println("----------玩家"+user2name+"-------------");
}
if(user1cardnum[num1num]==user2cardnum[num2num]) {
System.out.println("----玩家"+user1name+"和玩家"+user2name+"打成了平局----");
}
}
System.out.println("玩家各自的手牌為:");
System.out.print(user1name+":[");
for(int i=0;i<userList1.size();i++){
if(i==userList1.size()-1){
System.out.print(userList1.get(i).getSign()
+userList1.get(i).getNum());
}else {
System.out.print(userList1.get(i).getSign()
+userList1.get(i).getNum()+",");
}
}
System.out.println("]");
System.out.print(user2name+":[");
for(int i=0;i<userList2.size();i++){
if(i==userList2.size()-1){
System.out.print(userList2.get(i).getSign()
+userList2.get(i).getNum());
}else {
System.out.print(userList2.get(i).getSign()
+userList2.get(i).getNum()+",");
}
}
System.out.println("]");
}
/**
*?
* 輸入異常
*/
public int inputExpetionID1(){
Scanner s=new Scanner(System.in);
try {
System.out.println("請輸入第一位玩家的ID");?
int user1ID=s.nextInt();
return user1ID;
} catch (Exception e) {
// TODO: handle exception
System.out.println("請輸入整數(shù)類型的ID");
return inputExpetionID1();
}
}
public int inputExpetionID2(){
Scanner s=new Scanner(System.in);
try {
System.out.println("請輸入第二位玩家的ID");?
int user2ID=s.nextInt();
return user2ID;
} catch (Exception e) {
// TODO: handle exception
System.out.println("請輸入整數(shù)類型的ID");
return inputExpetionID2();
}
}
public static void main(String[] args){
CardGames cg=new CardGames();
cg.Cards();
}
}
//創(chuàng)建CardSystem類
public class CardSystem {
private String sign;
public String getSign(){
return sign;
}
private String num;
public String getNum(){
return num;
}
public CardSystem(String sign,String num){
this.sign=sign;
this.num=num;
}
public CardSystem(){
}
}
2019-03-11
不是應(yīng)該先比大小再比花色嗎?