For Nikhil

Dependencies:   4DGL-uLCD-SE EthernetInterface Game_Synchronizer MMA8452 SDFileSystem mbed-rtos mbed wave_player

Fork of 2035_Tanks_Shell by ECE2035 Spring 2015 TA

main.cpp

Committer:
jford38
Date:
2015-10-22
Revision:
8:e6dd05393290
Parent:
7:9506f2d84162
Child:
9:ee330b1ba394

File content as of revision 8:e6dd05393290:

// Student Side.

#include "mbed.h"
#include "game_synchronizer.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

DigitalIn pb_l(p24);  // left button
DigitalIn pb_r(p21);  // right button
DigitalIn pb_u(p22);  // up button
DigitalIn pb_d(p23);  // down button

uLCD_4DGL uLCD(p9,p10,p11); // LCD (serial tx, serial rx, reset pin;)
Game_Synchronizer sync(PLAYER1); // (tx, rx, rst, player mode)

// For debug only. Don't use in production code. It will slow your game down a lot.
Serial pc(USBTX, USBRX);                     


int game_menu(void) {
    
    // Figure out what mode the game will be run in.
    // Right button -> Multiplayer
    // Left button -> Single player
    while(1) {
        if(!pb_r) { wait(1); return  MULTI_PLAYER; }    // Delay to allow user time to stop pushing the button before the game starts!
        if(!pb_l) { wait(1); return SINGLE_PLAYER; }    // return whichever game mode the user selected.
    }
}

void game_init(void) {
    
    led1 = 0; led2 = 0; led3 = 0; led4 = 0;
    
    pb_l.mode(PullUp);
    pb_r.mode(PullUp); 
    pb_u.mode(PullUp);    
    pb_d.mode(PullUp);
    
    pc.printf("\033[2J\033[0;0H");              // Clear the terminal screen.
    pc.printf("I'm alive! Player 1\n");         // Let us know you made it this far.
    int mode = game_menu();
    sync.init(&uLCD, mode);                            // Connect to the other player.
    pc.printf("Initialized...\n");              // Let us know you finished initializing.
}

int main (void) {
    int* p2_buttons;
    
    long int tick, pre_tick;
    srand (time(NULL));
    Timer timer;
    
    
    game_init();
    
    timer.start();
    tick = timer.read_ms();
    pre_tick = tick;

    
    float theta = 0;
    while(1) {
        
        sync.line(64,64,64+50*cos(theta),64+50*sin(theta), BLACK);
        theta += 0.05;
        sync.line(64,64,64+50*cos(theta),64+50*sin(theta), RED);
        sync.circle(10,10,100, GREEN);
        sync.filled_circle(4,4,10, 0xAB);
        sync.triangle(10,10, 20,20, 20,40, 0xAB);
        sync.rectangle(100,100, 90,90, GREEN);
        sync.filled_rectangle(100,100, 110,110, 0xAB);
        sync.pixel(40, 40, WHITE);
        
        
        tick = timer.read_ms(); // Read current time
        if(tick-pre_tick < 100){;}
        pre_tick = tick;
        
        sync.update();
        p2_buttons = sync.get_button_state();
        
        led1 = p2_buttons[0] ^ !pb_u;
        led2 = p2_buttons[1] ^ !pb_r;
        led3 = p2_buttons[2] ^ !pb_d;
        led4 = p2_buttons[3] ^ !pb_l;
        
        //pc.printf("Button State: %x %x %x %x %x\n", buttons[0], buttons[1], buttons[2], buttons[3], buttons[4]);
        //pc.printf("\033[2J\033[0;0H");
    } 
}