-
Notifications
You must be signed in to change notification settings - Fork 0
/
pocketDungeonSprite.ino
114 lines (101 loc) · 3.06 KB
/
pocketDungeonSprite.ino
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
#include "Arduino.h"
#include "Monster.h"
#include <Arduboy2.h>
Arduboy2 arduboy;
//Images
const uint8_t jellySprite[] PROGMEM = {0x83, 0xee, 0xf8, 0xf8, 0xfc, 0xf4, 0xf6, 0xc0};
const uint8_t jeffSprite[] PROGMEM = {0x00, 0x1f, 0x88, 0xeb, 0x3f, 0xe0, 0x80, 0x00};
const uint8_t treasureChest[] PROGMEM = {0xfc, 0x92, 0x93, 0x99, 0x99, 0x93, 0x92, 0xfc};
//Allow for switching between screen modes:
//0 is splashScreen
//1 is map
//2 is combat
byte screenMode = 0;
//Create Monsters (and hero is is the real monster, am I right)
Monster jelly1(45,2,8,8,8,8,jellySprite);
Monster jelly2(45,2,8,8,24,8,jellySprite);
Monster jeff(30,1,10,96,32,8,jeffSprite);
//pointer to active monster
Monster * activeMonster = &jelly1;
byte chestPosnX;
byte chestPosnY;
void setup() {
arduboy.begin();
arduboy.setFrameRate(30);
arduboy.initRandomSeed();
//calls cave functions to create random cave walls
makeCaveTop();
makeCaveLeft();
makeCaveRight();
findChest();
}
void loop() {
arduboy.clear();
if (!(arduboy.nextFrame()))
return;
//check screen mode and display splashScreen of move on
if (screenMode == 0) splashScreen();
else {
//draws the cave walls, checks for movement, then draws the sprites
drawCave();
checkButtons();
arduboy.drawBitmap(jelly1.posnX,jelly1.posnY,jelly1.pointerToMySprite,8,8, WHITE);
arduboy.drawBitmap(jelly2.posnX,jelly2.posnY,jelly2.pointerToMySprite,8,8, WHITE);
arduboy.drawBitmap(chestPosnX,chestPosnY,treasureChest,8,8,WHITE);
arduboy.drawBitmap(96,32,jeff.pointerToMySprite,8,8,WHITE);
arduboy.setCursor(0,56);
arduboy.print("A to switch Jellies");
//arduboy.print("j1 hp=");
//arduboy.print(jelly1.hp);
//arduboy.print(" j2 hp=");
//arduboy.print(jelly2.hp);
arduboy.display();
}
}
void splashScreen()
{
//shows splash screen then moves on
bool moveOn = false;
arduboy.setCursor(0,0);
arduboy.setTextSize(2);
arduboy.println(F("Pocket"));
arduboy.println(F("Dungeon"));
arduboy.setTextSize(1);
arduboy.println(F("by Andrew Woodbridge"));
arduboy.println();
arduboy.println();
arduboy.println(F("Press A to Continue"));
arduboy.display();
while (!moveOn) {
arduboy.pollButtons();
if(arduboy.justPressed(A_BUTTON)){
moveOn = true;
screenMode ++;
}
}
}
void switchActiveMonster()
{
//switches between the two jellies
if (activeMonster == &jelly1) activeMonster = &jelly2;
else if (activeMonster == &jelly2) activeMonster = &jelly1;
}
void checkButtons(){
//polls the buttons during the gameplay
arduboy.pollButtons();
if(arduboy.justPressed(A_BUTTON)) {
switchActiveMonster();
}
if(arduboy.justPressed(LEFT_BUTTON)) {
activeMonster->monsterMove('l');
}
else if(arduboy.justPressed(RIGHT_BUTTON)) {
activeMonster->monsterMove('r');
}
else if(arduboy.justPressed(UP_BUTTON)) {
activeMonster->monsterMove('u');
}
else if(arduboy.justPressed(DOWN_BUTTON)) {
activeMonster->monsterMove('d');
}
}