Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MotionSensor
Revision 31:ab24d028ddfd, committed 2019-05-05
- Comitter:
- el17sm
- Date:
- Sun May 05 18:37:23 2019 +0000
- Parent:
- 30:ec915d24d3e9
- Child:
- 32:fe6359ef9916
- Commit message:
- Rearranged main.cpp to be converted into a game_engine class
Changed in this revision
--- a/RoomEngine/RoomEngine.cpp Sun May 05 18:04:43 2019 +0000
+++ b/RoomEngine/RoomEngine.cpp Sun May 05 18:37:23 2019 +0000
@@ -12,9 +12,9 @@
delete player;
}
-void RoomEngine::load(Player ¤t_player, Room *current_room)
+void RoomEngine::load(Player *current_player, Room *current_room)
{
- player = ¤t_player;
+ player = current_player;
room = current_room;
set_input(0,0,0,0,0,0,0,0);
update_player_position(check_player_room_position());
--- a/RoomEngine/RoomEngine.h Sun May 05 18:04:43 2019 +0000
+++ b/RoomEngine/RoomEngine.h Sun May 05 18:37:23 2019 +0000
@@ -15,7 +15,7 @@
public:
RoomEngine(float global_contrast);
~RoomEngine();
- void load(Player ¤t_player, Room *current_room);
+ void load(Player *current_player, Room *current_room);
void entrance_scene(N5110 &lcd, Gamepad &gamepad);
void exit_scene(N5110 &lcd, Gamepad &gamepad);
void update_current_room();
--- a/main.cpp Sun May 05 18:04:43 2019 +0000
+++ b/main.cpp Sun May 05 18:37:23 2019 +0000
@@ -25,139 +25,194 @@
#define MAX_ROOMS_MAP_X 11
#define MAX_ROOMS_MAP_Y 11
+// Variables
+int title_count = 0;
+int cursor_timer = 20;
+int title_option = 0;
+float global_contrast = 0.5;
+
// Objects
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad gamepad;
// Prototypes
-void render();
+void title_screen();
+void draw_title_screen(N5110 &lcd);
+void title_options_joystick(Gamepad &gamepad);
+
+void title_option_option();
+void title_option_credit();
+void title_option_hi_scores();
+void game_loop();
+void game_over();
+Player *player;
+Room *rooms[MAX_ROOMS_MAP_Y][MAX_ROOMS_MAP_X];
+RoomEngine *room_engine;
// Functions
int main()
{
// Initialize
- float global_contrast = 0.5;
lcd.init();
lcd.setContrast(global_contrast);
gamepad.init();
- Room *rooms[MAX_ROOMS_MAP_Y][MAX_ROOMS_MAP_X];
while(1) { // Gameloop
- int title_count = 0;
- int cursor_timer = 20;
- int title_option = 0;
- Player demo_player(5, 36);
- while(1){ // Title Screen Loop
+
+ player = new Player(5, 36);
+ title_screen();
+ delete player;
+
+ srand(title_count);
+ player = new Player(39, 27);
+ room_engine = new RoomEngine(global_contrast);
+
+ game_loop();
+ game_over();
+ delete room_engine;
+ delete player;
+ }
+}
+
+void draw_title_screen(N5110 &lcd)
+{
+ lcd.drawSprite(11, 4, 15, 44, (int *)title_name_0);
+ lcd.drawSpriteTransparent(19, 14, 17, 53, (int *)title_name_1);
+ lcd.drawCircle(79, 7, 10, FILL_BLACK);
+ lcd.drawCircle(81, 5, 8, FILL_WHITE);
+ lcd.drawSprite(56, 6, 11, 5, (int *)star_sprite[abs(((title_count/20) % 7) - 3)]);
+ lcd.drawSprite(12, 34, 8, 8, (int *)button_A_sprite);
+ lcd.drawSprite(22, 37, 3, 2, (int *)arrow_left_sprite);
+ lcd.drawSprite(59, 37, 3, 2, (int *)arrow_right_sprite);
+ lcd.drawSprite(69, 31, 12, 6, (int *)sprite_player[(title_count/40) % 4][(title_count/10) % 4]);
+ lcd.drawSprite(26, 35, 9, 32, (int *)title_options_sprite[title_option]);
+}
+
+void title_options_joystick(Gamepad &gamepad)
+{
+ if ((gamepad.get_direction() == 3) && (cursor_timer > 20)) { // Detect Joystick going right
+ cursor_timer = 0;
+ if (title_option >= 3) {
title_option = 0;
- while(!gamepad.check_event(Gamepad::A_PRESSED)){
- lcd.clear();
- lcd.drawSprite(11, 4, 15, 44, (int *)title_name_0);
- lcd.drawSpriteTransparent(19, 14, 17, 53, (int *)title_name_1);
- lcd.drawCircle(79, 7, 10, FILL_BLACK);
- lcd.drawCircle(81, 5, 8, FILL_WHITE);
- lcd.drawSprite(56, 6, 11, 5, (int *)star_sprite[abs(((title_count/20) % 7) - 3)]);
- lcd.drawSprite(12, 34, 8, 8, (int *)button_A_sprite);
- lcd.drawSprite(22, 37, 3, 2, (int *)arrow_left_sprite);
- lcd.drawSprite(59, 37, 3, 2, (int *)arrow_right_sprite);
- lcd.drawSprite(69, 31, 12, 6, (int *)sprite_player[(title_count/40) % 4][(title_count/10) % 4]);
- lcd.drawSprite(26, 35, 9, 32, (int *)title_options_sprite[title_option]);
- lcd.refresh();
-
- if ((gamepad.get_direction() == 3) && (cursor_timer > 20)) { // Detect Joystick going right
- cursor_timer = 0;
- if (title_option >= 3) {
- title_option = 0;
- } else {
- title_option++;
- }
- } else if ((gamepad.get_direction() == 7) && (cursor_timer > 20)) { // Detect Joystick going left
- cursor_timer = 0;
- if (title_option <= 0) {
- title_option = 3;
- } else {
- title_option--;
- }
- }
-
- cursor_timer++;
- title_count++;
- wait_ms(1000/40); // 1s/framerate
+ } else {
+ title_option++;
+ }
+ } else if ((gamepad.get_direction() == 7) && (cursor_timer > 20)) { // Detect Joystick going left
+ cursor_timer = 0;
+ if (title_option <= 0) {
+ title_option = 3;
+ } else {
+ title_option--;
+ }
+ }
+ cursor_timer++;
+}
+
+void title_screen()
+{
+ while(1){ // Title Screen Loop
+ title_option = 0;
+ while(!gamepad.check_event(Gamepad::A_PRESSED)){
+ lcd.clear();
+ draw_title_screen(lcd);
+ lcd.refresh();
+
+ title_options_joystick(gamepad);
+
+ title_count++;
+ wait_ms(1000/40); // 1s/framerate
+ }
+ while(gamepad.check_event(Gamepad::A_PRESSED)){}
+ if(title_option == 0) {
+ break;
+ } else if (title_option == 1) {
+ while(!gamepad.check_event(Gamepad::A_PRESSED)) {
+ title_option_option();
}
- while(gamepad.check_event(Gamepad::A_PRESSED)){}
- if(title_option == 0) {
- break;
- } else if (title_option == 1) {
- while(!gamepad.check_event(Gamepad::A_PRESSED)) {
- global_contrast = gamepad.read_pot();
- lcd.setContrast(global_contrast);
- lcd.clear();
- lcd.printString("Set contrast", 0, 0);
- lcd.printString("using the", 0, 1);
- lcd.printString("potentiometer", 0, 2);
- demo_player.draw(lcd);
- lcd.refresh();
- demo_player.move(1, 0, (int *)level_map[0][0], (bool *)sprite_transparent_player);
- demo_player.buttons(false, true, false, false);
- demo_player.update_bullets((int *)level_map[0][0], (bool *)sprite_transparent_player);
- if(demo_player.get_pos_x() >= 84){
- demo_player.set_position(-6 ,demo_player.get_pos_y());
- }
- wait_ms(1000/40);
- }
- wait(0.05);
- while(gamepad.check_event(Gamepad::A_PRESSED)) {
- }
- } else if (title_option == 2) {
- lcd.clear();
- lcd.setContrast(global_contrast);
- lcd.printString("Made by:", 0, 0);
- lcd.printString("Steven Mahasin", 0, 1);
- lcd.printString("201192939", 0, 2);
- lcd.refresh();
- wait(0.05);
- while(!gamepad.check_event(Gamepad::A_PRESSED)) {
- }
- wait(0.05);
- while(gamepad.check_event(Gamepad::A_PRESSED)) {
- }
- } else if (title_option == 3) {
-
+ wait(0.05);
+ while(gamepad.check_event(Gamepad::A_PRESSED)) {
+ }
+ } else if (title_option == 2) {
+ title_option_credit();
+ wait(0.05);
+ while(!gamepad.check_event(Gamepad::A_PRESSED)) {
+ }
+ wait(0.05);
+ while(gamepad.check_event(Gamepad::A_PRESSED)) {
+ }
+ } else if (title_option == 3) {
+
+ }
+ }
+}
+
+void title_option_option()
+{
+ global_contrast = gamepad.read_pot();
+ lcd.setContrast(global_contrast);
+ lcd.clear();
+ lcd.printString("Set contrast", 0, 0);
+ lcd.printString("using the", 0, 1);
+ lcd.printString("potentiometer", 0, 2);
+ player->draw(lcd);
+ lcd.refresh();
+ player->move(1, 0, (int *)level_map[0][0], (bool *)sprite_transparent_player);
+ player->buttons(false, true, false, false);
+ player->update_bullets((int *)level_map[0][0], (bool *)sprite_transparent_player);
+ wait_ms(1000/40);
+}
+
+void title_option_credit()
+{
+ lcd.clear();
+ lcd.setContrast(global_contrast);
+ lcd.printString("Made by:", 0, 0);
+ lcd.printString("Steven Mahasin", 0, 1);
+ lcd.printString("201192939", 0, 2);
+ lcd.refresh();
+}
+void title_option_hi_scores()
+{
+
+}
+
+void game_loop()
+{
+ while(1) { // Floor Loop
+ for (int i = 0; i < MAX_ROOMS_MAP_X; i++) {
+ for (int j = 0; j < MAX_ROOMS_MAP_Y; j++) {
+ rooms[j][i] = new Room(2);
}
}
- demo_player.~Player();
- srand(title_count);
- Player player(39, 27);
- RoomEngine room_engine(global_contrast);
-
- while(1) { // Floor Loop
- for (int i = 0; i < MAX_ROOMS_MAP_X; i++) {
- for (int j = 0; j < MAX_ROOMS_MAP_Y; j++) {
- rooms[j][i] = new Room(2);
+
+ // Rooms Generation
+ while(1) { // Room Loop
+ rooms[room_engine->get_room_y()][room_engine->get_room_x()]->load();
+ room_engine->load(player, rooms[room_engine->get_room_y()][room_engine->get_room_x()]);
+
+ room_engine->entrance_scene(lcd, gamepad);
+ while(room_engine->check_player_room_position() == INSIDE) { // Room actions
+ room_engine->read_input(gamepad);
+ room_engine->update();
+ room_engine->render(lcd, gamepad);
+ if (player->get_hp() <= 0) {
+ goto gameover;
}
}
+ room_engine->exit_scene(lcd, gamepad);
+ rooms[room_engine->get_room_y()][room_engine->get_room_x()]->unload();
+ player->delete_bullets();
+ room_engine->update_current_room();
+ }
+ }
+ gameover : {
+ game_over();
+ }
+}
- // Rooms Generation
- while(1) { // Room Loop
- rooms[room_engine.get_room_y()][room_engine.get_room_x()]->load();
- room_engine.load(player, rooms[room_engine.get_room_y()][room_engine.get_room_x()]);
-
- room_engine.entrance_scene(lcd, gamepad);
- while(room_engine.check_player_room_position() == INSIDE) { // Room actions
- room_engine.read_input(gamepad);
- room_engine.update();
- room_engine.render(lcd, gamepad);
- if (player.get_hp() <= 0) {
- goto gameover;
- }
- }
- room_engine.exit_scene(lcd, gamepad);
- rooms[room_engine.get_room_y()][room_engine.get_room_x()]->unload();
- player.delete_bullets();
- room_engine.update_current_room();
- }
- }
- gameover : {
- while(1){ // Game Over Screen Loop
+void game_over()
+{
+ while(1){ // Game Over Screen Loop
lcd.clear();
lcd.setContrast(global_contrast);
lcd.printString("Game Over", 0, 0);
@@ -171,8 +226,4 @@
}
break;
}
- room_engine.~RoomEngine();
- player.~Player();
- }
- }
}
\ No newline at end of file