blob: 5e51ed355daf439b0e5c9738871c961fc14dfea5 (
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
(struct entity)
(def x:int)
(def y:int)
(def width:int)
(def height:int)
(def ofx:int)
(def ofy:int)
(def exists:bool)
(endstruct)
//# this checks if 2 entitys are touching
(defun touching bool a:entity* b:entity*)
(def r1:Rectangle)
(def r2:Rectangle)
(set r1.x a->x)
(set r1.y a->y)
(set r1.width a->width)
(set r1.height a->height)
(set r2.x b->x)
(set r2.y b->y)
(set r2.width b->width)
(set r2.height b->height)
(return (CheckCollisionRecs r1 r2))
(endfun)
//# the main loop of the program
(defun main int)
(InitWindow 800 800 "test test")
(SetTargetFPS 60)
(let p:entity* (alloc (sizeof entity)))
(set p->x 400)
(set p->y 700)
(set p->width 50)
(set p->height 30)
(set p->ofx 25)
(set p->ofy 15)
(let b:entity* (alloc (sizeof entity)))
(set b->x 400)
(set b->y 700)
(set b->width 10)
(set b->height 6)
(set b->ofx 5)
(set b->ofy 3)
(set b->exists false)
(let b2:entity* (alloc (sizeof entity)))
(set b2->x 400)
(set b2->y 700)
(set b2->width 10)
(set b2->height 6)
(set b2->ofx 5)
(set b2->ofy 3)
(set b2->exists false)
(let e:entity* (alloc (sizeof entity)))
(set e->x 400)
(set e->y 100)
(set e->width 60)
(set e->height 30)
(set e->ofx 30)
(set e->ofy 15)
(set e->exists true)
(let ehp:int 5)
(let edx:int 1)
(let reload:int 0)
(for i:int 0 (= (WindowShouldClose) 0) 0)
(if (= ehp 0))
(exit 0)
(elif (= e->y 700))
(exit 1)
(endif)
(if (!= reload 0)
(set reload (- reload 1))
(endif)
(BeginDrawing)
(ClearBackground BLACK)
(DrawRectangle (- p->x p->ofx) (+ p->y p->ofy) p->width p->height GREEN)
(if (= b->exists true))
(DrawRectangle (- b->x b->ofx) (+ b->y b->ofy) b->width b->height BLUE)
(endif)
(if (= b2->exists true))
(DrawRectangle (- b2->x b2->ofx) (+ b2->y b2->ofy) b2->width b2->height PURPLE)
(endif)
(if (= e->exists true))
(DrawRectangle (- e->x e->ofx) (+ e->y e->ofy) e->width e->height RED)
(endif)
(EndDrawing)
(if (IsKeyDown KEY_LEFT))
(set p->x (- p->x 6))
(elif (IsKeyDown KEY_RIGHT))
(set p->x (+ p->x 6))
(endif)
(if (IsKeyPressed KEY_SPACE))
(if (= reload 0))
(if (!= b->exists true))
(set b->exists true)
(else)
(set b2->exists true)
(endif)
(set reload 30)
(endif)
(endif)
(if (= b->exists true))
(set b->y (- b->y 10))
(if (< b->y 0))
(set b->y 700)
(set b->exists false)
(endif)
(else)
(set b->x p->x)
(endif)
(if (touching b e))
(set b->y 700)
(set b->exists false)
(set ehp (- ehp 1)
(if (<= ehp 0))
(set e->exists false)
(endif)
(endif)
(if (= b2->exists true))
(set b2->y (- b2->y 10))
(if (< b2->y 0))
(set b2->y 700)
(set b2->exists false)
(endif)
(else)
(set b2->x p->x)
(endif)
(if (touching b2 e))
(set b2->y 700)
(set b2->exists false)
(set ehp (- ehp 1)
(if (<= ehp 0))
(set e->exists false)
(endif)
(endif)
(set e->x (+ (* 4 edx) e->x)
(if (= e->x 800))
(set edx (* edx -1)
(set e->y (+ e->y 10))
(elif (= e->x 0))
(set edx (* edx -1)
(set e->y (+ e->y 10))
(endif)
(endfor)
(CloseWindow)
(endfun)
|