Trending
Opinion: How will Project 2025 impact game developers?
The Heritage Foundation's manifesto for the possible next administration could do great harm to many, including large portions of the game development community.
Monolithic. Starting simple.
We'll start the game engine with some simple games like hangman, memory, mine finder, multiply, match3, … One important characteristic is that they don't need any type of collision detection, no need of high FPS, and they are basically event driven. The user takes an action and the game reacts to that action/event.
I don't have a predefined architecture with all the details, we will start with a monolithic game and we will start to refactor it.
The first game is “hangman”, very simple:
Game initialization
select random word
set the number of attempts
Game loop
User input
Logic check
Win/Lose check
Output
Game close
Our main dependencies are the input/output system, in the first attempt they will be the console (System.in(Scanner) and System.out) later we will decouple that to allow any input/output system.
At the moment, we will use a classic game loop, no events at the moment, all tightly couple :(
Monolithic code
package manager; import java.util.Scanner; import hangman.Play; public class Monolithic { public static void main(String[] args) { // 1. Game initialization System.out.println("HANGMAN. New Play."); int attempts = 7; Play hangman = new Play(attempts); String word = hangman.GetCurrentRevealedWord('_'); System.out.println(">>> " + word + " <<<"); // 2. Game loop boolean success = false; Scanner in = new Scanner(System.in); while (attempts > 0 && !success) { // 2.1 User input char mchar = in.nextLine().charAt(0); // 2.2 Logic check boolean result = hangman.Try(mchar); // 2.3 Win/Lose check success = hangman.isWordCompleatedRevealed(); // 2.4 Output if ( true == result ) { word = hangman.GetCurrentRevealedWord('_'); System.out.println(">>> " + word + " <<<"); if ( success ) { System.out.println("YOU WIN"); } } else { attempts--; if ( attempts > 0 ) { System.out.println("try again. " + attempts + " left."); } else { System.out.println("You lose. It was " + hangman.GetSecretWord()); } } } in.close(); // 3. Game close } }
Play 1: win
HANGMAN. New Play. >>> _ _ _ _ _ _ _ _ _ _ <<< e >>> _ _ _ _ _ _ _ e e _ <<< a >>> _ a _ _ _ _ _ e e _ <<< t >>> _ a _ _ _ _ t e e _ <<< s >>> _ a _ _ _ s t e e _ <<< b try again. 6 left. c try again. 5 left. h try again. 4 left. p try again. 3 left. n >>> _ a n _ _ s t e e n <<< o >>> _ a n _ o s t e e n <<< m >>> m a n _ o s t e e n <<< g >>> m a n g o s t e e n <<< YOU WIN
Play 2: lose
HANGMAN. New Play. >>> _ _ _ _ _ _ _ _ _ _ <<< e >>> _ _ e _ e _ _ _ _ e <<< a try again. 6 left. i >>> _ _ e _ e _ _ i _ e <<< p try again. 5 left. s try again. 4 left. r try again. 3 left. y try again. 2 left. c >>> c _ e _ e _ _ i _ e <<< l >>> c l e _ e _ _ i _ e <<< m >>> c l e m e _ _ i _ e <<< q try again. 1 left. z You lose. It was clementine
Note: I will use Java.
Read more about:
BlogsYou May Also Like