Skip to content

Commit f1aa967

Browse files
authored
Merge pull request #21 from lxgr-linux/feat/protocolls
Feat/protocolls
2 parents 21fed11 + 79460c3 commit f1aa967

22 files changed

Lines changed: 470 additions & 239 deletions

.github/workflows/ruff.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: ruff-format-check
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
ruff:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- name: Checkout repository
13+
uses: actions/checkout@v4
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v5
17+
with:
18+
python-version: "3.12"
19+
20+
- name: Install Ruff
21+
run: pip install ruff
22+
23+
- name: Run Ruff check
24+
run: ruff check .

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ dist
55
scrap_engine.egg-info
66
submit.sh
77
.eggs
8-
.idea/*
8+
.idea
9+
.ruff_cache

examples/lil_t.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#!/usr/bin/env python3
22
import scrap_engine as se
3-
import time, os, threading, sys
3+
import time
4+
import os
5+
import threading
6+
import sys
47

58
os.system("")
69
width, height = os.get_terminal_size()
@@ -36,7 +39,7 @@ def recogniser():
3639
else:
3740
ev="'"+a.rstrip()+"'"
3841
else:
39-
from pynput.keyboard import Key, Listener
42+
from pynput.keyboard import Listener
4043
def recogniser():
4144
global ev
4245
while True:

examples/lil_t_endless.py

Lines changed: 104 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
#!/usr/bin/env python3
2+
import os
3+
import random
4+
import sys
5+
import threading
6+
import time
7+
28
import scrap_engine as se
3-
import time, os, threading, sys, random
49

510

611
class PanelItem(se.Object):
@@ -10,48 +15,61 @@ def bump_left(self):
1015
self.remove()
1116

1217
def bump(self, ob, x, y):
13-
ob.set(ob.x-1, ob.y)
14-
self.set(self.x-1, self.y)
18+
ob.set(ob.x - 1, ob.y)
19+
self.set(self.x - 1, self.y)
1520

1621

1722
class Panel(se.Square):
1823
def init(self):
1924
for ob in self.obs:
2025
moving.append(ob)
2126

27+
2228
def genpanel():
2329
global panelindex, test
24-
exec("panel_%s=Panel('#', 10, 1, ob_class=PanelItem)"%panelindex)
25-
exec("panel_%s.add(map, map.width-11, map.height-%i)"%(panelindex, random.randint(8,20)))
26-
exec("panel_%s.init()"%panelindex)
27-
panelindex+=1
30+
exec("panel_%s=Panel('#', 10, 1, ob_class=PanelItem)" % panelindex)
31+
exec(
32+
"panel_%s.add(map, map.width-11, map.height-%i)"
33+
% (panelindex, random.randint(8, 20))
34+
)
35+
exec("panel_%s.init()" % panelindex)
36+
panelindex += 1
37+
2838

2939
def on_press(key):
3040
global ev
31-
ev=str(key)
41+
ev = str(key)
42+
43+
44+
if (
45+
sys.platform == "linux"
46+
): # Use another (not on xserver relying) way to read keyboard input, to make this shit work in tty or via ssh, where no xserver is available
3247

33-
if sys.platform == "linux": # Use another (not on xserver relying) way to read keyboard input, to make this shit work in tty or via ssh, where no xserver is available
3448
def recogniser():
35-
import tty, sys, termios
36-
global ev, old_settings, termios, fd, do_exit
49+
import sys
50+
import termios
51+
import tty
3752

38-
do_exit=False
39-
fd=sys.stdin.fileno()
53+
global ev, old_settings, fd, do_exit
54+
55+
do_exit = False
56+
fd = sys.stdin.fileno()
4057
old_settings = termios.tcgetattr(fd)
4158
tty.setraw(fd)
4259
while True:
43-
char=sys.stdin.read(1)
60+
char = sys.stdin.read(1)
4461
if ord(char) == 13:
45-
ev="Key.enter"
62+
ev = "Key.enter"
4663
elif ord(char) == 32:
47-
ev="Key.space"
64+
ev = "Key.space"
4865
else:
49-
ev="'"+char.rstrip()+"'"
66+
ev = "'" + char.rstrip() + "'"
5067
if ord(char) == 3 or do_exit:
5168
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
52-
ev="exit"
69+
ev = "exit"
5370
else:
54-
from pynput.keyboard import Key, Listener
71+
from pynput.keyboard import Listener
72+
5573
def recogniser():
5674
global ev
5775
while True:
@@ -62,78 +80,97 @@ def recogniser():
6280
def main():
6381
global v, t, ev, g, framenum, genframe
6482
while True:
65-
nexty=lambda v,g,t : round(player.y-(v*(v/g)-1/2*g*(v/g)**2)-v*t+1/2*g*t**2)
83+
84+
def nexty(v, g, t):
85+
return round(
86+
player.y
87+
- (v * (v / g) - 1 / 2 * g * (v / g) ** 2)
88+
- v * t
89+
+ 1 / 2 * g * t**2
90+
)
91+
6692
for ob in map.obs[1:]:
67-
if player.y+1 == ob.y and player.x == ob.x:
68-
t=0
69-
v=0
93+
if player.y + 1 == ob.y and player.x == ob.x:
94+
t = 0
95+
v = 0
7096
for ob in map.obs[1:]:
71-
if player.y < ob.y < nexty(v,g,t) and ob.x == player.x+1:
72-
player.set(player.x, ob.y-1)
73-
t=0
74-
v=0
97+
if player.y < ob.y < nexty(v, g, t) and ob.x == player.x + 1:
98+
player.set(player.x, ob.y - 1)
99+
t = 0
100+
v = 0
75101
break
76-
elif player.y > ob.y > nexty(v,g,t) and ob.x == player.x+1:
77-
player.set(player.x, ob.y+1)
78-
t=0
79-
v=0
102+
elif player.y > ob.y > nexty(v, g, t) and ob.x == player.x + 1:
103+
player.set(player.x, ob.y + 1)
104+
t = 0
105+
v = 0
80106
break
81107
if ev == "Key.space":
82-
v=-0.25
83-
ev=0
108+
v = -0.25
109+
ev = 0
84110
elif ev == "exit":
85-
ev=0
111+
ev = 0
86112
raise KeyboardInterrupt
87-
if player.set(player.x, nexty(v,g,t))!= 0 and t != 0:
113+
if player.set(player.x, nexty(v, g, t)) != 0 and t != 0:
88114
for ob in map.obs[1:]:
89-
if ob.x == player.x and ob.y == nexty(v,g,t):
90-
v=0
91-
player.set(player.x, player.y+1)
92-
t+=1
115+
if ob.x == player.x and ob.y == nexty(v, g, t):
116+
v = 0
117+
player.set(player.x, player.y + 1)
118+
t += 1
93119
# exec("point_%s=PanelItem('*', 'float')"%panelindex)
94120
# exec("point_%s.add(map, player.x-1, player.y)"%panelindex)
95121
# exec("moving.append(point_%s)"%panelindex)
96122
# panelindex+=1
97123
for mov in moving:
98-
mov.set(mov.x-1, mov.y)
99-
if player.x < smap.x-1:
124+
mov.set(mov.x - 1, mov.y)
125+
if player.x < smap.x - 1:
100126
exit()
101-
h.rechar((2-len(str(player.y)))*" "+str(player.y)+" "+str(map.height)+" "+str(player.y)+" "+str(nexty(v,g,t))+" "+str(player.y-nexty(v,g,t)))
102-
if genframe+15 == framenum:
127+
h.rechar(
128+
(2 - len(str(player.y))) * " "
129+
+ str(player.y)
130+
+ " "
131+
+ str(map.height)
132+
+ " "
133+
+ str(player.y)
134+
+ " "
135+
+ str(nexty(v, g, t))
136+
+ " "
137+
+ str(player.y - nexty(v, g, t))
138+
)
139+
if genframe + 15 == framenum:
103140
genpanel()
104-
genframe+=15
141+
genframe += 15
105142
time.sleep(0.05)
106143
smap.remap()
107144
smap.show()
108-
framenum+=1
145+
framenum += 1
109146

110147

111148
os.system("")
112149
width, height = os.get_terminal_size()
113-
t=ev=v=0
114-
g=0.015
115-
panelindex=0
116-
framenum=0
117-
genframe=0
118-
119-
map=se.Map(height-1, width+12, " ")
120-
smap=se.Submap(map, 0, 0)
121-
122-
player=se.Object("t")
123-
block=PanelItem("#")
124-
panel=Panel("#", 10, 1, ob_class=PanelItem)
125-
ground=se.Square("#", map.width, 5)
126-
h=se.Text("00 00")
127-
128-
player.add(map, round(smap.width/2), round(map.height/2))
129-
block.add(map, map.width-11, map.height-6)
130-
panel.add(map, map.width-11, map.height-10)
131-
ground.add(map, 0, map.height-5)
150+
t = ev = v = 0
151+
g = 0.015
152+
panelindex = 0
153+
framenum = 0
154+
genframe = 0
155+
156+
map = se.Map(height - 1, width + 12, " ")
157+
smap = se.Submap(map, 0, 0)
158+
159+
player = se.Object("t")
160+
block = PanelItem("#")
161+
panel = Panel("#", 10, 1, ob_class=PanelItem)
162+
ground = se.Square("#", map.width, 5)
163+
h = se.Text("00 00")
164+
165+
player.add(map, round(smap.width / 2), round(map.height / 2))
166+
block.add(map, map.width - 11, map.height - 6)
167+
panel.add(map, map.width - 11, map.height - 10)
168+
ground.add(map, 0, map.height - 5)
132169
h.add(smap, 0, 0)
133-
moving=[ob for ob in panel.obs]+[block]
170+
moving = [ob for ob in panel.obs] + [block]
134171

135-
recognising=threading.Thread(target=recogniser)
136-
recognising.daemon=True
172+
recognising = threading.Thread(target=recogniser)
173+
recognising.daemon = True
137174
recognising.start()
138175

139176
smap.remap()

examples/scrap_bench.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
#!/usr/bin/env python3
22

3+
import os
4+
import random
5+
import time
6+
37
import scrap_engine as se
4-
import time, random, os
8+
59

610
def main():
711
global avr, tcount
@@ -10,11 +14,17 @@ def main():
1014
b_map = se.Map(background=" ")
1115
text = se.Text("0")
1216
avr = se.Text("0")
13-
rectangle = se.Square('\033[34ma\033[0m', 50, 10)
14-
text.add(b_map, round((b_map.width-len(text.text))/2-10),
15-
round(b_map.height/2)-1)
16-
avr.add(b_map, round((b_map.width-len(text.text))/2-10),
17-
round(b_map.height/2))
17+
rectangle = se.Square("\033[34ma\033[0m", 50, 10)
18+
text.add(
19+
b_map,
20+
round((b_map.width - len(text.text)) / 2 - 10),
21+
round(b_map.height / 2) - 1,
22+
)
23+
avr.add(
24+
b_map,
25+
round((b_map.width - len(text.text)) / 2 - 10),
26+
round(b_map.height / 2),
27+
)
1828
rectangle.add(b_map, 0, 0)
1929

2030
tcount = 0
@@ -26,12 +36,16 @@ def main():
2636
time0 = time.time()
2737
times += time2
2838
for ob in rectangle.obs:
29-
ob.set(random.choice([ob.x, ob.x+1, ob.x-1]), random.choice([ob.y, ob.y+1, ob.y-1]))
39+
ob.set(
40+
random.choice([ob.x, ob.x + 1, ob.x - 1]),
41+
random.choice([ob.y, ob.y + 1, ob.y - 1]),
42+
)
3043
text.rechar(str(time2))
31-
avr.rechar(str(times/tcount if tcount != 0 else 1))
44+
avr.rechar(str(times / tcount if tcount != 0 else 1))
3245
b_map.show()
3346
tcount += 1
34-
time2 = time.time()-time0
47+
time2 = time.time() - time0
48+
3549

3650
if __name__ == "__main__":
3751
try:

0 commit comments

Comments
 (0)