summaryrefslogtreecommitdiff
path: root/src/miinaharava/tui/static.py
blob: 50dbb446b0711f7e550e5df70d7dde2b3e0eb184 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
""" tui/static.py - Staattiset määritykset tui:ssa tarvittaville jutuille. """
from enum import Enum
from dataclasses import dataclass

from board import Tile

class Action(Enum):
    """ tominnot, joita voidaan saada palautusrvona """
    QUIT = 0	# Pelin lopetus
    OPEN = 1	# Ruudun avaaminen
    FLAG = 2	# Ruudun liputus
    HINT = 3	# Anna vihjeet
    AUTO = 4	# Pelaa automaattisesti
    LEFT = 5	# Liikkumiset...
    RIGHT = 6
    UP = 7
    DOWN = 8
    TOP = 9
    BOTTOM = 10
    BEGIN = 11
    END = 12
    NOOP = 13	# ei mitään - tarvitaan, ettei mätsää ansikoodeja esciin
    MINE = 14	# merkkaa pommi
    SAFE = 15	# merkkaa turvallinen

# ActionKeys - Ohjelma vertaa syötteen alkua näihin ja palauttaa ekan
ActionKeys = {
    "\033[A": Action.UP,	"\033[D": Action.LEFT,
    "\033[C": Action.RIGHT,	'\033[B': Action.DOWN,	"\033[5~": Action.TOP,
    "\033[6~": Action.BOTTOM,	"\033[7~": Action.BEGIN,"\033[8~": Action.END,
    "\033[": Action.NOOP,	"\033": Action.QUIT,	"t": Action.SAFE,
    "w": Action.UP,		"a": Action.LEFT,	"s": Action.DOWN,
    "d": Action.RIGHT,		" ": Action.OPEN,	"\n": Action.OPEN,
    "l": Action.QUIT,		"?": Action.HINT,	"b": Action.HINT,
    "f": Action.FLAG,		"q": Action.QUIT,	"m": Action.MINE,
    "\t": Action.FLAG,		"9": Action.MINE,	"0": Action.SAFE
}

KEY_DESCRIPTIONS = """Näppäinasettelu:

  YLÖS, ALAS, VASEN, OIKEA, PGDN, PGUP, HOME, END, w, a, s, d
                       Kursorin liikuttaminen pelilaudalla
  
  ENTER, SPACE         Avaa laatta
  
  f, TAB               Vaihda laatan merkintää
  m, 9                 Merkitse miinaksi
  t, 0                 Merkitse turvalliseksi
  
  ?, b                 Vihje tekoälyltä

  l, q, ESC            Pelin lopetus
"""

@dataclass
class TileType:
    """ ruututyyppien tallennusmuotojen kuvaus"""
    text: str		# Teksti
    colors: []		# Lista (väri, tausta) pareja tekstin kaunistamiseen


TileTypes = {
    Tile.BLANK:		TileType( "[ ]", [(0x7,0), (0x7,0), (0x7,0)] ),
    Tile.ONE:		TileType( "[1]", [(0xA,0), (0xA,0), (0xA,0)] ),
    Tile.TWO:		TileType( "[2]", [(0xB,0), (0xB,0), (0xB,0)] ),
    Tile.THREE:		TileType( "[3]", [(0xD,0), (0xD,0), (0xD,0)] ),
    Tile.FOUR:		TileType( "[4]", [(0x9,0), (0x9,0), (0x9,0)] ),
    Tile.FIVE:		TileType( "[5]", [(0x9,0), (0x9,0), (0x9,0)] ),
    Tile.SIX:		TileType( "[6]", [(0x9,0), (0x9,0), (0x9,0)] ),
    Tile.SEVEN:		TileType( "[7]", [(0x9,0), (0x9,0), (0x9,0)] ),
    Tile.EIGHT:		TileType( "[8]", [(0x9,0), (0x9,0), (0x9,0)] ),
    Tile.MINE:		TileType( "[@]", [(0xF,1), (0xF,1), (0xF,1)] ),
    Tile.FLAG_MINE:	TileType( "[×]", [(0x8,7), (0x1,7), (0x8,7)] ),
    Tile.FLAG_FREE:	TileType( "[•]", [(0x8,7), (0x2,7), (0x8,7)] ),
    Tile.UNOPENED:	TileType( "[#]", [(0x8,7), (0x8,7), (0x8,7)] ),
    Tile.FLAG_UNKNOWN:	TileType( "[?]", [(0x8,7), (0x0,7), (0x8,7)] )
}