blob: 666b06bcaefbcdd0f407c99ef19f9781b6492922 (
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
|
(import pygame.sprite [Sprite]
pygame [Surface]
pygame
utils [neg merge-moves])
(defclass Entity [Sprite]
;;; Game entity
(setv _fixed False)
(setv _type "none")
(defn __init__ [self id tile tile-size x y]
(.__init__ (super))
(setv self.id id)
(setv self._surf (Surface #(tile-size tile-size)))
(.blit self._surf tile #(0 0))
(setv self._rect (.get_rect self._surf
:left (* x tile-size)
:top (* y tile-size))))
(defn [property] fixed [self]
self._fixed)
(defn [property] rect [self]
self._rect)
(defn [property] surf [self]
self._surf)
(defn [property] type [self]
self._type))
(defclass LevelTile [Entity]
(setv _fixed True)
(setv _type "level")
(defn __init__ [self id tile tile-size x y scaling]
(let [tile-width (* (.get_width tile) scaling)
tile-height (* (.get_height tile) scaling)
tile_ (if (!= scaling 1)
(pygame.transform.scale tile #(tile-width tile-height))
tile)]
(.__init__ (super) id tile_ tile-size x y))))
(defclass Goal [Entity]
(setv _type "goal")
(setv _fixed True))
(defclass Player [Entity]
(setv _type "player")
(setv SPEED 3)
(setv JUMP_IMPULSE 10)
(setv MAX_JUMPING 100)
(defn __init__ [self id tile tile-size x y]
(.__init__ (super) id tile tile-size x y)
(setv self.jumping False)
(setv self.jump-move 0))
(defn move [self move]
(.append self.moves move)
(.move_ip self._rect (get move 0) (get move 1)))
(defn [property] total-move [self]
(merge-moves self.moves))
(defn jump [self]
(setv self.jumping True)
(when (< self.jump-move self.MAX_JUMPING)
(setv self.jump-move (+ self.jump-move self.JUMP_IMPULSE))
(.move self #(0 (neg self.JUMP_IMPULSE)))))
(defn ground [self]
(setv self.jump-move 0))
(defn flush [self]
(setv self.moves [])))
|