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.
Diff: main.cpp
- Revision:
- 0:a5f6ba8c378e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 05 17:37:09 2014 +0000 @@ -0,0 +1,332 @@ +#include "mbed.h" +#include "N5110.h" +#include "Reket.h" +#include "Loptica.h" + +Reket rLijevi (2, 3, 21, 28); +Reket rDesni (80, 81, 21, 28); +Loptica loptica (41, 12, 2, 1); + +int p1_skor = 0; +int p2_skor = 0; + +int zaustaviX, zaustaviY; + +N5110 display(dp4,dp24,dp23,dp25,dp2,dp6,dp18); +DigitalOut enable (dp14); + +AnalogIn P1(dp9); +AnalogIn P2(dp10); + +InterruptIn taster(dp1); +Ticker t; +Timer dbnc; +Timer dvostruki; + +bool pauza = true; +bool poen = false; +bool reset = false; + +void Lcifre(int cifra) +{ + if(cifra == 0) + { + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 1); + for(int i = 0; i < 5; i++) + display.setPixel(34, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 5); + for(int i = 0; i < 5; i++) + display.setPixel(31, 1 + i); + } + else if(cifra == 1) + { + for(int i = 0; i < 5; i++) + display.setPixel(34, 1 + i); + } + else if(cifra == 2) + { + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 1); + for(int i = 0; i < 3; i++) + display.setPixel(34, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 3); + for(int i = 0; i < 3; i++) + display.setPixel(31, 3 + i); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 5); + } + else if(cifra == 3) + { + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 1); + for(int i = 0; i < 5; i++) + display.setPixel(34, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 3); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 5); + } + else if(cifra == 4) + { + for(int i = 0; i < 3; i++) + display.setPixel(31, 1 + i); + for(int i = 0; i < 5; i++) + display.setPixel(34, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 3); + } + else if(cifra == 5) + { + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 1); + for(int i = 0; i < 3; i++) + display.setPixel(31, i + 1); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 3); + for(int i = 0; i < 3; i++) + display.setPixel(34, i + 3); + for(int i = 0; i < 4; i++) + display.setPixel(31 + i, 5); + } + display.refresh(); +} + +void Rcifre(int cifra) +{ + if(cifra == 0) + { + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 1); + for(int i = 0; i < 5; i++) + display.setPixel(48, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 5); + for(int i = 0; i < 5; i++) + display.setPixel(51, 1 + i); + } + else if(cifra == 1) + { + for(int i = 0; i < 5; i++) + display.setPixel(48, 1 + i); + } + else if(cifra == 2) + { + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 1); + for(int i = 0; i < 3; i++) + display.setPixel(51, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 3); + for(int i = 0; i < 3; i++) + display.setPixel(48, 3 + i); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 5); + } + else if(cifra == 3) + { + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 1); + for(int i = 0; i < 5; i++) + display.setPixel(51, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 3); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 5); + } + else if(cifra == 4) + { + for(int i = 0; i < 3; i++) + display.setPixel(48, 1 + i); + for(int i = 0; i < 5; i++) + display.setPixel(51, 1 + i); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 3); + } + else if(cifra == 5) + { + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 1); + for(int i = 0; i < 3; i++) + display.setPixel(48, i + 1); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 3); + for(int i = 0; i < 3; i++) + display.setPixel(51, i + 3); + for(int i = 0; i < 4; i++) + display.setPixel(48 + i, 5); + } + display.refresh(); +} + +void Lbrisi() +{ + for(int i = 0; i < 4; i++) + display.clearPixel(31 + i, 1); + for(int i = 0; i < 5; i++) + display.clearPixel(34, 1 + i); + for(int i = 0; i < 4; i++) + display.clearPixel(31 + i, 3); + for(int i = 0; i < 4; i++) + display.clearPixel(31 + i, 5); + for(int i = 0; i < 5; i++) + display.clearPixel(31, 1 + i); + display.refresh(); +} + +void Rbrisi() +{ + for(int i = 0; i < 4; i++) + display.clearPixel(48 + i, 1); + for(int i = 0; i < 5; i++) + display.clearPixel(51, 1 + i); + for(int i = 0; i < 4; i++) + display.clearPixel(48 + i, 3); + for(int i = 0; i < 4; i++) + display.clearPixel(48 + i, 5); + for(int i = 0; i < 5; i++) + display.clearPixel(48, 1 + i); + display.refresh(); +} + +void igraj() +{ + if(poen) return; + + for(int i = 0; i < 47; i++) + display.setPixel(41, i); + display.refresh(); + + rLijevi.brisiReket(display); + if(!pauza) + rLijevi.osvjeziPoziciju(P1); + rLijevi.crtajReket(display); + + rDesni.brisiReket(display); + if(!pauza) + rDesni.osvjeziPoziciju(P2); + rDesni.crtajReket(display); + + loptica.brisiLopticu(display); + if(!pauza) + loptica.osvjeziPoziciju(); + loptica.crtajLopticu(display); + + if(loptica.dajX() <= 5) + { + if(loptica.dajY() == rLijevi.dajY1() or loptica.dajY() == rLijevi.dajY1() + 1) + loptica.postaviKorak(2, -2); + else if (loptica.dajY() == rLijevi.dajY1() + 2 or loptica.dajY() == rLijevi.dajY1() + 3) + loptica.postaviKorak(2, -1); + else if (loptica.dajY() == rLijevi.dajY1() + 4) + loptica.postaviKorak(2, 0); + else if (loptica.dajY() == rLijevi.dajY1() + 5 or loptica.dajY() == rLijevi.dajY1() + 6) + loptica.postaviKorak(2, 1); + else if (loptica.dajY() == rLijevi.dajY1() + 7 or loptica.dajY() == rLijevi.dajY1() + 8) + loptica.postaviKorak(2, 2); + } + + if(loptica.dajX() >= 0 and loptica.dajX() < 2) + { + if((loptica.dajY() < rLijevi.dajY1() - 1) or (loptica.dajY() > rLijevi.dajY2() + 1)) + { + p2_skor++; + loptica.brisiLopticu(display); + loptica.setX(41); + loptica.setY(12); + loptica.postaviKorak(2, 1); + if(p2_skor == 5) + poen = true; + else return; + } + } + + if(loptica.dajX() >= 78) + { + if(loptica.dajY() == rDesni.dajY1() or loptica.dajY() == rDesni.dajY1() + 1) + loptica.postaviKorak(-2, -2); + else if(loptica.dajY() == rDesni.dajY1() + 2 or loptica.dajY() == rDesni.dajY1() + 3) + loptica.postaviKorak(-2, -1); + else if(loptica.dajY() == rDesni.dajY1() + 4) + loptica.postaviKorak(-2, 0); + else if(loptica.dajY() == rDesni.dajY1() + 5 or loptica.dajY() == rDesni.dajY1() + 6) + loptica.postaviKorak(-2, 1); + else if(loptica.dajY() == rDesni.dajY1() + 7 or loptica.dajY() == rDesni.dajY1() + 8) + loptica.postaviKorak(-2, 2); + } + + if(loptica.dajX() >= 81 and loptica.dajX() <= 83) + { + if((loptica.dajY() < rDesni.dajY1() - 1) or (loptica.dajY() > rDesni.dajY2() + 1)) + { + p1_skor++; + loptica.brisiLopticu(display); + loptica.setX(41); + loptica.setY(12); + loptica.postaviKorak(-2, 1); + if(p1_skor == 5) + poen = true; + else return; + } + } + + if(loptica.dajY() <= 1 or loptica.dajY() >= 46) + loptica.postaviKorak(loptica.dajKorakX(), loptica.dajKorakY() * (-1)); + + Lbrisi(); + Rbrisi(); + Lcifre(p1_skor); + Rcifre(p2_skor); + + if(poen) + { + loptica.setX(41); + loptica.setY(12); + loptica.postaviKorak(0, 0); + if(p1_skor == 5) display.printString("P1WINS", 2, 2); + if(p2_skor == 5) display.printString("P2 WINS", 43, 2); + } + + if(reset) + { + loptica.setX(41); + loptica.setY(12); + loptica.postaviKorak(-2, 1); + display.clear(); + reset = false; + poen = false; + p1_skor = 0; + p2_skor = 0; + } +} + +void pauzaStartRestart() +{ + if(dbnc.read_ms() > 200 and dvostruki.read_ms() > 800) + { + dbnc.reset(); + dvostruki.reset(); + pauza = !pauza; + } + + if(dvostruki.read_ms() < 800 and dbnc.read_ms() > 200) + { + reset = true; + poen = false; + dbnc.reset(); + dvostruki.reset(); + } +} + +int main() { + enable = 1; + display.init(); + display.setXYAddress(0, 0); + taster.rise(&pauzaStartRestart); + t.attach(&igraj, 0.08); + dbnc.start(); + dvostruki.start(); + while(1) {} +}