第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

簡易撲克牌游戲【3個(gè)晚上2小時(shí),暴力簡單。】

用了3個(gè)晚上寫出來,在每個(gè)玩家選出最大的牌子里面糊涂了,導(dǎo)致自己找bug找了很久。其實(shí)名字一定要用心起好,才免于自己一直費(fèi)時(shí)間找bug。代碼放上來,每個(gè)類都有一定的步驟解釋,各位一起交流下,一起進(jìn)步!么么噠(*  ̄3)(ε ̄ *)

主要分三個(gè)大類:撲克牌、玩家、游戲(發(fā)牌、拿牌、比牌)

撲克牌創(chuàng)建:

package?com.imooc.season3.porkDemo;

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

/*
?*?創(chuàng)建撲克牌
?*?①創(chuàng)建一個(gè)撲克牌集合,利用List集合
?*?②創(chuàng)建一個(gè)數(shù)字?jǐn)?shù)組,裝2,3...
?*?③創(chuàng)建一個(gè)花色數(shù)組,裝方片,梅花...
?*/
public?class?CardCreation?{

???????List<String>?cards?=?new?ArrayList<String>();
????		
????	String[]?digits?=?{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
????	String[]?col?={"方片","紅桃","梅花","黑桃"};	

????	public?void?cardCreation(){
????		for(int?i=0;i<digits.length;i++){
????			for(int?y=0;y<col.length;y++){
????				String?tmp?=col[y]+digits[i];
????				cards.add(tmp);
????			}
????		}
????		
????	
????	}
		
????	public?void?cardShow(){
????		System.out.println("============撲克牌創(chuàng)建成功============");
????????	for(String?cards:cards){
????????		System.out.print(cards+"??");	
????????	}
????????	System.out.println("");
????	}
		
}
//創(chuàng)建玩家
package?com.imooc.season3.porkDemo;

import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.Scanner;
import?java.util.Set;
import?java.util.Map.Entry;

import?com.imooc.season3.CollectionDemo.Student;

/*
?*?創(chuàng)建游戲玩家
?*?①玩家具有ID,?昵稱,手中的牌的集合三個(gè)屬性
?*?②游戲設(shè)定為兩個(gè)玩家,并且ID具有異常捕捉
?*?
?*/
public?class?Players?{

		int[]?playerID;
		String?playerName;
		Map<Integer,String>?player?;
		
		public?Players(){
			?playerID=new?int[2];??
			?//要賦值必須初始化數(shù)組長度
			?player?=new?HashMap<Integer,String>();
		}
		
		public?Players(int?playerID,String?playerName){
			?player?=new?HashMap<Integer,String>();
			?player.put(playerID,?playerName);
		}
		
		public?void??playerCreation(){
			System.out.println("");
			System.out.println("============創(chuàng)建玩家============");
			for(int?i=0;i<2;i++){
				while(true){
				System.out.println("請輸入第"+(i+1)+"位玩家的ID");
				Scanner?inputID?=new?Scanner(System.in);
				try{
					playerID[i]=inputID.nextInt();
				}catch(Exception?e){
					System.out.println("請輸入數(shù)字!??!");
					continue;
				}
				System.out.println("請輸入第"+(i+1)+"位玩家的姓名");
				Scanner?inputName?=new?Scanner(System.in);
				playerName=inputName.next();
				player.put(playerID[i],?playerName);
				break;
			}
		}
		
			System.out.println("");
			System.out.println("============創(chuàng)建玩家成功============");
			System.out.println("");
			System.out.println("玩家:"+"?");
			Set<Entry<Integer,String>>?playerList?=player.entrySet();?//遍歷map的方法--》EntrySet
			for(Entry<Integer,String>?playerls?:playerList?){
				System.out.print(playerls.getKey()+":"+playerls.getValue());
				System.out.println("");
			}
		}
		
		public?void?pickCards(){
			
		}
}

游戲(發(fā)牌、拿牌、比牌)

package?com.imooc.season3.porkDemo;

import?java.util.Collections;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Scanner;
import?java.util.Set;
import?java.util.Map.Entry;

import?com.imooc.season3.CollectionDemo.Student;

/*
?*?①發(fā)牌,打亂牌的循序,然后每個(gè)玩家拿到兩張牌
?*?②比牌
?*/


public?class?Game?{
	
	public?Map<String,Players>?playersCard_v1;?//兩位玩家的牌--姓名加ID
	public?Map<String,Players>?playersCard_v2;
	
	int?playersCardHold;
	Scanner?playerHold;
	
	CardCreation?cardRule;?
	CardCreation?cardSet?;
	Players?players;
	
	
	
	public?Game(CardCreation?cardSet?,Players?players){
		playersCard_v1?=new?HashMap<String,Players>();
		playersCard_v2?=new?HashMap<String,Players>();
		this.cardSet=cardSet;
		this.players=players;
	}
	
	public?void?pickCards(){
		Collections.shuffle(cardSet.cards);??
		//打亂該變量的撲克牌的順序,Randomly?permutes?the?specified?list?using?a?default?source?of?randomness.
		
	???	while(true){
	???	try{
	????System.out.println("");
		System.out.println("============請輸入每個(gè)玩家的持牌數(shù)============");
	???	playerHold=new?Scanner(System.in);
	???	playersCardHold?=playerHold.nextInt();?//輸入每個(gè)玩家可以持有的撲克牌數(shù)目,并捕捉異常
	???	break;}
	???	catch(Exception?e){
	???		System.out.println("============輸入非數(shù)字,請重新輸入============");
	???		continue;
	???	}
	???	}
	???	
	???	for(int?i=0;i<playersCardHold;i++){?//玩家持牌數(shù)為2,則給每位玩家發(fā)牌2次
	???		????//兩個(gè)玩家,就是總共發(fā)兩輪(每輪發(fā)給兩個(gè)玩家一次)
	???			String?tmpCard;??????????????
	???	?//創(chuàng)建臨時(shí)存儲撲克牌、玩家姓名和玩家ID的局部變量
	???			int?tmpPlayerID;
	???			String?tmpPlayerName;
	???			
	???			tmpPlayerID=players.playerID[0];???
	???			//第一個(gè)玩家拿牌
	???			tmpPlayerName?=players.player.get(tmpPlayerID);
	???		????System.out.println("");
	?		????System.out.println("==玩家"+tmpPlayerName+"拿牌==");
	?		????tmpCard=cardSet.cards.get(i);
	?		???cardSet.cards.remove(i);???????
	?		??//玩家拿完牌要刪除這個(gè)牌,已經(jīng)不存在在可抽取的牌里
	?		????playersCard_v1.put(tmpCard,?new?Players(tmpPlayerID,tmpPlayerName));
	?		???
	?		???tmpPlayerID=players.playerID[1];???
	?		???//第二個(gè)玩家拿牌
	???			tmpPlayerName?=players.player.get(tmpPlayerID);
	???		????System.out.println("");
	?		????System.out.println("==玩家"+tmpPlayerName+"拿牌==");
	?		????tmpCard=cardSet.cards.get(i);
	?		???cardSet.cards.remove(i);
	?		????playersCard_v2.put(tmpCard,?new?Players(tmpPlayerID,tmpPlayerName));
	???		
	???	}
	????System.out.println("");
		System.out.println("==玩家抽牌完畢==");
	???	
	}

	public?void?showCards(){
		CardCreation?cardRule?=new?CardCreation();?
		//重新new一個(gè)對象,指向一個(gè)新的位置
		cardRule.cardCreation();????
		?//牌的大小排好隊(duì),需要比對位置。
		
	String?player_v1Name=players.player.get(players.playerID[0]);??
	//玩家v1名稱
	String?player_v2Name=players.player.get(players.playerID[1]);?
	//玩家v2名稱
?????
		String?player_v1Card?=?null;
		String?player_v2Card?=?null;
		int?player_v1Index?=?0;
		int?player_v2Index?=?0;
		
	Set<Entry<String,Players>>?player_v1Set=playersCard_v1.entrySet();??//玩家1
	Set<Entry<String,Players>>?player_v2Set=playersCard_v2.entrySet();??//玩家2
		
		if(playersCardHold==1){??
		//如果每個(gè)玩家持牌數(shù)為1,那么就只需要比對返回的Index值
		????for(Entry<String,Players>?player_v1:player_v1Set){
		????	?player_v1Card=player_v1.getKey();??//拿到撲克牌的值
		????	?for(String?cardsForRule_v1:cardRule.cards){
		????		?if(cardsForRule_v1.equals(player_v1Card))??????????????????????????//這個(gè)撲克牌位于哪個(gè)位置
		????		?{player_v1Index?=cardRule.cards.indexOf(cardsForRule_v1);
		????		???break;}		??
		?????????}
		????}
		????System.out.println("");
			System.out.println("玩家"+player_v1Name+"拿到"+player_v1Card);

		????for(Entry<String,Players>?player_v2:player_v2Set){
		????	?player_v2Card=player_v2.getKey();
		????	?for(String?cardsForRule_v2:cardRule.cards){
		????		?if(cardsForRule_v2.equals(player_v2Card))
		????		?{player_v2Index?=cardRule.cards.indexOf(cardsForRule_v2);
		????		???break;}		??
		?????????}
		????}
		????System.out.println("");
			System.out.println("玩家"+player_v2Name+"拿到"+player_v2Card);
		}
		
//玩家持牌數(shù)大于2,則需要先對自己的牌進(jìn)行比對,然后選出最大的進(jìn)行比對
		else{
			String?tmpPlayer_v1Cards;??
			//創(chuàng)建臨時(shí)變量,作為暫時(shí)存儲
			String?tmpPlayer_v2Cards;
			int?tmpPlayer_v1Index;
			int?tmpPlayer_v2Index;
			
			for(Entry<String,Players>?player_v1:player_v1Set){
				??tmpPlayer_v1Cards=player_v1.getKey();??
				??//拿到撲克牌的值
			????	?for(String?cardsForRule_v1:cardRule.cards){
			????		?if(cardsForRule_v1.equals(tmpPlayer_v1Cards))??//這個(gè)撲克牌位于哪個(gè)位置
			????		????{tmpPlayer_v1Index?=cardRule.cards.indexOf(cardsForRule_v1);
			????		???if(tmpPlayer_v1Index>player_v1Index){
			????			???player_v1Card=tmpPlayer_v1Cards;
			????			???player_v1Index=tmpPlayer_v1Index;??
			????		????????}
			????		???}		??
			?????????}	
			}
			System.out.println("");
			System.out.println("玩家"+player_v1Name+"拿到的最大撲克牌為"+player_v1Card);
			
			??for(Entry<String,Players>?player_v2:player_v2Set){
			????	?tmpPlayer_v2Cards=player_v2.getKey();
			????	?for(String?cardsForRule_v2:cardRule.cards){
			????		?if(cardsForRule_v2.equals(tmpPlayer_v2Cards))
			????		?{??tmpPlayer_v2Index?=cardRule.cards.indexOf(cardsForRule_v2);
			????		?if(tmpPlayer_v2Index>player_v2Index){
			????		???player_v2Index=tmpPlayer_v2Index;
			????		????player_v2Card=tmpPlayer_v2Cards;
			????		??????}
			????		???}		??
			?????????}
			????}
			????System.out.println("");
			System.out.println("玩家"+player_v2Name+"拿到的最大撲克牌為"+player_v2Card);
		}
		
		System.out.println("");
		if(player_v1Index>player_v2Index){
			System.out.println("玩家"+player_v1Name+"勝");
		}else{
			System.out.println("玩家"+player_v2Name+"勝");
		}
		
		System.out.println("");
		System.out.print("玩家"+player_v1Name+"持牌:");
		for(Entry<String,Players>?player_v1:player_v1Set){
			System.out.print(player_v1.getKey());
			??}
		System.out.println("");
		System.out.print("玩家"+player_v2Name+"持牌:");
		for(Entry<String,Players>?player_v2:player_v2Set){
			System.out.print(player_v2.getKey());
			??}
	}
}

//Main方法

package?com.imooc.season3.porkDemo;

import?java.util.Collections;
import?java.util.List;

public?class?GameDemo?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		CardCreation?cards?=new?CardCreation();?//初始化撲克牌
		cards.cardCreation();??//創(chuàng)建撲克牌
		cards.cardShow();
?
		
		Players?players?=new?Players();???//初始化游戲玩家
		players.playerCreation();?????//創(chuàng)建游戲玩家
		
		Game?games?=new?Game(cards,?players);??//創(chuàng)建游戲變量games
		games.pickCards();???//游戲玩家拿牌
		games.showCards();
	}

}

正在回答

3 回答

?String?player_v1Name=players.player.get(players.playerID[0]);


這個(gè)代碼我有點(diǎn)繞暈了,能不能幫我解釋一下,謝謝!

3 回復(fù) 有任何疑惑可以回復(fù)我~
//結(jié)果如下圖:

http://img1.sycdn.imooc.com//56b8b7ee00015f7309840495.jpghttp://img1.sycdn.imooc.com//56b8b7f90001caed07530560.jpg

0 回復(fù) 有任何疑惑可以回復(fù)我~

結(jié)果如圖:

http://img1.sycdn.imooc.com//56b8b7a200015f7309840495.jpghttp://img1.sycdn.imooc.com//56b8b7ad0001caed07530560.jpg

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門第三季
  • 參與學(xué)習(xí)       409767    人
  • 解答問題       4510    個(gè)

Java中你必須懂得常用技能,不容錯(cuò)過的精彩,快來加入吧

進(jìn)入課程

簡易撲克牌游戲【3個(gè)晚上2小時(shí),暴力簡單。】

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號