主要是数组的增删改查,以及排序的运用
卡牌类
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):
还是一如既往的脸黑,目前没有副本功能,学一点写一点。