黒馬プログラマー-java集合の闘地主とアップグレードの集合運用総括
9865 ワード
------- androidトレーニング、javaトレーニング、コミュニケーションを楽しみにしています!-------
集合を用いて闘地主発牌小プログラムを作成し,書き換えた後,一人一人の手にある牌を闘地主規則における牌値の大文字順にプレイヤーの手に送ることができる.
さらにカード類のもう一つの古典的なゲームであるアップグレードのカード発行動作も同様に実現でき、闘地主とアップグレードのプログラムコードを整理することができる.
一、闘地主がカードを発行し、プレイヤーのカード値の配列を保証する
1.数値と色を格納する結合の作成
2.コレクションに要素を追加するように、コレクションツールクラスを使用して一度に完了を追加できます.
3.花色と対応する数字を組み合わせて、注意、外循環は数字で、後のカードの値がプレイヤーの手に届く順番に準備します
4.牌値の大きさ比較を定義する二列集合は、各組合せ後の牌値の大きさを規定する
5.プレイヤーとカードの定義
6.二列集合に対応するキーとして集合を定義し、集合ツールクラスを使用して要素を並べ替える
7.2列の集合を巡り、乱順の集合要素をパラメータ取得値として各プレイヤーとベースカードに配布する
8.テストの各カードの結果を印刷する
上記の闘地主プログラムの詳細な結果に基づいて、同じようにカードをアップグレードする小プログラムを得る.
まとめ:以上の2つの小さなプログラムを通じて、集合の中で同じ需要を実現する方法は多くの種類があり、集合ツール類が提供する方法を柔軟に運用して必要な効果を迅速に達成することができることを発見した.
集合を用いて闘地主発牌小プログラムを作成し,書き換えた後,一人一人の手にある牌を闘地主規則における牌値の大文字順にプレイヤーの手に送ることができる.
さらにカード類のもう一つの古典的なゲームであるアップグレードのカード発行動作も同様に実現でき、闘地主とアップグレードのプログラムコードを整理することができる.
一、闘地主がカードを発行し、プレイヤーのカード値の配列を保証する
1.数値と色を格納する結合の作成
2.コレクションに要素を追加するように、コレクションツールクラスを使用して一度に完了を追加できます.
3.花色と対応する数字を組み合わせて、注意、外循環は数字で、後のカードの値がプレイヤーの手に届く順番に準備します
4.牌値の大きさ比較を定義する二列集合は、各組合せ後の牌値の大きさを規定する
5.プレイヤーとカードの定義
6.二列集合に対応するキーとして集合を定義し、集合ツールクラスを使用して要素を並べ替える
7.2列の集合を巡り、乱順の集合要素をパラメータ取得値として各プレイヤーとベースカードに配布する
8.テストの各カードの結果を印刷する
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap;
public class KaPai2 {
public static void main(String[] args) {
//
String [] s1 = new String[]{"♥","♠","◆","♣"};
String [] s2 = new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//
ArrayList<String> cards = new ArrayList<String>();
ArrayList<String> card = new ArrayList<String>();
ArrayList<String> p1 = new ArrayList<String>();
ArrayList<String> p2 = new ArrayList<String>();
ArrayList<String> p3 = new ArrayList<String>();
//
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
cards.add(s1[i]+s2[j]);
}
}
cards.add("★★");
cards.add("☆☆");
System.out.println(cards);
////
// Random r = new Random();
// while(cards.size()!=0){
// int ri = r.nextInt(cards.size()+1);
// p1.add(cards.get(ri));
//
// }
//
// System.out.println(p1);
//
Collections.shuffle(cards);
System.out.println(cards);
//
for(int i = 0;i<cards.size();i++){
if(i>=cards.size()-3){
card.add(cards.get(i));
}
if(i%3==0){ // ,
// , !!!
p1.add(cards.get(i));
}
else if(i%3==1){
p2.add(cards.get(i));
}
else if(i%3==2){
p3.add(cards.get(i));
}
}
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);
System.out.println(card);
System.out.println("=======================================================================");
// ,
/*
* :
*/
// :
// 1. ” “ , Collections
// 2.
//
ArrayList<String> num = new ArrayList<>();
Collections.addAll(num, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
//
ArrayList<String> color = new ArrayList<>();
Collections.addAll(color, "♥","♠","◆","♣");
//
// HashMap<String, String> cards_ = new HashMap<>();
//// map
// for(int i =0;i<num.size();i++){
// for(int j=0;j<color.size();j++){
//
//// cards_.put(color.get(j),num.get(i));
// cards_.put(num.get(i),color.get(j));
// }
// }
// System.out.println(cards_);
// System.out.println(num.get(2));
// ,
HashMap<Integer, String> dic = new HashMap<>();
//
int index = 1;
//
for (String num1 : num) {
for (String color1 : color) {
dic.put(index, color1+num1); // ,
index++;
}
}
//
dic.put(53, "☆☆");
dic.put(54, "★★");
System.out.println(dic);
// , shuffle collection , , dic
ArrayList<Integer> cards_ = new ArrayList<Integer>();
// , cards
for (int i = 1; i <= 54; i++) {
cards_.add(i);
}
// : collection
Collections.shuffle(cards_);
System.out.println(cards_);
// , , TreeMap
TreeMap<Integer,String> player1 = new TreeMap<Integer,String>();
TreeMap<Integer,String> player2 = new TreeMap<Integer,String>();
TreeMap<Integer,String> player3 = new TreeMap<Integer,String>();
TreeMap<Integer,String> dipai = new TreeMap<Integer,String>();
//
for (int i = 0; i < cards_.size(); i++) {
if (i>=cards_.size()-3) {
dipai.put(cards_.get(i), dic.get(cards_.get(i)));
}
else {
if (i%3==0) {
player1.put(cards_.get(i), dic.get(cards_.get(i)));
}
else if (i%3==1) {
player2.put(cards_.get(i), dic.get(cards_.get(i)));
}
else if (i%3==2) {
player3.put(cards_.get(i), dic.get(cards_.get(i)));
}
}
}
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
System.out.println(dipai);
System.out.println("==========================================================");
// ,
method(player1);
method(player2);
method(player3);
method(dipai);
}
//
public static void method(TreeMap<Integer,String> treemap){
Set<Integer> keySet = treemap.keySet(); // Set , ,
System.out.print("["); // !!!!!!!!!
for (Integer key : keySet) {
System.out.print(treemap.get(key)+" ");
}
System.out.print("]");
System.out.println();
}
}
上記の闘地主プログラムの詳細な結果に基づいて、同じようにカードをアップグレードする小プログラムを得る.
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeMap;
/*
*
*/
public class ShengJi {
public static void main(String[] args) {
//
ArrayList<String> num = new ArrayList<String>();
//
ArrayList<String> color = new ArrayList<String>();
//
Collections.addAll(num, "3","3","4","4","5","5","6","6","7","7","8","8","9","9","10","10","J","J","Q","Q","K","K","A","A","2","2");
Collections.addAll(color, "♥","♠","◆","♣");
//
HashMap<Integer, String> hashMap = new HashMap<>();
//
int index = 1; // for hashMap
// , , !!!
//
for (int i = 0; i < num.size(); i++) {
for (int j = 0; j < color.size(); j++) {
hashMap.put(index, color.get(j)+num.get(i));
index++;
}
}
//
hashMap.put(105, "☆☆");
hashMap.put(106, "☆☆");
hashMap.put(107, "★★");
hashMap.put(108, "★★");
System.out.println(hashMap);
//
ArrayList<Integer> n = new ArrayList<Integer>();
for (int i = 1; i <=108; i++) { // :<= , !
n.add(i);
}
//
Collections.shuffle(n);
//
// ,
// !!!
//
TreeMap<Integer,String> p1 = new TreeMap<Integer, String>();
TreeMap<Integer,String> p2 = new TreeMap<Integer, String>();
TreeMap<Integer,String> p3 = new TreeMap<Integer, String>();
TreeMap<Integer,String> p4 = new TreeMap<Integer, String>();
TreeMap<Integer,String> dipai = new TreeMap<Integer, String>();
//
for (int i = 0; i < n.size(); i++) {
if (i>=n.size()-8) {
dipai.put(n.get(i), hashMap.get(n.get(i)));
}
else {
if (i%4==0) {
p1.put(n.get(i), hashMap.get(n.get(i)));
}
else if (i%4==1) {
p2.put(n.get(i), hashMap.get(n.get(i)));
}
else if (i%4==2) {
p3.put(n.get(i), hashMap.get(n.get(i)));
}
else if (i%4==3) {
p4.put(n.get(i), hashMap.get(n.get(i)));
}
}
}
System.out.println("=================");
System.out.println(p1);
System.out.println(p2);
System.out.println(p3);
System.out.println(p4);
System.out.println(dipai);
// ,
System.out.println("=================");
// treeMap collection , , keyset set
method(p1);
method(p2);
method(p3);
method(p4);
method(dipai);
}
// hashMap
public static void method(TreeMap<Integer,String> tree){
Collection<String> values = tree.values();
for (String string : values) {
System.out.print(string+" ");
}
System.out.println();
}
}
まとめ:以上の2つの小さなプログラムを通じて、集合の中で同じ需要を実現する方法は多くの種類があり、集合ツール類が提供する方法を柔軟に運用して必要な効果を迅速に達成することができることを発見した.