Есть ли у кого-нибудь хороший учебник по управлению государственным языком на Java? Я рассматривал это в течение последних нескольких дней, и все, что я встречаю, похоже, не работает должным образом для того, что мне нужно для этого. Мне нужно, чтобы он мог вводить пользователя, а затем переключиться с состояния заголовка на состояние игры. Заранее спасибо.Управление Java Game State
ответ
Я укажу вам в правильном направлении, предоставив вам кусочек жаргона, который нужно искать: «Конечный автомат». Для игровых меню достаточно FSM. Теперь, когда вы знаете слово «buzz», вы можете найти массу примеров просто по поиску. Хотя основная идея очень проста, существует множество различных реализаций. Просто помните, что такая система для переходов состояния игры не должна быть такой экстремальной.
Я лично видел всевозможные вещи из перестроенных многомерных состояний, переходящих в гигантский оператор переключения тысяч строк.
Для основной игры без потоковой передачи или сумасшедший игровых прерываний, вы, вероятно, следует искать подход объектно-ориентированного не более сложной, чем это:
public enum GameState {
TITLE_STATE = 0,
MAINGAME_STATE,
PAUSE_STATE,
}
void GameStateUpdate() {
// handle update
switch(m_curState) {
case TITLE_STATE:
UpdateTitleScreen();
if(UserPressesEnter()) {
m_curState = MAINGAME_STATE;
}
break;
case MAINGAME_STATE:
UpdateMainGame();
if(UserPressesPause()) {
m_curState = PAUSE_STATE;
}
break;
case PAUSE_STATE:
UpdatePause();
if(UserDoneWithPause()) {
m_curState = MAINGAME_STATE;
}
break;
}
}
Работа от чего-то вроде этого, и посмотреть, если вы можете добавить переходные состояния для таких вещей, как всплывающее меню и пауза, или вступительный ролик перед запуском «MAINGAME_STATE».
Перечисления - это путь к состояниям. Проверьте это: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
Я понимаю, что Enums, но заставить их работать с JFrame, методы рисования и обновления меня смущают. – x3zinja12
Возможно, вам больше повезло на [gamedev.stackexchange.com] (http://gamedev.stackexchange.com/) – drew010
Yea. Я проверил там, но не много вещей в java и много говорят о том, как это сделать. – x3zinja12