-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworld.py
executable file
·80 lines (58 loc) · 1.78 KB
/
world.py
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
#!/usr/bin/env qork
FONT = "./data/PressStart2P-Regular.ttf:64"
canvas.font(FONT)
def script(ctx):
canvas.text("Health: |||||", anchor="", align="l")
player = add("spirit.cson", scale=1 / 16)
player.state["stance"] = "walk"
player.rotate(0.125, X)
player.z = 1 / 16
camera.fov = 0.09
player.y = 2.5 / 16
camera.mode = "3D"
camera.y = -0.5
camera.z = 1
scale = 5
rocks = add("rocks.png", scale=scale)
rocks.fork(geometry=True)
rocks.material.filter(False)
rocks.material.repeat(True)
rocks.resources[0].scale_texture(8 * scale)
camera.rotate(0.1, X)
def make_cube(pos):
cube = add(Mesh.cube("box.png"))
cube.material.filter(False)
cube.scale(0.1)
cube.pos = vec3(pos[0], pos[1], 0.5 * 0.1)
return cube
for i in range(-10, 10):
for j in range(-10, 10):
if random.random() < 0.1:
make_cube((i / 10, j / 10))
for i in range(5):
for j in range(5):
tile = Canvas(res=(1, 1))
tile.clear("white")
player.dir = vec3(1, 0, 0)
def update(dt):
speed = 0.5
v = vec3(key(KEY.RIGHT) - key(KEY.LEFT), key(KEY.UP) - key(KEY.DOWN), 0)
v = glm.normalize(v)
if v.x > EPSILON:
player.state["direction"] = "right"
elif v.x < -EPSILON:
player.state["direction"] = "left"
player.state["stance"] = "walk" if glm.length(v) > EPSILON else "stand"
if key_pressed(KEY.SPACE):
bullet = add("spirit.png", pos=player.pos, scale=0.02, lifetime=1)
bullet.material.filter(False)
bullet.vel = copy(player.dir) * 2
if glm.length(player.vel) > EPSILON:
player.dir = glm.normalize(player.vel)
camera.vel = player.vel = v
# player.vel = v
# infinite rocks xy
rocks.xy = (player.pos.xy // 1).xy
# @overlap(player, 'box.png')
# def player_cube(player, cube, dt):
# pass