gpt4 book ai didi

java - 在对游戏位置进行编码时,最适合使用什么类型的变量? boolean/字符串/其他? (java)

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:13 25 4
gpt4 key购买 nike

第一篇文章,所以我希望这是该站点的适当类型问题。如果没有的话,如果有人可以将我带到更合适的地方,我将不胜感激。我是编程新手。我上高中时有点学,最近决定重新学习,开始使用Eclipse在Java7中制作基于文本的生存游戏。

现在,我正在编码位置超类。我需要帮助的特殊功能是:它需要能够跟踪用户当前“处于” 9个区域中的哪个区域(然后将其用于许多其他目的的许多其他用途)。还包括接受用户输入以移至新区域的功能,等等。)我开始的方法是为每个区域创建一个布尔变量,并且每当发生过渡时,将该变量设置为true。但是现在我想知道这是否是最有效的方法。我必须接受String输入,运行一种方法来将各种可接受的答案标准化为一个,然后通过switch语句来运行它,使对应的布尔变量为true?

仅用一个设置为玩家所在区域的String变量来简单地跟踪位置,会更简单吗?还是在编码时更可能导致错误或复杂化?数组会更好地满足这种需求吗?编辑:(我只想感谢你们这样一个开放和有用的社区的人们。它非常感谢。)

大编辑:我想进一步阐述该地区最终将做什么。在每个区域中,最终用户都会去到少数几个地方,这些地方都是普通的,每个地方都有少量的地方。其他主要的超类将根据用户所在的区域进行更改(例如:我的“遇到”超类将具有变量,该变量指示某些相遇发生的可能性(即发生敌对攻击的机会),并且这些变量将根据该区域),还可以通过其他实例(“时间”超类将跟踪日期和时间,这也会影响“遇到者”中的变量。)当前的计划是为每个通用场所创建一个类(即,沃尔玛,技术商店,杂货店,公园等)。根据地区的不同,它们将包含不同的属性,并且还会影响“遭遇”等类。我将根据用户所在的区域通过if / else&switch语句定义它们的属性。但是现在我意识到,在创建对象时定义它们的属性会更有意义。

虽然很多人引导我使用枚举,但也有人建议我为每个区域设置班级(并且我也听说过接口。)如果我选择第二条路线,则我有3个问题:(a)如果区域类都是“位置”的子类,那么我为区域类(即沃尔玛)中的所有通用场所创建对象不会有问题,因为沃尔玛类只能属于一个超类吗? (如果不是,则在一个类中创建的对象与超类及其子类之间的实际关系有什么区别)(b)如果我将每个区域初始化为一个对象,而不是简单地使用变量记录它,我将如何实现记住用户所在区域的原始任务(对于像打印该区域那样简单的功能,以对诸如“遇到者”之类的变量进行更改)。我是否仍需要某种变量来标识区域?如果是这样,那么为该地区创建类的实际目的是什么? (我可以看到,通过容纳与“遇到者”进行交互的变量,而不是不得不在“遇到者”类中使用if / else / switch语句,这可能仍然使我更加代码清晰(在这种情况下,如何使区域类中的变量与“遇到者”中的变量交互,因为它们都不属于彼此)而是其他东西?)(c)为每个区域或单个区域类创建在初始化时定义不同的类是否更有意义?和为什么?

最后,我知道我可能问了太多问题,但是有人可以向我解释一下枚举和接口中发现的不同实用程序(我对听说枚举特别感兴趣),现在您知道的更多了,我应该使用枚举,接口或区域的某种类?非常感谢你们!

最佳答案

正如Vasily Liaskovsky所说,强烈建议枚举。
使用int也是一种很好的方法。例如:

int currentRegion;
static final int region1 = 0;
static final int region2 = 1;
static final int region3 = 2;
etc...


确保将region1等声明为final,以便以后不能更改其ID,如果您使用的是多个位置超类对象,则静态引用可以节省内存,并且在类外也可以轻松访问。
用这种方法检查您是否在某个区域中,只需使用if语句:

if(currentRegion == region1) {}


要设置它:

currentRegion = region1;


就那么简单

关于java - 在对游戏位置进行编码时,最适合使用什么类型的变量? boolean/字符串/其他? (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com