/
doodler.c
65 lines (56 loc) · 1.09 KB
/
doodler.c
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
#include <stdio.h>
#include "doodler.h"
#include "world.h"
#include "game.h"
static void drawDoodler(Doodler d) {
xt_par2(XT_SET_ROW_COL_POS,1,1);
xt_par2(XT_SET_ROW_COL_POS,d.y,d.x);
xt_par0(XT_BG_RED);
//printf("doodler");
puts(DOODLER_SHAPE);
xt_par0(XT_BG_DEFAULT);
}
Doodler updateDoodler(int key, Doodler *d) {
d->x += d->v.vx;
d->y += d->v.vy;
d->v.vy ++;
Platform *contact = getPlatform(d->x,d->y + d->v.vy);
printf("%p",contact);
switch(key) {
case KEY_LEFT:
d->v.vx = -1 * MOVEMENT_SPEED;
break;
case KEY_RIGHT:
d->v.vx = MOVEMENT_SPEED;
//d->x += d->vx;//d->vx;
//d->x ++;
break;
case KEY_UP:
d->v.vy = -1 * JUMP_SPEED;
break;
}
if(d->v.vy > 2) {
d->v.vy = 2;
}
if(contact != NULL) {
d->v.vy = -1 * JUMP_SPEED;
d->y = contact->y - PLATFORMS_HEIGHT - 2;
}
if(d->x < 0 || d->x > SCREEN_WIDTH) {
d->x = SCREEN_WIDTH - d->x;
}
if(d->y > SCREEN_HEIGHT) {
d->alive = false;
}
drawDoodler(*d);
return *d;
}
Doodler newDoodler() {
Doodler d;
d.x = 10;
d.y = 10;
d.v.vy = -1 * JUMP_SPEED;
d.v.vx = 1;
d.alive = true;
return d;
}