Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Revision:
43:233f93860d08
Parent:
42:973bb6036f81
Child:
47:b448ffd073e7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MenuClasses/StartScreen/StartScreen.cpp	Thu Apr 25 18:12:17 2019 +0000
@@ -0,0 +1,369 @@
+#include "StartScreen.h"
+Settings settings;
+
+int sprite[48][84] = {
+    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1},
+    {1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1},
+    {1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1},
+    {1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1},
+    {1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1},
+    {1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1},
+    {1,0,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,1},
+    {1,0,0,0,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,1},
+    {1,0,0,0,0,0,0,1,1,1,1,0,1,1,0,1,0,1,0,1,1,1,1,1,1,1,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,1,1,0,0,0,1},
+    {1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,1},
+    {1,0,0,0,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,0,1,1,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,0,0,1},
+    {1,0,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,1,0,1},
+    {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
+    {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
+
+};
+    
+int arrow[7][9] = {
+    {0,0,0,0,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0,0},
+    {0,0,1,1,1,0,0,0,0},
+    {0,1,1,1,1,1,1,1,1},
+    {0,0,1,1,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0,0},
+    {0,0,0,0,1,0,0,0,0},
+};
+    
+int bullet[13][5] = {
+    {1,0,0,0,1},
+    {1,0,0,0,1},
+    {0,1,0,1,0},
+    {0,0,1,0,0},
+    {0,0,0,0,0},
+    {0,0,1,0,0},
+    {0,0,1,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,0,0,0},
+    {0,0,1,0,0},
+    {0,0,1,0,0},
+};
+int navL[13][8] = {
+    {0,0,0,0,0,0,1,1},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {1,1,0,0,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,0,0,1,1},
+};
+
+int navR[13][8] = {
+    {1,1,0,0,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,0,0,1,1},
+    {0,0,0,0,0,1,1,0},
+    {0,0,0,0,1,1,0,0},
+    {0,0,0,1,1,0,0,0},
+    {0,0,1,1,0,0,0,0},
+    {0,1,1,0,0,0,0,0},
+    {1,1,0,0,0,0,0,0},
+};
+
+StartScreen::StartScreen()
+{
+    
+}
+
+StartScreen::~StartScreen()
+{
+
+}
+
+void StartScreen::init()
+{
+    i = 16; //main menu selection arrow position
+    lr = 1; //game mode page selection.
+    gs = 1; //game speed page selection.
+    st = 1; //this is the sr num of settings pages.
+    sc = 1; //this helps in wether ot not to show credits to the user.
+    cs = 4; //sensitivity of control speed of menu options.
+}
+
+void StartScreen::screen_saver(N5110 &lcd, Gamepad &pad)
+{
+    //this saves the Theme song I want to play at the start.
+    StartScreen::init();
+    int song[18] = {441,494,439,372,392,370,330,246,329,331,370,555,555,495,440,392,392,370};
+    pad.leds_on();
+    
+    for(int ani = -51; ani <= 0; ani+=3)  {
+        lcd.clear();
+        lcd.drawSprite(0,ani,48,84,(int *)sprite); //Function used to draw the sprite
+        lcd.refresh();
+        pad.tone(song[(ani+48)/3],0.1);
+        wait(0.2);
+    }
+    
+    wait(0.3);
+    pad.leds_off();
+    lcd.clear();
+}
+
+void StartScreen::instruct(N5110 &lcd, Gamepad &pad)
+{
+    lcd.printString("Please Press",5,1); //Function used to promt the user to start.
+    lcd.printString("Start",25,3);
+    lcd.printString("to Begin",15,5);
+    lcd.refresh();
+    pad.init();
+    while ( pad.check_event(Gamepad::START_PRESSED) == false) {
+        pad.leds_on();
+        wait(0.1);
+        pad.leds_off();
+        wait(0.1);
+    }
+    pad.tone(1000.0,0.1);
+    lcd.clear();
+    pad.leds_off();
+}
+    
+void StartScreen::info(N5110 &lcd, Gamepad &pad)
+{   
+    if(sc ==1)  {
+        lcd.printString("Created BY",8,1);
+        lcd.printString("Ahmed",24,3);
+        lcd.printString("Adamjee",20,4);
+        lcd.printString("201161436",15,5);
+        lcd.refresh();
+        wait(2);
+    }
+    lcd.clear();
+}
+
+void StartScreen::main_menu(N5110 &lcd, Gamepad &pad, SDFileSystem &sd)
+{
+    lcd.clear();
+    StartScreen::init();
+    pad.init();
+    while ((pad.check_event(Gamepad::A_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
+        StartScreen::DisplayMMContents(lcd, pad);
+    }
+    pad.tone(1000.0,0.1);
+    wait(1/cs);
+    StartScreen::ImplementMM(lcd, pad, sd);
+}
+
+void StartScreen::DisplayMMContents(N5110 &lcd, Gamepad &pad)
+{   
+    lcd.printString("SnakeVSBlock",5,0);
+    lcd.printString("Play",0,2);
+    lcd.printString("Settings",0,3);
+    lcd.printString("Stats",0,4);
+    lcd.printString("Tutorial",0,5);
+    Direction d = pad.get_direction();
+    if((d==N)&&(i>16))  {
+            i=i-8;
+    }
+    if((d==S)&&(i<40))  {
+            i=i+8;
+    }
+    lcd.drawSprite(50,i,7,9,(int *)arrow); //Function used to draw the sprite.
+    lcd.refresh();
+    wait(1/cs);
+    lcd.clear();
+}
+
+void StartScreen::ImplementMM(N5110 &lcd, Gamepad &pad, SDFileSystem &sd)
+{   
+    if(i == 16) {
+        game_mode(lcd, pad, sd);
+    }
+    else if(i == 24) {
+        float *cs_sc;
+        cs_sc = settings.Implement(lcd, pad, st, cs);
+        pad.tone(1000.0,0.1);
+        cs = cs_sc[0];
+        sc = cs_sc[1];
+        main_menu(lcd, pad, sd);
+    }
+    else if(i == 32) {
+        _stats.StatsDisplay(lcd, pad, sd);
+        pad.tone(1000.0,0.1);
+        main_menu(lcd, pad, sd);
+    }
+    else {
+        main_menu(lcd, pad, sd);
+        lr=1;
+    }
+}
+
+void StartScreen::game_mode(N5110 &lcd, Gamepad &pad, SDFileSystem &sd)
+{
+    lcd.clear();
+    wait(2/cs);
+    pad.init();
+    while ((pad.check_event(Gamepad::A_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
+        StartScreen::ImplementGM(pad);
+        StartScreen::DisplayGMContents(lcd);
+        if (pad.check_event(Gamepad::BACK_PRESSED) == true) {  //This is a very important process, this helps the code to not get stuck in  menu loop.
+            pad.tone(1000.0,0.1);
+            back_pressed = 1;
+            break;
+        }
+        else {back_pressed = 0;}
+    }
+    if(back_pressed) {
+        main_menu(lcd, pad, sd);
+    }
+    else {
+        gs = 1;
+        pad.tone(1000.0,0.1);
+        lcd.clear();
+        game_speed(lcd, pad, sd);
+    }
+}
+
+void StartScreen::ImplementGM(Gamepad &pad)
+{   
+    Direction d = pad.get_direction();
+    wait(1/cs);
+    if(((d==E)||(d==W))&&(lr==1))  {
+        lr=2;
+    }
+    
+    else if(((d==E)||(d==W))&&(lr==2))  {
+        lr=1;
+    }
+}
+
+void StartScreen::DisplayGMContents(N5110 &lcd)
+{
+    lcd.clear();
+    lcd.drawRect(27,18,30,20,FILL_TRANSPARENT);
+    lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+    lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+    if(lr==1)  {
+        lcd.printString("Joystick",18,1);
+        g_mode = 1;
+        lcd.refresh();
+    }
+    if(lr==2)  {
+        lcd.printString("Motion Control",1,1);
+        g_mode = 2;
+        lcd.drawSprite(29,19,13,5,(int *)bullet); //Function used to draw the sprite.
+    }
+    lcd.refresh();
+}
+
+void StartScreen::game_speed(N5110 &lcd, Gamepad &pad, SDFileSystem &sd)
+{
+    lcd.clear();
+    wait(2/cs);
+    pad.init();
+    while ((pad.check_event(Gamepad::A_PRESSED) == false)&&(pad.check_event(Gamepad::START_PRESSED) == false)) {  //Change this to if button pressed.
+        StartScreen::ImplementGS(pad);
+        StartScreen::DisplayGSContents(lcd);
+        if (pad.check_event(Gamepad::BACK_PRESSED) == true) {  //This is a very important process, this helps the code to not get stuck in  menu loop.
+            pad.tone(1000.0,0.1);
+            back_pressed = 1;
+            break;
+        }
+        else {back_pressed = 0;}
+    }
+    if(back_pressed) {
+        game_mode(lcd, pad, sd);
+    }
+    else {
+        pad.tone(1000.0,0.1);
+        lcd.clear();
+        wait(1/cs);
+        lcd.printString("Level:",25,1); //created so that the gamer can keep track of their game. //change this to be operated remotely
+        lcd.printString("1",40,3);
+        lcd.refresh();
+        wait(2);
+    }
+}
+
+void StartScreen::ImplementGS(Gamepad &pad)
+{   
+    Direction d = pad.get_direction();
+    wait(1/cs);
+    if((d==E)&&(gs==4))  {
+        gs=1;
+    }
+    else if((d==W)&&(gs==1))  {
+        gs=4;
+    }
+    else if((d==E)&&(1<=gs<=3))  {
+        gs=gs+1;
+    }
+    else if((d==W)&&(2<=gs<=4))  {
+        gs=gs-1;
+    }
+}
+
+void StartScreen::DisplayGSContents(N5110 &lcd)
+{   
+    lcd.clear();
+    lcd.drawSprite(10,22,13,8,(int *)navL); //Function used to draw the sprite.
+    lcd.drawSprite(65,22,13,8,(int *)navR); //Function used to draw the sprite.
+    lcd.printString("Game Speed",10,1);
+    if(gs==1)  {
+        lcd.printString("SNAIL",26,3);
+        fps = 12;
+    }
+    if(gs==2)  {
+        lcd.printString("TURTLE",24,3);
+        fps = 18;
+    }
+    if(gs==3)  {
+        lcd.printString("RABBIT",24,3);
+        fps = 22;
+    }
+    if(gs==4)  {
+        lcd.printString("CHEETHA",21,3);
+        fps = 27;
+    }
+    lcd.refresh();
+}
\ No newline at end of file