小编Nim*_*nim的帖子

面向对象的设计 - 法术

我正在开发我的第一个Java项目,这是一个基本的角色扮演游戏.现在我处理法术,我需要一些OOD指导.

我有Character,这是一个abstract class.Character有一些subclasses(如mage,fighter,rogue,cleric).

Magecleric(作为now,牧师没有法力,但它可能会改变)都拼写脚轮.

我也有一个Spell班,有一些信息(如spell name,mana cost等).MageSpellsList并且ClericSpellsList是另一个类,并且都有类法术列表.而且我也有Effects课(施放咒语应该使用它).

什么是一个很好的面向对象设计来处理法术(解决方案不应该包括Effects类,我可以稍后处理)?

也许使用"SpellCaster"界面和一些方法,比如castSpell和showSpellbook,那么Mage和Cleric会实现这个界面吗?.

也许MageSpellsList和ClericSpellsList应该是Spell的子类?我的目标是使用castSpell("spell name here")并让castSpell通过使用一个好的OOD来完成这项工作,而不是为每个法术编写一个特定的方法(并且在mage和Cleric之间没有重复的代码)

Mage.java:

public class Mage extends Character {

    private List<Spell> spellBook;
    private int mana;
    private int CurrentMana;

    public Mage(String name) {

        super(name);

        setName(name);
        setCharacterClass("Mage");
        setLevel(1);
        setHitDice(4);

        setStrength(10);
        setConstitution(10);
        setDexterity(14);
        setIntelligence(16);
        setWisdom(14);
        setCharisma(10); …
Run Code Online (Sandbox Code Playgroud)

java oop

7
推荐指数
1
解决办法
1478
查看次数

Java - 使用列表迭代器返回对链表中特定位置的引用

我有一个投资组合类,也有投资类的链表(例如 - 谷歌是投资的一个实例),每个投资都有一个交易历史(另一个链表),每个交易的数据.

当用户想要进行交易(以5K购买谷歌股票)时,我需要找出投资(在谷歌中)是否已经存在于投资列表中.如果没有 - 添加新的投资(并为其交易历史添加交易),如果确实如此 - 只需添加另一个链接到谷歌的tradeHistory链表.

问题 - 我需要findInvestment方法从投资列表返回对谷歌(投资实例)的引用,以便我可以更新其交易历史.该方法返回一个listIterator而不是对investmentList中的位置的引用(应该是投资类).我该如何纠正findInvestment?(发现= iter错了)

public class Portfolio {


private LinkedList<Investment> investmentsList;

public Portfolio() {
    investmentsList = new LinkedList<Investment>();
}

public void addInvestment(String symbol, double money){

    Investment invest = findInvestment(symbol);
    if (invest == null) {
        System.out.println("symbol does not exist");
        getInvestmentsList().add(new Investment(symbol,money));
        System.out.println("New invetment has been added to your portfolio - " +symbol);
    } else {
        invest.addTrade(symbol,money);
        System.out.println("A new trade has been added to the current investment - " + symbol);

    }
}

public …
Run Code Online (Sandbox Code Playgroud)

java iterator data-structures

6
推荐指数
1
解决办法
143
查看次数

java返回方法中的数组

我正在用java做我的第一步,所以我的问题很简单 - 我有一个包含8个整数的数组,我想返回一个包含原始数组中奇数索引元素的数组.减速方法有什么问题?任何其他实施技巧将不胜感激.

PS - 我知道我不必在这里使用方法,它只是用于练习.

package com.tau;

public class Main {


    public static void main(String[] args) {

        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};


        System.out.println("1.e odd index numbers in array : " + oddIndex(arr));

        int j = 0;
        public static int[] oddIndex(int[] array){
            int newArrSize = array.length;
            if ((newArrSize % 2) != 0) {
                newArrSize--;
            }

            int[] newArr = new int[newArrSize];

            for (int i = 0; i < array.length; i++)
                if ((array[i] % 2) == …
Run Code Online (Sandbox Code Playgroud)

java arrays methods

5
推荐指数
2
解决办法
5836
查看次数

面向对象的设计 - 当一个类中有大量数据字段时,封装有多重要?

我有一个关于封装的问题:

当一个类有很多数据字段时,是否建议使用封装?

使用以下类作为示例:

abstract public class Character {
    private String name;
    private String characterClass;
    private int level;
    private int hitDice;

    private int strength;
    private int constitution;
    private int dexterity;
    private int intelligence;
    private int wisdom;
    private int charisma;

    private int hp;
    private int currentHp;
    private int armorClass;
    private int BaseAttackBonus;

    private long xp;
    private double gp;

    private Inventory inventory;
    private double carriedWeight;

    private Equipment equipment;

    protected Character(String name) {

        setName(name);
        setCharacterClass("Class");
        setLevel(1);
        setHitDice(0);

        setStrength(10);
        setConstitution(10);
        setDexterity(10);
        setIntelligence(10);
        setWisdom(10);
        setCharisma(10);

        setHp((int) …
Run Code Online (Sandbox Code Playgroud)

java oop encapsulation

5
推荐指数
1
解决办法
225
查看次数

面向对象的设计 - 何时使用getClass和instanceof

在大学讲座讲师说,使用getClassinstanceof表明一个糟糕的设计.

什么是不良设计的示例用法?使用这些方法可能导致什么问题?这些方法是否有任何有效的用法,这些设计都不错?

java oop

4
推荐指数
1
解决办法
147
查看次数

Google Cloud - 将数据从存储桶下载到实例

我正在尝试将谷歌云上的存储桶(跟踪数据)中的全部数据下载到 Linux 系统上的实例(实例 1)。

我在这里看到了一些选项:https : //cloud.google.com/compute/docs/instances/transfer-files#transfergcloud 但我不确定有没有办法从存储桶下载到实例。

我正在通过我的终端访问我的实例,并且我已经使用 gsutil 进行了几次尝试,但到目前为止还没有成功。知道如何将整个存储桶下载到我的实例中吗?(最好将它放在 MDNet/data 中,我还没有这样的目录,但我可能应该将数据存储在那里)。

google-cloud-platform

1
推荐指数
1
解决办法
1468
查看次数