在我的应用程序(这是一个Android游戏)中,我有一个方法可以检查玩家是否还活着,如果没有,运行一个动画,游戏就结束了。
根据玩家的输球方式,目前有3种不同的动画可用。
例如,它们可能从屏幕上掉下来,撞到一只鸟,或者被从天上掉下来的东西压扁。每一个都有不同的动画。
基本上,我正在做的是:
当玩家输球时,我设置了它发生的方法,例如,如果他们被鸟击中:
hero.setKilledBy(hero.HITBIRD);
然后我通过在我的check Gameover()方法中切换来执行此操作。但是,我很困惑。我必须这样检查它:(注意,在我的情况下,我必须输入0、1、2):
switch(hero.killedBy()){
case 0: {
fallOffScreenAnimation();break;
}
case 1: {
hitBirdAnimation();break;
}
case 2: {
squashedAnimation();
}
}
在我的英雄对象类中,我有以下方法
int killedBy;
final int FELLOFFSCREEN = 0;
final int HITBIRD = 1;
final int SQUASHED = 2;
int killedBy(){
return killedBy;
}
int setKilledBy(int value){
killedBy = value;
}
所以,我的问题是,为什么我不能做这样的事情:
switch(hero.killedBy()){
case hero.HITBIRD {
fallOffScreenAnimation();break;
}
//............... and so on.......
在Switch语句中,我的英雄对象无法识别?为什么会这样?如果我只是键入它,(case英雄。HITBIRD),我会得到这个错误:
大小写表达式必须是常量表达式
显然,为了可读性,我更喜欢使用我设置的变量名,而不是原始的数值。。。。。。
使您的int
常量为静态:
final static int FELLOFFSCREEN = 0;
final static int HITBIRD = 1;
final static int SQUASHED = 2;
作为类常量,在创建Hero实例之前可用和已知的值。
但是,由于这些原因,我将使这些枚举,或者打开它,或者在枚举上有方法,当英雄因为它而死亡时采取什么行动,从而完全避免切换。
您只能在案例中使用常量。您的变量是实例变量,而不是常量。每个英雄都有这些变量的副本。它们应该声明为:
static final int FELLOFFSCREEN = 0;
static final int HITBIRD = 1;
static final int SQUASHED = 2;
您应该使用类名而不是对象来访问它们:
case Hero.HITBIRD {
(假设类名为Hero)。
请注意,您可能应该用枚举替换这些常量:
public enum HeroDeathCause {
FELL_OFF_SCREEN, HIT_BIRD, SQUASHED
}
这是更安全的类型,更自我描述。
问题内容: 我知道我们不能像其他几种语言中那样在Java的if语句中使用赋值运算符。 那是 将给出编译错误。 但是以下代码可以正常工作,如何? 编辑:这是不能在if语句中使用赋值的例外规则。 问题答案: 因为赋值的“结果”是赋值的值,所以在第二种情况下它仍然是表达式。表达式要求条件是表达式,第二个但不是第一个满足。实际上,您的两个片段是: 和 通过该扩展是否可以编译第二个版本而不是第一个版本? 这
语句和语句块是 TJS2 语法中非常重要的元素。 语句 一个语句以 ; (分号) 结束。可以是表达式后直接加分号,也可以是 if 等控制语句后加分号。 例: a++; func1(); returna+b; 等等…… 语句块 语句块由多个语句组成,用{ }括起来表示。语句块中的语句按由上至下的顺序执行。 例: { a++; b++; } { vart=func1(); func2(t); b
我有一个包含两列的表:channels TEXT rowid INTEGER主键 我在通道上包含了一个索引创建唯一的索引通道\u在mytable上的索引(较低的通道)) 因此VisitToronto将与VisitToronto发生冲突 错误:重复键值违反了唯一约束channels_index详细信息:键(较低(单词))=(你好世界)已经存在。 我想不出阻止这种冲突的语法。冲突通道上的冲突不起作用约
本页包含内容: 循环语句 分支语句 带标签的语句 控制传递语句 在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式和声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。 循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会
语句 条件控制语句 其中expression可以使用整型,字符串,甚至表达式 if (expression0) {statement0} else if (expression1) {statement1} else {statement2} // JavaScript 中的 case 可以使用整型,字符串,甚至表达式 switch(persion.type) { case "teacher
着色器语言GLSL中关于if语句、for语句的使用,和javascript语言、C语言中的if语句、for语句执行逻辑规则基本一致,这里默认你已经有一定的编程基础,也就不做过多讲解,只是简单说明一下。 单独使用if if(x>100){ gl_FragColor = vec4(1.0,0.0,0.0,1.0);//红色 } if-else形式 bool colorBool; // 根据布尔值