Case-Ausdrücke müssen konstanter Ausdruck
Habe einige Probleme mit der Verarbeitung von Sprache, wo es heißt, die case-Ausdrücke müssen den Konstanten, aber ich hätte schwören können, Sie waren. Ich weiß nicht, was ich falsch mache hier. Jemand ein paar Tipps?
int gameState;
static int MENU = 0;
static int GAME = 1;
static int OPTIONS = 2;
void setup() {
screenSizex = 960;
screenSizey = 640;
size(screenSizex, screenSizey);
gameState = MENU;
}
void draw(){
switch(gameState) {
case MENU:
//does menu stuff
break;
case OPTIONS:
//does options stuff
break;
case GAME:
//does game stuff
break;
default:
break;
}
}
void mousePressed() {
if (//over some object) {
gameState = GAME;
}
else if (//over some object) {
gameState = OPTIONS;
}
else if (//over some object) {
exit();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
static
macht einfach Felder gehören zu der Klasse statt einer Instanz der Klasse. Ein statisches Feld kann jederzeit geändert werden, es ist also nicht konstant. Sie brauchen, um die Felderfinal
wenn Sie wollen, dass Sie behandelt werden als Konstante Werte:Kennzeichnung der Felder als
static final
bedeutet, dass Sie beide existieren in der Klasse (Sie gehören nicht auf eine bestimmte Instanz der Klasse, noch müssen Sie eine Instanz zum Zugriff auf die Werte) und kann nicht geändert werden, nachdem die Initialisierung (effektiv machen die Werte konstant).Aber ich denke, das wäre wirklich ein guter Ort für Sie eine enumeration-Typ. Hier ist, wie würde ich ändern, das Spiel Zustand Erklärung:
Und hier ist, was Sie hätte tun können, um den rest des Codes zu arbeiten:
Grundsätzlich alles was ich ändern musste war das hinzufügen einer Qualifikation
GameState.
vor alle stellenMENU
,GAME
undOPTION
mit Ausnahme von denen, in diecase
Aussagen, da der compiler kann daraus schließen, dass diese Werte vonGameState
basierend auf dem Typ des Ausdrucks, die in derswitch
. Mit einemenum
statt einerint
hat den zusätzlichen Vorteil, dass es schränkt den Wert dergameState
nur die 3 gültige Werte, anstatt den gesamten Bereich von Ganzzahlen.