1. How to write games on CodeGym
As you know, CodeGym has introduced a new feature: game writing. These tasks are substantially larger than normal tasks, and much more interesting. They are interesting not only to write, but also, um, to test. You understand what we're talking about ;) Work in the CodeGym offices literally ground to a halt for several days when we started the testing the game tasks :) Each game task is a project: a big task with twenty subtasks. When writing a game, you need to complete them in order. When the last subtask is done, your game is ready. It will use CodeGym's very simple game engine. Working with it is no more difficult than working with the console. You will find a description of the game engine and examples of how to use it in this document.2. Game engine features
The playing field is divided into cells by the game engine. The minimum size is 3x3; the maximum is 100x100. Each cell can be painted a certain color and some text can be written in it. The text size and text color can also be set for each cell. The engine makes it possible to write event handlers for mouse clicks and key presses. Another interesting thing is the ability to work with a timer. Learn more in the "Working with a timer" section. Our "obvious" game engine lets you create very interesting games — something you'll see for yourself. Want to try? Then read the next paragraph and start writing games.3. Accessing a game
To start writing a game, go to the "Games" section on the CodeGym website, choose one you like, and go to its page.


4. Publishing games to the application catalog
When you finish writing a game, you can publish it in the "Games and Applications" catalog on CodeGym. Simply press the "Publish" button, and in half a minute your game will be added to the "Published Games" section.

5. Game customization
Once you've finished writing a game, you can modify it. Want to play 2048 on a 5x5 board? Go ahead. You're a programmer — and you've got a keyboard at your fingertips. Change the game however you like. You can add something entirely new. For example, in Snake, the snake could slow down if it eats a fresh apple (within 5 seconds after the apple appears). Moreover, the apple could change color from red to green, or become a pear. Or maybe your snake loves rabbits more than apples... In Minesweeper, you could give the player a second life or perhaps an atomic bomb that "lights up" cells within a radius of several cells. But remember, if you work with files or graphics in a game without using the game engine, the game may not be published in the application catalog. Not everything can be run in a browser, you know.6. Useful documentation
We prepared some in-depth documents to help you get acquainted with the CodeGym game engine (initializing the game, creating the playing field, and working with graphics), event handling (working with the mouse, keyboard, and timer), and refresh or learn the basic Java theory you'll find when writing games (first and second CodeGym quest):- "Games" section on CodeGym: Description of the game engine
- "Games" section on CodeGym: Event handling
- "Games" section on CodeGym: Useful theory
7. Common problems
I have Linux and I use OpenJDK. When I run the game, the compiler gives an error:
Error:(6, 8) java: cannot access javafx.application.Application
class file for javafx.application.Application not found
What should you do?
Our game engine uses JavaFX, but it isn't installed by default in OpenJDK. You need to fix this:
At the command prompt, enter the following:
sudo apt-get install openjfx
After that, go to the project settings (ALT+CTRL+SHIFT+S) -> SDKs -> Classpath and click on the plus sign on the right. Select the file jfxrt.jar. It is located in the installed JDK at: <JDK_PATH>/jre/lib/ext/jfxrt.jar
Click OK.
Download the JavaFX Windows SDK at https://gluonhq.com/products/javafx/.
Unpack the downloaded archive into any folder (preferably in the lib folder of the Games project).
Open IDEA.
In IDEA, go to File -> Project Structure.
Select the Libraries tab and click + -> Java.
Specify the path to the unpacked javafx-sdk folder and select the lib folder
Click OK. Then in the new window, add JavaFX to the Games module.
Now a new library should appear. Click Apply -> OK.
To run the game correctly, open Run-> Edit Configuration, and enter the following in the VM options field:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
Next, you need to add the application on this tab. To do this, click + -> Application
Select the Games module
Enter the path to the main class (in this case —
SnakeGame
)Enter the same VM options as in item 9.
Click Apply -> OK
Run the game.
GO TO FULL VERSION