The player needs an easy-to-use UI and intuitive controls to interact with game objects. Keep in mind that ConKUeror is a computer game based on the board game RISK and, by design, is a strictly game-controlled environment. Because the game has many moving parts, a simple help page is not sufficient for users to understand it. Therefore, intentional use of attention-grabbing icons is necessary to represent objects such as the game deck, cards, chance card effects, and so on, as well as a straightforward user panel that displays all possible actions, wherever applicable and relevant. This is a principle that we actively utilize in designing the game.
Creating a captivating game environment requires effective system messages and announcements. For instance, when the game presents a chance card, the screen blurs out to focus the player's attention on the card's content. The message also includes big, relevant buttons for that chance card and a "skip" option. The panel always displays relevant information based on the current game setting and phase. During a player's turn, the panel shows easy-to-see buttons to exchange armies or use army and territory cards, but only if the player satisfies the requirements for doing so. This ensures that the user sees only the options they can use at that moment, rather than all of the game options at once.
The game can adapt to different numbers of players and user preferences. The game map can be modified according to the players' needs. Additionally, depending on the number of players, ConKUeror is designed to utilize different rule sets to provide a fair experience for all players.
Like any other application, ConKUeror is not immune to bugs and errors. If an error occurs, the system should display a message on the screen that includes the error, as well as a button to send the error to the developer. Additionally, the game should be saved and restarted to prevent the loss of user data.
To ensure security and reliability, the game should be built using one of the most popular and advanced programming languages in the development world: Java. This makes it highly reliable and secure, allows for system and architecture-independent game development, and eliminates unexpected behavior.
As mentioned, the game should be built using one of the most potent and high-performing languages available, utilizing a fast and flexible core library to make the game run smoothly even on low-end machines. Performance is also a priority for the user interface and animations. As a 2D board game, ConKUeror utilizes the reliable Java library Swing to implement all custom UI objects, animations, and user interactions, minimizing the risk of unnecessary resource usage.
Java's cross-platform capabilities, made possible by its support for JVM, allow it to run on any operating system. This is particularly helpful, as it would enable the development of a network gaming option in the future. Players with different machines and operating systems could play together and enjoy the same gaming experience.
The game should be packaged in a way that makes it easy to extend and customize. This would allow for easy additions of further chance cards and army types, new countries and continents, or even different game maps and themes.
ConKUeror uses only Java standard libraries and Swing. The custom UI components are also designed using these same libraries.

The infamous cover of the book, Structure and Interpretation of Computer Programs, but programmers are receiving messages from God — edited by AI.

God is pondering whilst writing his first computer program — generated by AI.

Game map with noticeably distinct colors for visual aid — generated by AI.
ConKUeror is being developed with the object-oriented programming (OOP) principles in mind. This means that the code is organized into objects that represent the game's entities, such as the game map, the game deck, and the player objects. OOP is also aligned with our “Modularity” principle, which means that the code is easier to read, maintain, and extend.
Some common OOP patterns used in the development of ConKUeror include inheritance and polymorphism. Inheritance is used to create subclasses of the army objects, such as the Infantry, Cavalry, and Artillery objects. Polymorphism is used to allow the game to handle different types of objects in a consistent way, such as when determining the outcome of an attack. Use of OOP principles allows for a more organized and efficient development process, resulting in a better game for the end user.
In the development of ConKUeror, we utilize the Model-View-Controller (MVC) design pattern. This pattern separates the application logic into three interconnected components: the model, the view, and the controller.
Domain, as specified in the section with the same name. All the underlying data and game logic — the model — are implemented in game objects, while the controller acts as the intermediary between the model and the view. App manages game flow, player turns, game state transitions, and so on, actively utilizing the Observer Pattern, as specified above.By separating the model from the view and the controller, we have created a modular and flexible design that allows for easier maintenance and extension of the game.
The controller pattern is actively used in ConKUeror to manage the application and game state. Both the App and the Game classes act as an intermediary between the model and the view, responsible for managing the game flow and providing the necessary data to the UI components. The Game class actively utilizes the Observer Pattern to ensure that the UI is updated whenever the game state changes.
The Game class also manages the various game components, such as the game deck, the game map, and the player objects. It ensures that these components are updated and managed correctly, and that the game logic is executed correctly.