]> git.gir.st - VIper.git/blob - README.md
green snek (dirty (temporary) hack)
[VIper.git] / README.md
1 # VIIper - a Snake Clone for Unicode-compatible Terminals
2
3 TODO: find a better name
4
5 ## Dependencies
6
7 - A VTE based terminal (like GNOME Terminal and a whole bunch of others)
8 - Google Noto's Color Emoji Font (Fedora: `google-noto-emoji-color-fonts.noarch`)
9
10 ## Keybindings
11
12 hjkl or cursor keys move the snake.
13 r to restart, p to pause, q to quit.
14
15 ## TODO
16
17 - DONE base game: fixed field size, fixed speed
18 - food (unicode)
19 - put 'sprites' into `schemes.h`
20 - snake elongates
21 - unicode chars
22 - timer, score, increasing speed
23 - special items: slower snake, shorter snake, etc.
24 - input buffer (so fast 180° turns get executed)
25 - wall-wrap-around mode?
26
27 ## Notes
28
29 ### terminal compat
30
31 to display emojis, we need a terminal that can handle a color emoji font (no
32 shit, sherlock). mlterm, xterm and urxvt didn't work in my tests (mlterm might
33 work if compiled correctly, the other two use bitmap fonts and i don't think
34 there are any w/ emoji support). konsole will have to be tested in the future.
35 i intend to put bonus items in the game that will only be visible for a short
36 time. when they get near the end of their life, SGI-5 (blink) will make them
37 blink. this is supported in gnome-term 3.28 (vte 0.52) which is supplied with
38 fedora 28. [bug report](https://bugzilla.gnome.org/show_bug.cgi?id=579964)
39
40 ### drawing the snake
41
42 to draw the snake with box chars, we need to know which glyph to draw.
43
44 our current position is X, and our predecessor and successor are on one of
45 `[NESW]` of us (we need to compute the relpos from the absolute). we need to
46 draw a line between them. note that head and tail have `NULL` as pre-/successor.
47
48 ```
49 [N]
50 [W][X][E]
51 [S]
52 ```
53
54 6 combinations (+ reverse):
55 - N-S -> `||`
56 - W-E -> `==`
57 - N-E -> `'=`
58 - E-S -> `,=`
59 - S-W -> `=,`
60 - W-N -> `='`
Imprint / Impressum