ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

main.cpp

Committer:
el17cd
Date:
2019-03-24
Revision:
12:b69657862610
Parent:
11:2cd6341136ca
Child:
13:f4de03202477

File content as of revision 12:b69657862610:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Christopher Doel
Username: el17cd
Student ID Number: 201146223
Date: 22/02/19
*/

#include "mbed.h"
#include <vector>
#ifndef FACE_H
#define FACE_H
#include "Face.h"
#endif
#include "Rasturizer.h"
#include "Cube.h"
#include "Gamepad.h"

Ticker ticker;
Gamepad gamepad;
std::vector<Cube> cubeVector;
std::vector<Face> faceVector;


int main()
{
    int score = 0;
    gamepad.init();
    Rasturizer renderer;
    for(int i = 0; i < 2; i++){
        Cube cube(rand()%80-40,0,30+ i*20,5);
        cubeVector.push_back(cube);
    }
    while(1) {
        score++;
        Vector2D coord = gamepad.get_coord();
        renderer.clear();
        renderer.drawHorizon(coord.x/15);
        bool rotate1 = false;
        if(gamepad.check_event(Gamepad::B_PRESSED) == true){
            rotate1 = true;
        }
        bool rotate2 = false;
        if(gamepad.check_event(Gamepad::X_PRESSED) == true){
            rotate2 = true;
        }

        for (int c = 0; c< cubeVector.size(); c++)
        {  
            if(rotate1){
                cubeVector[c].rotateZ(0.2);
            }
            if(rotate2){
                cubeVector[c].rotateZ(-0.2);
            }
            for (int i = 0; i < 6; i++){
                faceVector.push_back(cubeVector[c].getFace(i));
            }
            cubeVector[c].translate(-coord.x*2,0,coord.y*2);

            if (cubeVector[c].despawn()){
                cubeVector.erase(cubeVector.begin() + c);
                Cube cube(rand()%160-80,0,90,5);
                cubeVector.push_back(cube);
            }
            if (cubeVector[c].tooClose()){
                score = 0;
            }
        }
      
      
      
        for (int f = 0; f< faceVector.size(); f++){
            for (int f2 = 0; f2< faceVector.size(); f2++){
                if(faceVector[f2].getAvgZ() < faceVector[f2+1].getAvgZ()){
                    Face temp = faceVector[f2+1];
                    faceVector[f2+1] = faceVector[f2];
                    faceVector[f2] = temp;
                }
            }
        }
        
        for (int f = 0; f< faceVector.size() ; f++){
            //pc.printf("%f\n", faceVector[f].getAvgZ());
            renderer.drawFace(faceVector[f], coord.x/15);
            //wait_ms(1000/1);
           
        }
        //char buf[10];
        //sprintf(buf, "%d", score);
        //renderer.print(buf);
        renderer.refresh();
        faceVector.clear();  
         // refresh the LCD so the pixels appear
         // this gives a refresh rate of 10 frames per second
         
        wait_ms(1000/30);
    }
}