A rouge-like rpg, heavily inspired on the binding of isaac. Running on a FRDM-K64F Mbed board. C++.

Dependencies:   mbed MotionSensor

main.cpp

Committer:
el17sm
Date:
2019-05-02
Revision:
28:98848e6a77a2
Parent:
27:a1b41626f57c
Child:
29:6b8411bb040a

File content as of revision 28:98848e6a77a2:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Steven Mahasin
Username: el17sm
Student ID Number: 201192939
Date: 11/04/2019
*/

// Pre-Processor
#include "mbed.h"
#include "Gamepad.h"
#include "N5110.h"
#include "math.h"
#include "sprites.h"
#include "Entity.h"
#include "Player.h"
#include "Headless.h"
#include "Snake.h"
#include "RoomEngine.h"

#define INSIDE 4
#define MAX_ROOMS_MAP_X 10
#define MAX_ROOMS_MAP_Y 10

// Objects
N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad gamepad;

// Prototypes
void render();

// Functions
int main()
{
    // initialize
    lcd.init();
    lcd.setContrast(0.5);
    gamepad.init();
    Player player(39, 27);
    
    while(1) { // gameloop
        RoomEngine room_engine;
        Room room(2);
            // Rooms Generation
        while(player.get_hp() > 0) {  // Room Loop 
            while(1) {
                room.load();
                room_engine.init(player, room);
                
                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);
                }
                room_engine.exit_scene(lcd, gamepad);
                room.unload();
            }
        }
        lcd.clear();
        lcd.setContrast(0.5);
        lcd.printString("Game Over", 0, 0);
        lcd.printString("Retry?", 0, 1);
        lcd.refresh();
        room_engine.~RoomEngine();
        wait(0.05);
        while(!gamepad.check_event(Gamepad::A_PRESSED)) {
        }
        wait(0.05);
        while(gamepad.check_event(Gamepad::A_PRESSED)) {
        }
    }
}