您的位置:首页 > 其它

游戏金币系统

2017-09-02 11:42 211 查看
题目:
现在要你定义一种资源,叫玩家货币PlayerCoin类,这个类是这样的,包括金银铜三种币。其中1000铜币=1银币,1000银币=1金币,铜币和银币在超过1000的情况下就需要自动转换为其它资源。
现在要你设计这么一个类。需要实现资源的创建,表示(打印),资源增加,减少,以及倍乘(总资源翻一定倍数)

思路:
1、实现金币的加法比较容易,但是减法可以使用转换为铜币进行减法处理
2、可以设置两个通用的方法,对货币进行转换(转换为金银铜、转为铜币)
3、把类的方法当做接口,提供给用户使用

问题:
1、当金币数量太多,铜币转换可能溢出
2、拓展性不强,应该引入变长参数

实现:

package com.wut.wcz;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {
PlayerCoin player1 = new PlayerCoin(50, 900, 300);
PlayerCoin player2 = new PlayerCoin(100, 300, 50);
player1.Add(player2);
Show(player1);

PlayerCoin player3 = new PlayerCoin(50, 900, 300);
PlayerCoin player4 = new PlayerCoin(100, 300, 50);
player4.Reduce(player3);
Show(player3);

PlayerCoin player5 = new PlayerCoin(50, 900, 300);
player5.DoubleCoin(3);
Show(player5);

}
public static void Show(PlayerCoin player) {
System.out.println(player.getGold()+"金\t"+player.getSilverCoin()+"银\t"+player.getCopperCoin()+"铜");
}

}
package com.wut.wcz;

import java.util.Scanner;

public class PlayerCoin {
private long  gold = 0;
private long silverCoin = 0;
private long copperCoin = 0;
private void TranslateHigh() {//金币自动转换

while(copperCoin>999) {
silverCoin++;
copperCoin-=1000;
}
while(silverCoin>999) {
gold++;
silverCoin-=1000;
}
}
private void TranslateLow() {//金币转换为铜币
while(gold>0) {
silverCoin+=1000;
gold--;
}
while(silverCoin>0) {
copperCoin+=1000;
silverCoin--;
}
}
/*public void DoubleCoin() {//资源翻倍
System.out.println("请输入要增加的倍数:");
int multiple = input.nextInt();
TranslateLow();
copperCoin = copperCoin*multiple;
TranslateHigh();

}*/
/*public void MoneyAdd() {//资源增加
System.out.println("请输入您增加的金币数量");
gold+= input.nextInt();
System.out.println("请输入您增加银币的数量");
silverCoin+=input.nextInt();
System.out.println("请输入您增加的铜币的数量");
copperCoin+=input.nextInt();
TranslateHigh();
}*/
/*public void MoneyReduce() {//资源减少
System.out.println("请输入您减少的金币数量");
gold+= input.nextInt();
System.out.println("请输入您减少银币的数量");
silverCoin+=input.nextInt();
System.out.println("请输入您减少的铜币的数量");
copperCoin+=input.nextInt();
TranslateHigh();
}*/
public PlayerCoin(long gold, long silverCoin, long copperCoin) {
super();
this.gold = gold;
this.silverCoin = silverCoin;
this.copperCoin = copperCoin;
}
public PlayerCoin() {
super();
}

public void Add(PlayerCoin player2) {
// TODO Auto-generated method stub
this.copperCoin+=player2.copperCoin;
this.silverCoin+=player2.silverCoin;
this.gold+=player2.gold;
TranslateHigh();
}
public void Reduce(PlayerCoin player2){//把两者的金币数都转换为铜币数进行减法
player2.TranslateLow();
this.TranslateLow();
long num = this.copperCoin-=player2.copperCoin;
if(num<0) {
this.copperCoin = -this.copperCoin;

this.TranslateHigh();
this.copperCoin = -this.copperCoin;
this.silverCoin = -this.silverCoin;
this.gold = -this.gold;

}else {
TranslateHigh();
}

}
public void DoubleCoin(int multiple) {
this.TranslateLow();
this.copperCoin = this.copperCoin*multiple;
this.TranslateHigh();
}
public long getGold() {
return gold;
}
public long getSilverCoin() {
return silverCoin;
}
public long getCopperCoin() {
return copperCoin;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐