Java控制台小项目——我的SSR

主要是数组的增删改查,以及排序的运用

卡牌类

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):

还是一如既往的脸黑,目前没有副本功能,学一点写一点。

猜你喜欢

转载自blog.csdn.net/weixin_43574957/article/details/85082039