Okay, let's first describe the game we're going to write.
Cyber Battle is a 2D text game written in Python. Two robots, A and B, try to destroy each other with laser shots. In our game, both robots will be controlled by the computer, so it will be more of a simulation than an actual game. However, you can easily change the game later and have two human players fight each other.
The robots are placed on a 4 x 4 board. A robot can be facing right >
, left <
, up ^
or down v
, as shown in the initial board below.
- - - -
- A>- -
- - - -
- - B<- |
Each robot has two lives. In each turn, each robot randomly performs one of the following actions:
turn_right()
– The robot's direction changes by 90 degrees clockwise. The diagram below shows robot A making two right turns:
- - - -
- A>- -
- - - -
- - B<- |
- - - -
- Av- -
- - - -
- - B<- |
- - - -
- A<- -
- - - -
- - B<- |
move_forward()
– The robot moves forward by one field. If the robot tries to enter a field occupied by the other robot or if the robot is already at one of the board's borders, nothing happens. The table below presents robot A making two forward moves:
- - - -
- A>- -
- - - -
- - B<- |
- - - -
- - A>-
- - - -
- - B<- |
- - - -
- - -A>
- - - -
- - B<- |
laser_shoot()
– The robot shoots a laser beam in the direction it is facing. The beam is always a straight line that reaches the board's border, as shown below:
- - - -
- A>* *
- - - -
- - B<- |
If the laser hits the other robot, the other robot loses one life. The image below shows a laser shot hitting robot B:
- Av- -
- * - -
- B<- -
- * - - |
After each round, the game state is printed, like this:
========================
- - - -
- Av- -
- - - -
- B<- -
Lives left: A - 2, B - 2
========================
- - - -
- - - -
- Av- -
- B^- -
Lives left: A - 2, B - 2
========================
The game lasts for a maximum of 10 rounds. If one of the robots destroys the other within this time limit, the destroying robot wins. So, if robot A destroyed robot B, we'd see:
*** Robot A won! ***
If both robots destroy each other at the same time or if 10 rounds have already passed, the game ends in a draw.
*** Draw! ***
That's quite a complicated game! Don't worry, we're going to break it up for you and guide you through the game creation process! The process will be split into three parts: game elements, the main game loop, and robot moves. Most of the time, you'll be writing independent functions to perform a single game operation. At the very end, we'll put all the pieces together and create the final game.