游戏金币系统
2017-09-02 11:42
211 查看
题目:
现在要你定义一种资源,叫玩家货币PlayerCoin类,这个类是这样的,包括金银铜三种币。其中1000铜币=1银币,1000银币=1金币,铜币和银币在超过1000的情况下就需要自动转换为其它资源。
现在要你设计这么一个类。需要实现资源的创建,表示(打印),资源增加,减少,以及倍乘(总资源翻一定倍数)
思路:
1、实现金币的加法比较容易,但是减法可以使用转换为铜币进行减法处理
2、可以设置两个通用的方法,对货币进行转换(转换为金银铜、转为铜币)
3、把类的方法当做接口,提供给用户使用
问题:
1、当金币数量太多,铜币转换可能溢出
2、拓展性不强,应该引入变长参数
实现:
现在要你定义一种资源,叫玩家货币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; } }
相关文章推荐
- 试写游戏中金币系统解决方案
- 缓存系统在游戏业务中的特异性
- 网络游戏经济系统的平衡性测试
- php网页游戏开发教程二(游戏模式+系统)
- 缓存系统在游戏业务中的特异性
- win10系统中百度卫士做任务不加金币了怎么办?
- 理解 组件-实体-系统 (ECS \CES)游戏编程模型
- 强大的APEX系统 游戏中质感的布料材质
- 【iOS-Cocos2d游戏开发之十】添加粒子特效并解决粒子系统特效与Layer之间的坐标问题;
- 开发者可以在Codewars上面学习各种编程语言,Codewars的奖励系统激励程序员们像打游戏升级一样地做习题。
- 对三类软件(游戏,系统,工具)的分析与心得(软件工程第一次作业)
- 【Visual C++】游戏开发五十 浅墨DirectX教程十八 雪花飞扬:实现唯美的粒子系统
- 游戏开发中使用简体和繁体之多语言系统设计
- 【Unity3D实战】RPG黑暗之光:游戏分解及各系统的实现
- 游戏视野系统算法 (FOV using recursive shadowcasting)
- 这阵子使用kbengine+unity做的游戏(mmo物品系统,装备系统,战斗系统,聊天系统完成)
- 《MFC游戏开发》笔记八 游戏特效的实现(二):粒子系统
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 【Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)! 推荐
- 仙剑类游戏系统分析第二篇