Java控制檯小專案——我的SSR
阿新 • • 發佈:2018-12-22
主要是陣列的增刪改查,以及排序的運用
卡牌類
public class Cards { private String talent; //卡牌品質--> R SR SSR private String name; //卡牌角色 private String element; //元素屬性-->金木水火土 private int level; //卡牌等級 //構造方法 public Cards() { } public Cards(String talent,String name,String element,int level) { this.talent = talent; this.name = name; this.element = element; this.setLevel(level); } public String getTalent() { return talent; } public void setTalent(String talent) { this.talent = talent; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getElement() { return element; } public void setElement(String element) { this.element = element; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } }
系統卡池–>包含概率抽卡的方法
package com.clk.myssr; public class CardPool { int count = 10; private Cards[] cardSSR = new Cards[5]; private Cards[] cardSR = new Cards[4]; private Cards[] cardR = new Cards[8]; public CardPool() { cardSSR[0] = new Cards("SSR" , "金烏" , "火" , 0); cardSSR[1] = new Cards("SRR" , "弈秋" , "金" , 0); cardSSR[2] = new Cards("SSR" , "河伯" , "水" , 0); cardSSR[3] = new Cards("SRR" , "風伯" , "木" , 0); cardSSR[4] = new Cards("SRR" , "酸與" , "土" , 0); cardSR[0] = new Cards("SR" , "溪囊" , "火" , 0); cardSR[1] = new Cards("SR" , "劍聖" , "金" , 0); cardSR[2] = new Cards("SR" , "兔爺" , "木" , 0); cardSR[3] = new Cards("SR" , "掃晴" , "土" , 0); cardR[0] = new Cards("R" , "狐靈" , "火" , 0); cardR[1] = new Cards("R" , "鏡妖" , "金" , 0); cardR[2] = new Cards("R" , "木靈" , "木" , 0); cardR[3] = new Cards("R" , "鼓妖" , "土" , 0); cardR[4] = new Cards("R" , "燈籠" , "火" , 0); cardR[5] = new Cards("R" , "阿蟾" , "金" , 0); cardR[6] = new Cards("R" , "樹精" , "木" , 0); cardR[7] = new Cards("R" , "龜靈" , "水" , 0); } //概率抽卡 public Cards getCard() { if(count == 0) { System.out.println("當前抽卡次數為: 0,選擇分解一張卡片可換取一次抽卡機會!"); return null; } else { System.out.printf("當前抽卡次數:%d\n",count); System.out.printf("剩餘抽卡次數:%d\n",count - 1); } int i = (int)(Math.random() * 99 + 1); if(i <= 2) { int j = (int)(Math.random() * 4); switch(j) { case 0: System.out.println("哇!運氣爆棚!抽到了" + "【" + cardSSR[0].getTalent() + cardSSR[0].getName() + "】!"); count--; return cardSSR[0]; case 1: System.out.println("抽到了" + "【" + cardSSR[1].getTalent() + cardSSR[1].getName() + "】!"); count--; return cardSSR[1]; case 2: System.out.println("抽到了" + "【" + cardSSR[2].getTalent() + cardSSR[2].getName() + "】!"); count--; return cardSSR[2]; case 3: System.out.println("抽到了" + "【" + cardSSR[3].getTalent() + cardSSR[3].getName() + "】!"); count--; return cardSSR[3]; case 4: System.out.println("抽到了" + "【" + cardSSR[4].getTalent() + cardSSR[4].getName() + "】!"); count--; return cardSSR[4]; } } else if(i > 2 && i <= 30 ) { int j = (int)(Math.random() * 3); switch(j) { case 0: System.out.println("抽到了" + "【" + cardSR[0].getTalent() + cardSR[0].getName() + "】!"); count--; return cardSR[0]; case 1: System.out.println("抽到了" + "【" + cardSR[1].getTalent() + cardSR[1].getName() + "】!"); count--; return cardSR[1]; case 2: System.out.println("抽到了" + "【" + cardSR[2].getTalent() + cardSR[2].getName() + "】!"); count--; return cardSR[2]; case 3: System.out.println("抽到了" + "【" + cardSR[3].getTalent() + cardSR[3].getName() + "】!"); count--; return cardSR[3]; } } else { int j = (int)(Math.random() * 8); switch(j) { case 0: System.out.println("抽到了" + "【" + cardR[0].getTalent() + cardR[0].getName() + "】!"); count--; return cardR[0]; case 1: System.out.println("抽到了" + "【" + cardR[1].getTalent() + cardR[1].getName() + "】!"); count--; return cardR[1]; case 2: System.out.println("抽到了" + "【" + cardR[2].getTalent() + cardR[2].getName() + "】!"); count--; return cardR[2]; case 3: System.out.println("抽到了" + "【" + cardR[3].getTalent() + cardR[3].getName() + "】!"); count--; return cardR[3]; case 4: System.out.println("抽到了" + "【" + cardR[0].getTalent() + cardR[0].getName() + "】!"); count--; return cardR[0]; case 5: System.out.println("抽到了" + "【" + cardR[1].getTalent() + cardR[1].getName() + "】!"); count--; return cardR[1]; case 6: System.out.println("抽到了" + "【" + cardR[2].getTalent() + cardR[2].getName() + "】!"); count--; return cardR[2]; case 7: System.out.println("抽到了" + "【" + cardR[3].getTalent() + cardR[3].getName() + "】!"); count--; return cardR[3]; case 8: System.out.println("抽到了" + "【" + cardR[3].getTalent() + cardR[3].getName() + "】!"); count--; return cardR[3]; } } return null; } }
卡牌功能類
public class CardsManager { private Cards[] my_cards = new Cards[100]; private int count = 0; public Cards[] getMyCards() { return my_cards; } //抽取卡牌 public void add(Cards card) { if(card != null) { if(get(card.getName()) != null) { get(card.getName()).setLevel(get(card.getName()).getLevel() + 10); System.out.println("你已經擁有該卡牌"); System.out.println("卡牌【" + card.getName() + "】等級 + 10"); } else { my_cards[count] = card; count++; } } } //分解卡牌 public void remove(String name) { if(count == 0) { System.out.println("你沒有卡牌可分解"); return; } for(int i = 0; i < count;i++) { if(my_cards[i].getName().equals(name)) { System.out.println("分解了卡牌【" + my_cards[i].getName() + "】,抽卡次數 + 1"); count--; for(int j = i;j < count;j++) { my_cards[j] = my_cards[j+1]; } break; } } } //檢視卡牌 public void find(Cards[] card) { Cards[] sort_cards = new Cards[count]; System.out.println("你的卡牌數量:" + count); System.out.println("品質 妖靈 屬性 等級"); if(count >= 2) { //排序 sort_cards = sortCards(card); } for(int i = 0; i < count;i++) { System.out.printf("%3s%6s%5s%6d\n",sort_cards[i].getTalent(),sort_cards[i].getName(),sort_cards[i].getElement(),sort_cards[i].getLevel()); } } //升級卡牌 public void update(String update_name,String unused_name) { Cards update_card = get(update_name); Cards unused_card = get(update_name); if(update_card != null && unused_card != null) { update_card.setLevel(update_card.getLevel() + unused_card.getLevel()); for(int i = 0; i < count;i++) { if(my_cards[i].getName().equals(unused_name)) { for(int j = i;j < count - 1;j++) { my_cards[j] = my_cards[j+1]; } break; } } System.out.println("卡牌【" + update_name + "】等級 + " + unused_card.getLevel()); } else { System.out.println("你沒有卡牌可升級"); } } //查詢 public Cards get(String name) { for(int i = 0; i < count;i++) { if(my_cards[i].getName().equals(name)) { return my_cards[i]; } } return null; } //按卡牌品質排序,相同品質卡牌按等級排序 public Cards[] sortCards(Cards[] card) { for(int i = 0;i < count - 1;i++) { for(int j = 0;j < count - i - 1;j++){ if(card[j].getTalent().length() < card[j + 1].getTalent().length()) { Cards temp = new Cards(); temp.setTalent(card[j].getTalent()); temp.setName(card[j].getName()); temp.setElement(card[j].getElement()); temp.setLevel(card[j].getLevel()); card[j].setTalent(card[j+1].getTalent()); card[j].setName(card[j+1].getName()); card[j].setElement(card[j+1].getElement()); card[j].setLevel(card[j+1].getLevel()); card[j+1].setTalent(temp.getTalent()); card[j+1].setName(temp.getName()); card[j+1].setElement(temp.getElement()); card[j+1].setLevel(temp.getLevel()); } } } for(int i = 0;i < count - 1;i++) { for(int j = 0;j < count - i - 1;j++){ if(card[j].getTalent().length() == card[j + 1].getTalent().length() && card[j].getLevel() < card[j + 1].getLevel()) { Cards temp1 = new Cards(); temp1.setTalent(card[j].getTalent()); temp1.setName(card[j].getName()); temp1.setElement(card[j].getElement()); temp1.setLevel(card[j].getLevel()); card[j].setTalent(card[j+1].getTalent()); card[j].setName(card[j+1].getName()); card[j].setElement(card[j+1].getElement()); card[j].setLevel(card[j+1].getLevel()); card[j+1].setTalent(temp1.getTalent()); card[j+1].setName(temp1.getName()); card[j+1].setElement(temp1.getElement()); card[j+1].setLevel(temp1.getLevel()); } } } return card; } }
檢視類
public class View
{
CardsManager cm = new CardsManager();
CardPool cp = new CardPool();
public void mainView() {
System.out.println("----------------------------------------");
System.out.println("| 我的SSR |");
System.out.print("| 你沒有玩過的船新版本,只需體驗兩分|\n"
+ "|鍾,你就會愛上這個遊戲! |\n");
System.out.println("----------------------------------------");
System.out.print("\n [Y]開始遊戲\n");
System.out.println(" [N]殘忍退出");
System.out.println("輸入Y/N:");
}
public void gameView(String choose) {
Scanner sc = new Scanner(System.in);
switch(choose) {
case "Y":
System.out.println("\n歡迎來到這個“玄不救非 氪不改命”的世界!");
while(true) {
System.out.println("----------------------------------------");
System.out.println("1、抽卡");
System.out.println("2、分解卡牌");
System.out.println("3、檢視卡牌");
System.out.println("4、升級卡牌");
System.out.println("5、要上課忍痛離開");
System.out.println("----------------------------------------");
System.out.println("輸入選擇(1-4):");
int cs = sc.nextInt();
switch(cs) {
case 1:
System.out.println("溫馨提示:抽卡前先洗臉");
cm.add(cp.getCard());
break;
case 2:
System.out.println("溫馨提示:分解卡牌可獲得抽卡次數");
System.out.println("要刪除的卡牌:[妖靈名字]");
String remove_name = sc.next();
cm.remove(remove_name);
cp.count++;
break;
case 3:
cm.find(cm.getMyCards());
break;
case 4:
System.out.println("溫馨提示:通過吸收卡牌升級");
System.out.println("要升級的卡牌:[妖靈名字]");
String update_name = sc.next();
System.out.println("要吸收的卡牌:[妖靈名字]");
String unused_name = sc.next();
cm.update(update_name, unused_name);
break;
case 5:
System.exit(0);
}
}
case "N":
System.exit(0);
}
}
}
主類
public class MySSR
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
View v = new View();
v.mainView();
String choose = sc.next();
v.gameView(choose);
sc.close();
}
}
執行測試
----------------------------------------
| 我的SSR |
| 你沒有玩過的船新版本,只需體驗兩分|
|鍾,你就會愛上這個遊戲! |
----------------------------------------
[Y]開始遊戲
[N]殘忍退出
輸入Y/N:
Y
歡迎來到這個“玄不救非 氪不改命”的世界!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:10
剩餘抽卡次數:9
抽到了【R木靈】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:9
剩餘抽卡次數:8
抽到了【SR兔爺】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:8
剩餘抽卡次數:7
抽到了【SR溪囊】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:7
剩餘抽卡次數:6
抽到了【SR溪囊】!
你已經擁有該卡牌
卡牌【溪囊】等級 + 10
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:6
剩餘抽卡次數:5
抽到了【R鼓妖】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:5
剩餘抽卡次數:4
抽到了【R木靈】!
你已經擁有該卡牌
卡牌【木靈】等級 + 10
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:4
剩餘抽卡次數:3
抽到了【R鏡妖】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:3
剩餘抽卡次數:2
抽到了【R鼓妖】!
你已經擁有該卡牌
卡牌【鼓妖】等級 + 10
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:2
剩餘抽卡次數:1
抽到了【SR劍聖】!
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
1
溫馨提示:抽卡前先洗臉
當前抽卡次數:1
剩餘抽卡次數:0
抽到了【R鼓妖】!
你已經擁有該卡牌
卡牌【鼓妖】等級 + 10
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
3
你的卡牌數量:6
品質 妖靈 屬性 等級
SR 溪囊 火 10
SR 兔爺 木 0
SR 劍聖 金 0
R 鼓妖 土 20
R 木靈 木 10
R 鏡妖 金 0
----------------------------------------
1、抽卡
2、分解卡牌
3、檢視卡牌
4、升級卡牌
5、要上課忍痛離開
----------------------------------------
輸入選擇(1-4):
還是一如既往的臉黑,目前沒有副本功能,學一點寫一點。