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
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);
}
}