/
main.c
81 lines (68 loc) · 1.63 KB
/
main.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "myLib.h"
#include "titleScreen.h"
#include "gameover.h"
#include "youwin.h"
#include "game.h"
int main()
{
REG_DISPCTL = MODE3 | BG2_ENABLE;
//Draw Start Screen
drawImage3(0, 0, TITLESCREEN_WIDTH, TITLESCREEN_HEIGHT, titleScreen);
//var to keep track of current position in game
int inGame = 0;
int inTitle = 1;
while(1)
{
//START GAME
if(inTitle == 1 && KEY_DOWN_NOW(BUTTON_START)) {
inGame = 1;
inTitle = 0;
int bgcolor = GRAY;
DMA[3].src = &bgcolor;
DMA[3].dst = videoBuffer;
DMA[3].cnt = 38400 | DMA_SOURCE_FIXED | DMA_DESTINATION_INCREMENT | DMA_ON;
drawLevel1Board();
refillLives();
resetBoard();
}
//JUMP BACK TO TITLE SCREEN
if(KEY_DOWN_NOW(BUTTON_SELECT)) {
inGame = 0;
inTitle = 1;
drawImage3(0, 0, TITLESCREEN_WIDTH, TITLESCREEN_HEIGHT, titleScreen);
}
//GAME PLAY
if(inGame == 1) {
if(KEY_DOWN_NOW(BUTTON_RIGHT)) {
moveRight();
} else if(KEY_DOWN_NOW(BUTTON_LEFT)) {
moveLeft();
} else if(KEY_DOWN_NOW(BUTTON_UP)) {
moveUp();
} else if(KEY_DOWN_NOW(BUTTON_DOWN)) {
moveDown();
}
waitForVblank();
clearOld();
drawCurr();
//test if reach end of level
if(isWin() == 1) {
drawImage3(0, 0, YOUWIN_WIDTH, YOUWIN_HEIGHT, youwin);
inGame = 0;
inTitle = 0;
}
//test for Collisions with Enemies
if(isCollide() > 0) {
if(currLives() > 0) {
resetBoard();
} else {
//out of lives = game over
inGame = 0;
inTitle = 0;
drawImage3(0, 0, GAMEOVER_WIDTH, GAMEOVER_HEIGHT, gameover);
}
}
}
}
return 0;
}