Emina Muharemovic Hamdija Sinanovic

Dependencies:   N5110 mbed

Files at this revision

API Documentation at this revision

Comitter:
tim004
Date:
Mon Jun 09 07:59:44 2014 +0000
Commit message:
Hamdija Sinanovic; Emina Muharemovic

Changed in this revision

N5110.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 72dfee80b000 N5110.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/N5110.lib	Mon Jun 09 07:59:44 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/eencae/code/N5110/#7701f0126ba7
diff -r 000000000000 -r 72dfee80b000 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 09 07:59:44 2014 +0000
@@ -0,0 +1,401 @@
+#include "mbed.h"
+#include "N5110.h"
+
+#define POLUPRECNIK 5
+
+N5110 display (dp4, dp24, dp23, dp25, dp2, dp6, dp18);
+AnalogIn VRx(dp11);
+AnalogIn VRy(dp10);
+InterruptIn SW(dp9);
+DigitalOut enable(dp14);
+Timer deb;
+
+bool tabela = false;
+bool player1 = true;
+bool nerjeseno = false;
+
+int pobjedeX;
+int pobjedeO;
+int brojac;
+
+struct kursor {
+    int x;
+    int y;
+} _c;
+
+struct polje {
+    kursor gore_lijevo;
+    kursor dolje_desno;
+    char vrijednost;
+};
+
+polje ekran[3][3];
+
+
+void postaviPolja(){
+
+ekran[0][0].gore_lijevo.x = 0;
+ekran[0][0].gore_lijevo.y = 0;
+ekran[0][0].dolje_desno.x = 26;
+ekran[0][0].dolje_desno.y = 14;
+ekran[0][0].vrijednost = 'a';
+
+ekran[0][1].gore_lijevo.x = 0;
+ekran[0][1].gore_lijevo.y = 16;
+ekran[0][1].dolje_desno.x = 26;
+ekran[0][1].dolje_desno.y = 30;
+ekran[0][1].vrijednost = 'a';
+
+ekran[0][2].gore_lijevo.x = 0;
+ekran[0][2].gore_lijevo.y = 32;
+ekran[0][2].dolje_desno.x = 26;
+ekran[0][2].dolje_desno.y = 47;
+ekran[0][2].vrijednost = 'a';
+
+ekran[1][0].gore_lijevo.x = 28;
+ekran[1][0].gore_lijevo.y = 0;
+ekran[1][0].dolje_desno.x = 54;
+ekran[1][0].dolje_desno.y = 14;
+ekran[1][0].vrijednost = 'a';
+
+ekran[1][1].gore_lijevo.x = 28;
+ekran[1][1].gore_lijevo.y = 16;
+ekran[1][1].dolje_desno.x = 54;
+ekran[1][1].dolje_desno.y = 30;
+ekran[1][1].vrijednost = 'a';
+
+ekran[1][2].gore_lijevo.x = 28;
+ekran[1][2].gore_lijevo.y = 32;
+ekran[1][2].dolje_desno.x = 54;
+ekran[1][2].dolje_desno.y = 47;
+ekran[1][2].vrijednost = 'a';
+
+ekran[2][0].gore_lijevo.x = 56;
+ekran[2][0].gore_lijevo.y = 0;
+ekran[2][0].dolje_desno.x = 83;
+ekran[2][0].dolje_desno.y = 14;
+ekran[2][0].vrijednost = 'a';
+
+ekran[2][1].gore_lijevo.x = 56;
+ekran[2][1].gore_lijevo.y = 16;
+ekran[2][1].dolje_desno.x = 83;
+ekran[2][1].dolje_desno.y = 30;
+ekran[2][1].vrijednost = 'a';
+
+ekran[2][2].gore_lijevo.x = 56;
+ekran[2][2].gore_lijevo.y = 32;
+ekran[2][2].dolje_desno.x = 83;
+ekran[2][2].dolje_desno.y = 47;
+ekran[2][2].vrijednost = 'a';
+}
+
+int mod; //0 - pocetni; 1 - singleplayer; 2 - multiplayer
+int player;
+int polja[3][3];
+
+void cursor(int x, int y)
+{
+    display.setPixel(x, y+1);
+    display.setPixel(x-1, y);
+    display.setPixel(x, y);
+    display.setPixel(x+1, y);
+    display.setPixel(x, y-1);
+    display.refresh();
+}
+
+void drawTable();
+void osvjezi();
+
+void brisi(int x, int y)
+{
+    display.clearPixel(x, y+1);
+    display.clearPixel(x-1, y);
+    display.clearPixel(x, y);
+    display.clearPixel(x+1, y);
+    display.clearPixel(x, y-1);
+    display.refresh();
+    if(tabela) {
+        drawTable();
+        osvjezi();
+    }
+}
+
+void Lijevo(int &x, int &y)
+{
+    if(x>1){
+        brisi(x,y);
+        x=x-1;
+        cursor(x,y);
+        
+    }
+}
+ 
+void Desno(int &x, int &y)
+{
+    if(x<82){
+        brisi(x,y);
+        x=x+1;
+        cursor(x,y);
+    }
+}
+ 
+void Gore(int &x, int &y)
+{
+    if(y>1){
+        brisi(x,y);
+        y=y-1;
+        cursor(x,y);
+    }
+}
+ 
+void Dolje(int &x, int &y)
+{
+    if(y<46){
+        brisi(x,y);
+        y=y+1;
+        cursor(x,y);
+    }
+}
+
+void tekst();
+
+void inicijalizirajDisplej(){
+    tekst();
+}
+
+void tekst() {
+    display.setXYAddress(0, 0);
+    display.printChar('I');
+    display.printChar('z');
+    display.printChar('a');
+    display.printChar('b');
+    display.printChar('e');
+    display.printChar('r');
+    display.printChar('i');
+    display.printChar('t');
+    display.printChar('e');
+    display.printChar(' ');
+    display.printChar('m');
+    display.printChar('o');
+    display.printChar('d');
+    display.printChar(':');
+    display.setXYAddress(0, 2);
+    display.printChar('1');
+    display.printChar(' ');
+    display.printChar('i');
+    display.printChar('g');
+    display.printChar('r');
+    display.printChar('a');
+    display.printChar('c');
+    display.setXYAddress(0, 4);
+    display.printChar('2');
+    display.printChar(' ');
+    display.printChar('i');
+    display.printChar('g');
+    display.printChar('r');
+    display.printChar('a');
+    display.printChar('c');
+    display.printChar('a');
+    
+}
+
+void drawTable() {
+    for(int i = 0; i < 84; i++) {
+        display.setPixel(i, 15);
+        display.setPixel(i, 31);
+    }
+    for(int i = 0; i < 48; i++) {
+        display.setPixel(27, i);
+        display.setPixel(55, i);
+    }
+    display.refresh();
+}
+
+void singleplayerMod(){
+    display.clear();
+    mod = 1;
+    tabela = true;
+    drawTable();
+}
+
+void multiplayerMod(){
+    display.clear();
+    tabela = true;
+    drawTable();
+    mod = 2;
+}
+
+void izbor (){
+    if(_c.y >= 8*2 && _c.y <= 8*3) {singleplayerMod();}
+    else if(_c.y >= 8*4 && _c.y <= 8*5) {multiplayerMod();}
+}
+
+void krajIgre() {
+    display.clear();
+    display.printChar('R');
+    display.printChar('e');
+    display.printChar('z');
+    display.printChar('u');
+    display.printChar('l');
+    display.printChar('t');
+    display.printChar('a');
+    display.printChar('t');
+    display.printChar(':');
+    display.printChar(' ');
+    display.printChar('0' + pobjedeX);
+    display.printChar('-');
+    display.printChar('0' + pobjedeO);
+    wait(3);
+    display.clear();
+    drawTable();
+    for(int i = 0; i < 3; i++) {
+        for(int j = 0; j < 3;  j++) {
+            ekran[i][j].vrijednost = 'a';
+        }
+    }
+    brojac = 0;
+}
+
+void provjeriPobjede() {
+    if(
+    (ekran[0][0].vrijednost == ekran[0][1].vrijednost && ekran[0][1].vrijednost == ekran[0][2].vrijednost && ekran[0][2].vrijednost != 'a') ||
+    (ekran[1][0].vrijednost == ekran[1][1].vrijednost && ekran[1][1].vrijednost == ekran[1][2].vrijednost && ekran[1][2].vrijednost != 'a') ||
+    (ekran[2][0].vrijednost == ekran[2][1].vrijednost && ekran[2][1].vrijednost == ekran[2][2].vrijednost && ekran[2][2].vrijednost != 'a') ||
+    (ekran[0][0].vrijednost == ekran[1][0].vrijednost && ekran[1][0].vrijednost == ekran[2][0].vrijednost && ekran[2][0].vrijednost != 'a') ||
+    (ekran[0][1].vrijednost == ekran[1][1].vrijednost && ekran[1][1].vrijednost == ekran[2][1].vrijednost && ekran[2][1].vrijednost != 'a') ||
+    (ekran[0][2].vrijednost == ekran[1][2].vrijednost && ekran[1][2].vrijednost == ekran[2][2].vrijednost && ekran[2][2].vrijednost != 'a') ||
+    (ekran[0][0].vrijednost == ekran[1][1].vrijednost && ekran[1][1].vrijednost == ekran[2][2].vrijednost && ekran[2][2].vrijednost != 'a') ||
+    (ekran[0][2].vrijednost == ekran[1][1].vrijednost && ekran[1][1].vrijednost == ekran[2][0].vrijednost && ekran[2][0].vrijednost != 'a')
+    ) {
+        if(player1) {
+            pobjedeX++;
+            wait(1);
+            krajIgre();
+        }
+        else {
+            pobjedeO++;
+            wait(1);
+            krajIgre();
+        }
+    }
+}
+
+void crtajX(int x, int y);
+void crtajO(int x0, int y0, int radius);
+
+void klik() {
+    if(deb.read_ms() > 400) {
+        if(mod == 0) izbor();
+        else {
+            for(int i = 0; i < 3; i++) {
+                for(int j = 0; j < 3; j++) {
+                    if(_c.x >= ekran[i][j].gore_lijevo.x &&_c.x <= ekran[i][j].dolje_desno.x && _c.y >= ekran[i][j].gore_lijevo.y && _c.y <= ekran[i][j].dolje_desno.y && ekran[i][j].vrijednost == 'a') {
+                        if(player1) {
+                            crtajX(13+28*i, 7+16*j); 
+                            ekran[i][j].vrijednost = 'X';
+                            provjeriPobjede();
+                            brojac++;
+                        } 
+                        else {
+                            crtajO(13+28*i, 7+16*j, POLUPRECNIK);
+                            ekran[i][j].vrijednost = 'O';
+                            provjeriPobjede();
+                            brojac++;
+                        }
+                        player1 = !player1;
+                        if(mod == 1) {
+                            for(int a = 0; a < 3; a++) {
+                                for(int b = 0; b < 3; b++) {
+                                    if(ekran[a][b].vrijednost == 'a' && !player1) {
+                                        crtajO(13+28*a, 7+16*b, POLUPRECNIK);
+                                        ekran[a][b].vrijednost = 'O';
+                                        provjeriPobjede();
+                                        player1 = !player1;
+                                        brojac++;
+                                    }
+                                }
+                            }
+                        }
+                        if(brojac == 9) {
+                            wait(1);
+                            krajIgre();
+                        }
+                    }
+                }
+            }
+        }
+        deb.reset();
+    }
+}
+
+void crtajX(int x, int y) {
+    display.setPixel(x, y);
+    for(int i = 1; i <= 5; i++) {
+        display.setPixel(x+i, y+i);
+        display.setPixel(x+i, y-i);
+        display.setPixel(x-i, y+i);
+        display.setPixel(x-i, y-i);
+    }
+    display.refresh();
+}
+
+void crtajO(int x0, int y0, int radius) {
+    int x = radius, y = 0;
+    int radiusError = 1-x;
+ 
+    while(x >= y)
+    {
+        display.setPixel(x + x0, y + y0);
+        display.setPixel(y + x0, x + y0);
+        display.setPixel(-x + x0, y + y0);
+        display.setPixel(-y + x0, x + y0);
+        display.setPixel(-x + x0, -y + y0);
+        display.setPixel(-y + x0, -x + y0);
+        display.setPixel(x + x0, -y + y0);
+        display.setPixel(y + x0, -x + y0);
+        y++;
+        if (radiusError<0)
+        {
+            radiusError += 2 * y + 1;
+        } else {
+            x--;
+            radiusError+= 2 * (y - x + 1);
+        }
+    }
+    display.refresh();
+}
+
+void osvjezi() {
+    for(int i = 0; i < 3; i++) {
+        for(int j = 0; j < 3; j++) {
+            if(ekran[i][j].vrijednost == 'X') {
+                crtajX(13+28*i, 7+16*j);
+            }
+            else if(ekran[i][j].vrijednost == 'O') {
+                crtajO(13+28*i, 7+16*j, POLUPRECNIK);
+            }
+        }
+    }
+}
+
+int main() {
+    enable = 1;
+    SW.mode(PullUp);
+    pobjedeX = 0;
+    pobjedeO = 0;
+    _c.x = 1;
+    _c.y = 1;
+    mod = 0;
+    display.init();
+    SW.rise(&klik);
+    deb.start();
+    inicijalizirajDisplej();
+    postaviPolja();
+    while(1) {
+        if(mod == 0) tekst();
+        if(VRx < 1.0/3.0) Lijevo(_c.x, _c.y);
+        else if(VRx > 2.0/3.0) Desno(_c.x, _c.y);
+        if(VRy < 1.0/3.0) Gore(_c.x, _c.y);
+        else if(VRy > 2.0/3.0) Dolje(_c.x, _c.y);
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r 72dfee80b000 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Jun 09 07:59:44 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877
\ No newline at end of file