ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

main/main.cpp

Committer:
Noximilien
Date:
2019-02-28
Revision:
3:10918b0f7a7d
Parent:
main.cpp@ 2:ec89189860e0
Child:
4:02c63aaa2df9

File content as of revision 3:10918b0f7a7d:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Dmitrijs Griskovs
Username: el17dg
Student ID Number: 201160286
Date: start - 25/02/2019
*/


#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "game.h"



N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
Gamepad gamepad;
AnalogIn pot(PTB2);

AnalogIn x_dir(PTB11);
AnalogIn y_dir(PTB10);

static const unsigned int MAX_LINE_LENGTH = 14;


void intro();
void pointer(int x, int y);
void pointer_position(int menu_number);
void ship_movement();

char line_buffer[MAX_LINE_LENGTH];

int menu_number = 0;
int total_menu_number = 3;
float time_delay = 100;
int x_movement = 20;
int y_movement = 30;

int main(){
    lcd.init();
    
    intro();
    
    
    while(1){
        
        lcd.clear();
        
        pointer_position(menu_number);
        
        if(y_dir.read() > 0.6){
            menu_number -= 1;
            wait_ms(time_delay);    
        }
        if (y_dir.read() < 0.4){
            menu_number += 1;
            wait_ms(time_delay); 
        }
        if (menu_number < 0) {
            menu_number += total_menu_number;
        }
        if (menu_number >= total_menu_number) {
            menu_number -= total_menu_number;
        }
        
        lcd.printString(" Start ",1,2);
        lcd.printString(" Tutorial",1,3);
        lcd.printString(" Settings",1,4);
        sprintf(line_buffer, "%i", gamepad.L_PRESSED);
        lcd.printString(line_buffer,0,0);
        
        if (menu_number == 1 && gamepad.A_PRESSED == 1){
            ship_movement();
            game_start(lcd, x_movement, y_movement);   
        }
        
        lcd.refresh();
        wait_ms(1000/10);
        
        
    }
    
    
    
}

void intro(){
    lcd.clear();
    lcd.printString("  StarBarians",1,1);
    lcd.refresh();
    wait(0.5);
    lcd.printString(" And the quest ",1,2);
    lcd.printString(" of the Princess Boobeta",1,3);
    lcd.printString(" Boobeta",1,4);
    lcd.refresh();
    wait(0.5);
}

void pointer(int x, int y){
   
   int cursor[84] = {0,0,0,0,1,0,0,0,0,0,1,1,
                     0,0,1,1,1,1,0,0,0,1,0,0,
                     0,1,0,0,1,1,1,0,1,0,0,0,
                     1,1,1,1,1,0,1,1,1,0,1,1,
                     0,1,0,0,1,1,1,0,1,0,0,0,
                     0,0,1,1,1,1,0,0,0,1,0,0,
                     0,0,0,0,1,0,0,0,0,0,1,1};
                                
                                
    lcd.drawSprite(x,y,7,12,cursor);  
}

void pointer_position(int menu_number){     //32 for 5th row- 25 for 4th row
    if (menu_number == 0){    
    pointer(70, 17);
    }
    if (menu_number == 1){    
    pointer(70, 25);
    }
    if (menu_number == 2){    
    pointer(70, 32);
    }
}

void ship_movement(){
    if(y_dir.read() > 0.6){
        y_movement += 1;
        //wait_ms(time_delay);    
    }
    if (y_dir.read() < 0.4){
        y_movement -= 1;
        //wait_ms(time_delay); 
    }
    
    if(x_dir.read() > 0.6){
        x_movement += 1;
        //wait_ms(time_delay);    
    }
    if (x_dir.read() < 0.4){
        x_movement -= 1;
        //wait_ms(time_delay); 
    }
    
}