Repository navigation
Expand file tree
/
Copy pathdemo-roguelike.py
More file actions
93 lines (73 loc) · 2.65 KB
/
Copy pathdemo-roguelike.py
File metadata and controls
93 lines (73 loc) · 2.65 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import tickit
class Cell:
glyph = '.'
def __init__(self):
self.player = False
self.items = []
def __str__(self):
if self.player:
return '@'
else:
return self.glyph
class Talon:
def __init__(self, name, tin, tout):
self.name = name
self.term = tickit.Terminal.find_for_term(utf8=True)
self.term.input_handle = tin
self.term.output_handle = tout
self.msg = ''
self.term.refresh_size()
self.rows = self.term.lines - 3
self.cols = self.term.cols
self.grid = [
[Cell() for col in range(self.cols)] for row in range(self.rows)
]
self.player_x = int(self.cols / 2)
self.player_y = int(self.rows / 2)
self.grid[self.player_y][self.player_x].player = True
self.term.bind_event(['key'], self.input(), None)
#self.term.on_key = self.input()
self.term.clear()
self.render()
while 1:
self.term.input_wait()
self.render()
def render(self):
self.term.goto(0, 0)
self.term.print(self.msg)
for y in range(self.rows):
self.term.goto(y + 1, 0)
row = ''.join([str(x) for x in self.grid[y]])
self.term.print(bytes(row, 'UTF-8'))
self.term.goto(self.rows + 1, 0)
self.term.print('Name: %s' % (self.name))
def input(self):
def handler(term, type, event, data):
self.msg = ' ' * self.cols if not self.msg.startswith(' ') else ''
key = event.str.decode('UTF-8')
self.grid[self.player_y][self.player_x].player = False
if key == 'Up':
if self.player_y == 0:
self.msg = 'My, what a marvelous bedrock wall.'
else:
self.player_y -= 1
elif key == 'Down':
if self.player_y == self.rows - 1:
self.msg = 'My, what a marvelous bedrock wall.'
else:
self.player_y += 1
elif key == 'Left':
if self.player_x == 0:
self.msg = 'My, what a marvelous bedrock wall.'
else:
self.player_x -= 1
elif key == 'Right':
if self.player_x == self.cols:
self.msg = 'My, what a marvelous bedrock wall.'
else:
self.player_x += 1
self.grid[self.player_y][self.player_x].player = True
return handler
if __name__ == '__main__':
import sys
t = Talon(sys.argv[1], sys.__stdin__.fileno(), sys.__stdout__.fileno())