Completed Snake Program

Dependencies:   N5110 PinDetect PowerControl mbed

Fork of DocTest by Craig Evans

Revision:
2:deb61a34ac31
Parent:
1:6fc14cd8ccf1
Child:
3:478b090b7e1b
diff -r 6fc14cd8ccf1 -r deb61a34ac31 main.cpp
--- a/main.cpp	Wed Mar 11 16:03:08 2015 +0000
+++ b/main.cpp	Wed Apr 08 20:00:37 2015 +0000
@@ -1,25 +1,156 @@
-/**
-@file main.cpp
+#include "mbed.h"
+#include "N5110.h"
+
+//    VCC,SCE,RST,D/C,MOSI,SCLK,LED
+N5110 lcd(p7,p8,p9,p10,p11,p13,p21);
+//d
 
-@brief Program implementation
+// Can also power (VCC) directly from VOUT (3.3 V) -
+// Can give better performance due to current limitation from GPIO pin
+enum Difficulty {
+    EASY,
+    MEDIUM,
+    HARD,
+};
+int gameSpeed;//change depending on difficulty selected
 
-*/
-#include "main.h"
+Difficulty currentDifficulty =EASY;
 
-int main() {
-    
-    /// flash LED in infinite loop
-    while(1) {
-        myled = 1;
-        wait(0.2);
-        myled = 0;
-        wait(0.2);
-    }
+void displaySplash()
+{
+    // these are default settings so not strictly needed
+    lcd.inverseMode();      // normal colour mode
+    lcd.setBrightness(0.5); // put LED backlight on 50%
+
+    //Draw S
+    lcd.drawRect(28,10,2,5,1);
+    lcd.drawRect(15,10,15,2,1);
+    lcd.drawRect(15,10,2,10,1);
+    lcd.drawRect(15,20,15,2,1);
+    lcd.drawRect(28,20,2,10,1);
+    lcd.drawRect(15,28,15,2,1);
+    lcd.drawRect(15,25,2,3,1);
+
+    lcd.printString("NAKE ",34,3);
+    lcd.printString("By M.Birney",10,5);
+    lcd.drawRect(10,5,65,30,0);
+
+    // need to refresh display after setting pixels
+
+    lcd.refresh();
 }
 
 
-int sum(int a, int b) {
-    
-    /// calculate the sum of the two arguments and return
-    return a + b;
+
+void easySelected() // display when easy is selected
+{
+    lcd.clear();
+    lcd.printString("Please Select",2,0);
+    lcd.printString("Difficulty:",2,1);
+    lcd.printString("Easy",20,3);
+    lcd.printString("Medium",20,4);
+    lcd.printString("Hard",20,5);
+    lcd.refresh();
+    lcd.drawCircle(10,27,2,1);
+    lcd.drawCircle(10,35,2,0);
+    lcd.drawCircle(10,43,2,0);
+
+    gameSpeed= 1.0;
+}
+void mediumSelected() // display when medium is selected
+{
+    lcd.clear();
+    lcd.printString("Please Select",2,0);
+    lcd.printString("Difficulty:",2,1);
+    lcd.printString("Easy",20,3);
+    lcd.printString("Medium",20,4);
+    lcd.printString("Hard",20,5);
+    lcd.refresh();
+    lcd.drawCircle(10,27,2,0);
+    lcd.drawCircle(10,35,2,1);
+    lcd.drawCircle(10,43,2,0);
+    gameSpeed=1.0/4;
+}
+
+void hardSelected() // display when hard is selected
+{
+    lcd.clear();
+    lcd.printString("Please Select",2,0);
+    lcd.printString("Difficulty:",2,1);
+    lcd.printString("Easy",20,3);
+    lcd.printString("Medium",20,4);
+    lcd.printString("Hard",20,5);
+    lcd.refresh();
+    lcd.drawCircle(10,27,2,0);
+    lcd.drawCircle(10,35,2,0);
+    lcd.drawCircle(10,43,2,1);
+    gameSpeed=1.0/8;
+}
+
+
+
+int main()
+{
+    // first need to initialise display
+    lcd.init();
+    displaySplash();
+    wait(1);
+
+    easySelected();
+    wait(2);
+    mediumSelected();
+    wait(2);
+    hardSelected();
+
+    while(1) {
+
+        switch(currentDifficulty) {
+            case EASY:
+
+                switch (joystick.direction)
+
+                case UP:
+                hardSelected;
+                break;
+
+
+            case DOWN:
+                mediumSelected;
+                break;
+
+                break;
+
+
+            case MEDIUM:
+
+                switch (joystick.direction)
+
+                case UP:
+                easySelected;
+                break;
+
+
+            case DOWN:
+                hardSelected;
+                break;
+
+
+
+                break;
+            case HARD:
+                switch (joystick.direction)
+
+                case UP:
+                mediumSelected;
+                break;
+
+
+            case DOWN:
+                easySelected;
+                break;
+                break;
+        }
+
+
+    }
 }
\ No newline at end of file