Mine Field Game

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed wave_player

Files at this revision

API Documentation at this revision

Comitter:
evgeniy
Date:
Mon Mar 09 20:46:46 2015 +0000
Child:
1:d6304f6b4e03
Commit message:
Mine Field Game;

Changed in this revision

4DGL-uLCD-SE.lib Show annotated file Show diff for this revision Revisions of this file
SDFileSystem.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
wave_player.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/4DGL-uLCD-SE.lib	Mon Mar 09 20:46:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/4180_1/code/4DGL-uLCD-SE/#e39a44de229a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SDFileSystem.lib	Mon Mar 09 20:46:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/mbed_official/code/SDFileSystem/#7b35d1709458
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Mar 09 20:46:46 2015 +0000
@@ -0,0 +1,165 @@
+#include "mbed.h"
+#include "uLCD_4DGL.h"
+#include "SDFileSystem.h"
+#include "wave_player.h"
+
+uLCD_4DGL lcd(p28, p27, p30);
+AnalogIn AnalogX(p15);
+AnalogIn AnalogY(p16);
+SDFileSystem sd(p5,p6,p7,p8,"sd");
+AnalogOut DACout(p18);
+
+bool lose = false;
+
+int main() {
+    int AnalogXReading;
+    int AnalogYReading;
+    lcd.baudrate(3000000);
+    int mine_field[4][4];
+    wave_player waver(&DACout);
+    
+    
+    int round = 1;
+    int mine;
+    while(round <=3 && lose == false)
+    {
+        lcd.text_width(2); //2X size text
+        lcd.text_height(2);
+        lcd.printf("\n  Round \n    %d ", round);
+        //printf("%d\n",round);
+        int mine_location[round];
+        
+        for(int i=0; i<4; i++)
+        {
+            for(int j=0; j<4; j++)
+            {
+                mine_field[i][j]=0;
+            }
+        }
+        
+        for(int i=0;i<round;i++)
+        {
+            bool same = false;
+            mine = rand() % 14 + 1; 
+            do
+            {
+                for(int i=0; i<round; i++)
+                {
+                    if(mine == mine_location[i])
+                    {
+                        same = true;
+                        mine = rand() % 14 + 1; 
+                    }
+                    else
+                        same = false;
+                }
+            }while(same == true);
+
+            mine_location[i]=mine;
+            mine_field[mine%4][mine/4]=1;
+        }
+        
+        int startPointX=0;
+        int startPointY=0;
+        bool win=false;
+        int previousX=0;
+        int previousY=0;
+        wait(3);
+        lcd.cls();
+        while(1) {
+            AnalogXReading = AnalogX.read()*128;
+            AnalogYReading = AnalogY.read()*128;
+            //lcd.cls();
+            lcd.line(0, 31 , 127, 31 , 0xFF0000);
+            lcd.line(0, 63 , 127, 63 , 0xFF0000);
+            lcd.line(0, 95 , 127, 95, 0xFF0000);
+            lcd.line(31,0, 31, 127, 0xFF0000);
+            lcd.line(63, 0, 63, 127, 0xFF0000);
+            lcd.line(95, 0 , 95, 127, 0xFF0000);
+            if(AnalogXReading >118)
+            {
+                if(startPointX<3)
+                    startPointX++;
+            }
+            if(AnalogXReading <10)
+            {
+                if(startPointX>0)
+                    startPointX--;
+            }
+            if(AnalogYReading >118)
+            {
+                if(startPointY>0)
+                    startPointY--;
+            }
+            if(AnalogYReading <10)
+            {
+                if(startPointY<3)
+                    startPointY++;
+            }
+            
+            //update ballLocation Here
+            lcd.circle(32*startPointX+15, 32*startPointY+15, 5, 0xFF0000);
+            
+            for(int i=0 ; i<4; i++)
+            {
+                for(int j=0; j<4;j++)
+                {
+                    if(mine_field[i][j]==1)
+                        lcd.circle(32*i+15, 32*j+15, 5, BLUE);
+                }
+            }
+            
+            if(previousX != startPointX || previousY!= startPointY)
+            {
+                lcd.circle(32*previousX+15, 32*previousY+15, 5, GREEN);
+                previousX=startPointX;
+                previousY=startPointY;
+            }
+            
+            
+            if(startPointX == 3 && startPointY == 3)
+                win = true;
+            else if(mine_field[startPointX][startPointY]==1)
+                lose= true;
+            
+            if(win)
+            {
+                //make screen green
+                lcd.cls();
+                if(round ==3)
+                {
+                    lcd.media_init();
+                    lcd.set_sector_address(0x0000, 0x001D);
+                    lcd.display_image(0,0);
+                }
+                break;
+            }
+            if(lose)
+            {
+                //make screen red
+                lcd.cls();
+                lcd.text_width(2); //2X size text
+                lcd.text_height(2);
+                break;
+            }
+            wait(1);
+        }
+        round++;
+    }
+    lcd.text_width(2); //2X size text
+    lcd.text_height(2);
+    if(lose == true)
+    {
+        lcd.printf("You lose! ");
+        FILE *wave_file = fopen("/sd/SDfiles/bad_disk_x.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+    }                                                                                    
+    else
+    {
+        lcd.printf("You won!");
+        FILE *wave_file = fopen("/sd/SDfiles/applause_y.wav","r");
+        waver.play(wave_file);
+        fclose(wave_file);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Mar 09 20:46:46 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/7e07b6fb45cf
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wave_player.lib	Mon Mar 09 20:46:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/sravet/code/wave_player/#acc3e18e77ad