java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...
玩家類:
package playingCardsGame;
import java.util.ArrayList;
import java.util.List;
/*
* 玩家類
*/
public class Players {
int ID;
String name;
List handCards;
Players(int ID, String name){
this.ID = ID;
this.name = name;
this.handCards = new ArrayList();
}
}
手牌類:
package playingCardsGame;
/*
* 手牌類
*/
public class HandCards {
String card;
HandCards(String card) {
this.card = card;
}
}
游戲類:
package playingCardsGame;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/*
* 游戲類
*/
public class CardsGame {
public List cardsList;
public List shuffleList;
public List player;
public Players ps;
private Scanner console;
Random random;
public CardsGame(){
cardsList = new ArrayList();
shuffleList = new ArrayList();
player = new ArrayList();
ps = new Players(0, null);
console = new Scanner(System.in);
random = new Random();
}
String[] color = {"方片","梅花","紅桃","黑桃"};
String[] ch = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//創建撲克牌并洗牌
public void Cards(){
System.out.println("--------------創建撲克牌...--------------");
for(int i = 0; i < color.length; i++){
for(int j = 0; j < ch.length; j++){
cardsList.add(color[i] + ch[j]);
}
}
System.out.println("------------撲克牌創建成功!-------------");
System.out.print("為:[");
for(int k = 0; k < cardsList.size(); k++){
if(k < cardsList.size()-1){
System.out.print(cardsList.get(k)+",");
}else
System.out.println(cardsList.get(k)+"]");
}
System.out.println("--------------開始洗牌...--------------");
for(int m = 0; m < cardsList.size(); m++){
int number;
do{
number = random.nextInt(cardsList.size());
}while(shuffleList.contains(cardsList.get(number).toString()));
shuffleList.add(cardsList.get(number).toString());
}
System.out.println("--------------洗牌結束!--------------");
}
//創建玩家并進行游戲
public void Play(){
System.out.println("--------------創建玩家...--------------");
//自定義玩家個數并進行異常檢測
int numberOfPlayers;
while(true){
System.out.println("請輸入玩家個數(最少2名玩家,最多26名玩家):");
Scanner console = new Scanner(System.in);
try{
numberOfPlayers = console.nextInt();
if(numberOfPlayers > 1 && numberOfPlayers < 27){
break;
}else{
throw new Exception();
}
}catch(InputMismatchException e){
System.out.println("請輸入整數類型的玩家個數!");
}catch(Exception e){
System.out.println("玩家個數不在規定范圍之內!");
}
}
//獲取每個玩家的ID和姓名并對ID進行異常檢測
for(int i = 1; i <= numberOfPlayers; i++){
System.out.println("請輸入第"+ i + "位玩家的ID和姓名:");
int ID;
while(true){
System.out.println("輸入ID:");
Scanner console = new Scanner(System.in);
try{
ID = console.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("請輸入整數類型的ID!");
}
}
System.out.println("輸入姓名:");
String name = console.next();
player.add(new Players(ID, name));
}
for (Players player : player) {
System.out.println("-----歡迎玩家:" + player.name);
}
System.out.println("--------------開始發牌...--------------");
//獲取所發牌的手牌序列
for(int i = 0; i < 2; i ++){
for(int j = 0; j < numberOfPlayers; j ++){
System.out.println("-----玩家:" + player.get(j).name + "-拿牌");
if(i == 0)
ps.handCards.add(new HandCards(shuffleList.get(j).toString()));
else
ps.handCards.add(new HandCards(shuffleList.get(j + numberOfPlayers).toString()));
}
}
System.out.println("--------------發牌結束!--------------");
System.out.println("--------------開始游戲...--------------");
//獲取每個玩家的最大手牌序列
List maxCards = new ArrayList();
int m = 0, n = 0, p = 0, q = 0;
String max;
for(int i = 0;i < numberOfPlayers; i ++){
String card1 = ps.handCards.get(i).card.toString();
String card2 = ps.handCards.get(i + numberOfPlayers).card.toString();
//比較牌面大小
for(int j = 0; j < ch.length; j ++){
if(card1.substring(2).equals(ch[j]))
m = j;
if(card2.substring(2).equals(ch[j]))
n = j;
}
if(m >= n){
if(m == n){//如果牌面大小相等,再比較花色并最終得到最大值
for(int j = 0; j < color.length; j ++){
if(card1.substring(0,2).equals(color[j]))
p = j;
if(card2.substring(0,2).equals(color[j]))
q = j;
}
if(p > q){
max = card1.toString();
}else{
max = card2.toString();
}
}else{
max = card1.toString();
}
}else{
max = card2.toString();
}
System.out.println("玩家:" + player.get(i).name + "最大的手牌為:" + max);
maxCards.add(max);
}
//比較最大手牌序列,先比較大小再比較花色,最后得到最大牌對應的玩家
for(int i = 0, j = 1;j < numberOfPlayers; j ++){
String card3 = maxCards.get(i).toString();
String card4 = maxCards.get(j).toString();
for(int k = 0; k < ch.length; k ++){
if(card3.substring(2).equals(ch[k]))
m = k ;
if(card4.substring(2).equals(ch[k]))
n = k;
}
if(m <= n){
if(m == n){
for(int r = 0; r < color.length; r ++){
if(card3.substring(0,2).equals(color[r]))
p = r;
if(card4.substring(0,2).equals(color[r]))
q = r;
}
if(p < q)
i = j;
}else
i = j;
}
m = i;
}
//輸出游戲結果
System.out.println("--------------玩家:" +player.get(m).name + "獲勝!--------------");
System.out.println("玩家各自的手牌為:");
for (int i = 0; i < numberOfPlayers; i ++)
System.out.println(player.get(i).name + ":[" + ps.handCards.get(i).card.toString()
+"," + ps.handCards.get(i + numberOfPlayers).card.toString() + "]");
}
public static void main(String[] args) {
CardsGame cg = new CardsGame();
cg.Cards();
cg.Play();
}
}
總結
以上是生活随笔為你收集整理的java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五年一贯制专转本计算机网络真题,金陵科技
- 下一篇: 鸟哥的linux私房菜有乌班图,折腾Ub