Render math correctly and clean up docs
This commit is contained in:
parent
328f6809f8
commit
754610a095
|
@ -18,7 +18,7 @@
|
|||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'Brutal Maze'
|
||||
copyright = '2020, Nguyễn Gia Phong'
|
||||
copyright = '2017-2020, Nguyễn Gia Phong'
|
||||
author = 'Nguyễn Gia Phong'
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
|
|
|
@ -110,5 +110,7 @@ As the hero always follow the mouse, perse perform close-range attack
|
|||
while doing so. Unlike the automatic ones, there isn't any delay between
|
||||
two manual slashings.
|
||||
|
||||
.. _trigon: https://www.pygame.org/docs/ref/gfxdraw.html#pygame.gfxdraw.aatrigon
|
||||
.. _the Tango palette: https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette
|
||||
.. _trigon:
|
||||
https://www.pygame.org/docs/ref/gfxdraw.html#pygame.gfxdraw.aatrigon
|
||||
.. _the Tango palette:
|
||||
https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 199 B |
|
@ -14,9 +14,9 @@ Server Output
|
|||
-------------
|
||||
|
||||
First, the game will export its data to a byte sequence (which in this case,
|
||||
is simply a ASCII string without null-termination) of the length *l*.
|
||||
Before sending the data to the client, the server would send the number *l*
|
||||
padded to 7 digits.
|
||||
is simply a ASCII string without null-termination) of the length :math:`l`.
|
||||
Before sending the data to the client, the server would send the number
|
||||
:math:`l` padded to 7 digits.
|
||||
|
||||
Below is the meta structure of the data::
|
||||
|
||||
|
@ -29,14 +29,15 @@ Below is the meta structure of the data::
|
|||
The Maze
|
||||
^^^^^^^^
|
||||
|
||||
Visible parts of the maze with the width *nw* and the height *nh* are exported
|
||||
as a byte map of *nh* lines and *nw* columns. Any character other than 0
|
||||
represents a blocking *cell*, i.e. a wall.
|
||||
Visible parts of the maze with the width :math:`n_w` and the height :math:`n_h`
|
||||
are exported as a byte map of :math:`n_h` lines and :math:`n_w` columns.
|
||||
Any character other than 0 represents a blocking *cell*, i.e. a wall.
|
||||
|
||||
To avoid floating point number in later description of other objects, each
|
||||
cell has the width (and height) of 100, which means the top left corner of
|
||||
the top left cell has the coordinates of (0, 0) and the bottom right vertex of
|
||||
the bottom right cell has the coordinates of (100 *nw*, 100 *nh*).
|
||||
the top left cell has the coordinates of :math:`(0, 0)` and the bottom right
|
||||
vertex of the bottom right cell has the coordinates of
|
||||
:math:`(100 n_w, 100 n_h)`.
|
||||
|
||||
The Hero
|
||||
^^^^^^^^
|
||||
|
@ -44,20 +45,20 @@ The Hero
|
|||
6 properties of the hero are exported in one line,
|
||||
separated by 1 space, in the following order:
|
||||
|
||||
:Hero's color:
|
||||
:Color:
|
||||
The current HP of the hero, as shown in in the later section.
|
||||
:X-coordinate:
|
||||
An integer in the range of [0, 100 *nw*].
|
||||
An integer within :math:`[0, 100 n_w]`.
|
||||
:Y-coordinate:
|
||||
An integer in the range of [0, 100 *nh*].
|
||||
An integer within :math:`[0, 100 n_h]`.
|
||||
Note that the y-axis points up-side-down instead of pointing upward.
|
||||
:Angle:
|
||||
The direction the hero is pointing to in degrees,
|
||||
cast to an integer from 0 to 360. Same note as above
|
||||
(the unit circle figure might help you understand this easier).
|
||||
:Flag showing if the hero can strike an attack:
|
||||
:Can attack:
|
||||
0 for *no* and 1 for *yes*.
|
||||
:Flag showing if the hero can heal:
|
||||
:Can heal:
|
||||
0 for *no* and 1 for *yes*.
|
||||
|
||||
.. image:: images/unit-circle.png
|
||||
|
@ -70,29 +71,34 @@ Each enemy exports these properties:
|
|||
:Color:
|
||||
The type and the current HP of the enemy, as shown in the table below.
|
||||
:X-coordinate:
|
||||
An integer in the range of [0, 100 *nw*].
|
||||
An integer within :math:`[0, 100 n_w]`.
|
||||
:Y-coordinate:
|
||||
An integer in the range of [0, 100 *nh*].
|
||||
An integer within :math:`[0, 100 n_h]`.
|
||||
:Angle:
|
||||
The direction the enemy is pointing to in degrees,
|
||||
cast to a nonnegative integer.
|
||||
|
||||
To shorten the data, each color (in the Tango palette) is encoded to a
|
||||
lowercase letter or number 0. Different shades of a same color indicating
|
||||
different HP of the characters.
|
||||
lowercase letter. Different shades of a same color indicating different HP
|
||||
of the characters.
|
||||
|
||||
=========== ======== ======== ======== ======== ======== ========
|
||||
HP 5 4 3 2 1 0
|
||||
=========== ======== ======== ======== ======== ======== ========
|
||||
Butter |fce94f| |edd400| |c4a000| |2e3436|
|
||||
Orange |fcaf3e| |f57900| |ce5c00| |2e3436|
|
||||
Chocolate |e9b96e| |c17d11| |8f5902| |2e3436|
|
||||
Chameleon |8ae234| |73d216| |4e9a06| |2e3436|
|
||||
Sky Blue |729fcf| |3465a4| |204a87| |2e3436|
|
||||
Plum |ad7f8a| |75507b| |5c3566| |2e3436|
|
||||
Scarlet Red |ef2929| |cc0000| |a40000| |2e3436|
|
||||
Aluminium |eeeeec| |d3d7cf| |babdb6| |888a85| |555753| |2e3436|
|
||||
=========== ======== ======== ======== ======== ======== ========
|
||||
=========== ======== ======== ======== ======== ========
|
||||
HP 5 4 3 2 1
|
||||
=========== ======== ======== ======== ======== ========
|
||||
Butter |fce94f| |edd400| |c4a000|
|
||||
Orange |fcaf3e| |f57900| |ce5c00|
|
||||
Chocolate |e9b96e| |c17d11| |8f5902|
|
||||
Chameleon |8ae234| |73d216| |4e9a06|
|
||||
Sky Blue |729fcf| |3465a4| |204a87|
|
||||
Plum |ad7f8a| |75507b| |5c3566|
|
||||
Scarlet Red |ef2929| |cc0000| |a40000|
|
||||
Aluminium |eeeeec| |d3d7cf| |babdb6| |888a85| |555753|
|
||||
=========== ======== ======== ======== ======== ========
|
||||
|
||||
.. note::
|
||||
|
||||
If a character shows up with color ``0``, it is safe to ignore it
|
||||
since it is a dead body yet to be cleaned up.
|
||||
|
||||
Flying bullets
|
||||
^^^^^^^^^^^^^^
|
||||
|
@ -104,9 +110,9 @@ Bullets also export 4 properties like enemies:
|
|||
encoded similarly to characters', except that aluminium bullets
|
||||
only have 4 colors ``v``, ``w``, ``x`` and ``0``.
|
||||
:X-coordinate:
|
||||
An integer in the range of [0, 100 *nw*].
|
||||
An integer within :math:`[0, 100 n_w]`.
|
||||
:Y-coordinate:
|
||||
An integer in the range of [0, 100 *nh*].
|
||||
An integer within :math:`[0, 100 n_h]`.
|
||||
:Angle:
|
||||
The bullet's flying direction in degrees,
|
||||
cast to a nonnegative integer.
|
||||
|
@ -163,10 +169,10 @@ Movement
|
|||
This is the most awkward one. As we can all imagine, there are nine different
|
||||
directions for the hero to move. Were they represented as two-dimensional
|
||||
vectors, at least three characters would be needed to describe such
|
||||
a simple thing, e.g. ``1 0`` for m = (1, 0), and in the worst-case scenario
|
||||
m = (-1, -1), we would need five: ``-1 -1``. 40 bits used to carry a four-bit
|
||||
piece of data, freaking insane, right? So instead, we decided to *slightly*
|
||||
encode it like this:
|
||||
a simple thing, e.g. ``1 0`` for :math:`m = (1, 0)`, and in the worst-case
|
||||
scenario :math:`m = (-1, -1)`, we would need five: ``-1 -1``. 40 bits are used
|
||||
to carry a four-bit piece of data, freaking insane, right? So instead,
|
||||
we decided to *slightly* encode it like this:
|
||||
|
||||
========= ==== === =====
|
||||
Direction Left Nil Right
|
||||
|
@ -198,10 +204,10 @@ can yet strike an attack (as described in above section about `The Hero`_).
|
|||
Pseudo-Client
|
||||
-------------
|
||||
|
||||
#. Create INET, STREAMing socket *s*
|
||||
#. Connect *s* to the address ``host:port`` which the server is bound to
|
||||
#. Receive length *l* of data
|
||||
#. If *l* > 0, close *s* and quit
|
||||
#. Create an INET, STREAMing socket ``sock``
|
||||
#. Connect ``sock`` to the address ``host:port`` which the server is bound to
|
||||
#. Receive length :math:`l` of data
|
||||
#. If :math:`l > 0`, close ``sock`` and quit
|
||||
#. Receive the data
|
||||
#. Process the data
|
||||
#. Send instruction for the hero to the server and go back to step 3
|
||||
|
@ -215,8 +221,8 @@ the client-examples_ directory (more are coming).
|
|||
|
||||
.. _client-examples:
|
||||
https://git.disroot.org/McSinyx/brutalmaze/src/branch/master/client-examples
|
||||
|
||||
.. |204a87| image:: images/204a87.png
|
||||
.. |2e3436| image:: images/2e3436.png
|
||||
.. |3465a4| image:: images/3465a4.png
|
||||
.. |4e9a06| image:: images/4e9a06.png
|
||||
.. |555753| image:: images/555753.png
|
||||
|
|
Loading…
Reference in New Issue