Wang Lin 201090174

Dependencies:   mbed Gamepad N5110 FXOS8700Q

Revision:
12:121ba031343a
Child:
13:febf9fbb502f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.h	Fri May 03 17:12:37 2019 +0000
@@ -0,0 +1,153 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include "mbed.h"
+#include "Gamepad.h"
+#include "N5110.h"
+#define length 100
+#define SNAKE_SIZE 2 
+ 
+N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
+Gamepad pad;
+ 
+//////////STRUCTURE///////////////
+struct Coor {
+    int x;
+    int y;    
+}COOR;
+ 
+struct Snake {
+    Coor snakezb[length]; //蛇每一届的坐标 蛇最大的长度
+    int n;   //number of snake points 当前节数        
+}SNAKE;
+struct Food{
+   Coor fc;
+}food;
+ 
+
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+
+void DrawSnake();
+//void DirSnake();
+void MoveSnake();
+int Dir;
+void RespawnFood();
+//void EatFood();
+//void BreakSnake();
+//void OverSnake();
+//void Speed();
+int waittime;
+Direction d;
+ 
+ 
+
+ 
+
+ 
+ 
+ 
+ void initSnake(){
+     for(int i = 1; i < SNAKE.n; i++){
+         SNAKE.snakezb[i].x = SNAKE.snakezb[i-1].x;
+         SNAKE.snakezb[i].y = SNAKE.snakezb[i-1].y-1;
+         }
+     }
+
+ 
+void DrawSnake()
+{
+        
+        for(int i = 0; i < SNAKE.n; i++){
+        lcd.drawRect(SNAKE.snakezb[i].x,SNAKE.snakezb[i].y,1,1,FILL_BLACK);
+        }
+    
+    
+}
+ 
+void MoveSnake()
+{
+    d = pad.get_direction();
+    if (pad.check_event(Gamepad::Y_PRESSED) || d == N){
+        Dir = 1;//up
+        }
+    else if (pad.check_event(Gamepad::A_PRESSED) || d == S){
+        Dir = 2;//down
+        }
+    else if (pad.check_event(Gamepad::X_PRESSED) || d == W){
+        Dir = 3;//left
+        }
+    else if (pad.check_event(Gamepad::B_PRESSED) || d == E){
+        Dir = 4;//right
+        }
+        
+    for(int i = SNAKE.n; i >0; i--){
+        SNAKE.snakezb[i].x = SNAKE.snakezb[i-1].x;
+        SNAKE.snakezb[i].y = SNAKE.snakezb[i-1].y;
+        }
+    if (Dir == 1){
+        SNAKE.snakezb[0].x = SNAKE.snakezb[0].x;
+        SNAKE.snakezb[0].y = SNAKE.snakezb[0].y-1;
+        }
+    else if (Dir == 2){
+        SNAKE.snakezb[0].x = SNAKE.snakezb[0].x;
+        SNAKE.snakezb[0].y = SNAKE.snakezb[0].y+1;
+        }
+    else if (Dir == 3){
+        SNAKE.snakezb[0].x = SNAKE.snakezb[0].x-1;
+        SNAKE.snakezb[0].y = SNAKE.snakezb[0].y;
+        }
+    else if (Dir == 4){
+        SNAKE.snakezb[0].x = SNAKE.snakezb[0].x+1;
+        SNAKE.snakezb[0].y = SNAKE.snakezb[0].y;
+        }
+    
+ }
+
+void SpwanFood(){
+    srand(unsigned (time(NULL)));
+    food.fc.x = rand() % 80;
+    food.fc.y = rand() % 40;
+    
+    
+    
+    
+    }
+void drawFood(){
+    lcd.drawRect(food.fc.x,food.fc.y,1,1,FILL_BLACK);
+    }
+void EatFood(){
+
+    if(SNAKE.snakezb[0].x == food.fc.x && SNAKE.snakezb[0].y == food.fc.y ){
+        SNAKE.n = SNAKE.n+1;
+       SpwanFood();
+        }
+    }
+void DeadSnake(){
+    
+    }
+
+ 
+void Speed()
+{
+    if(pad.check_event(Gamepad::L_PRESSED))
+    {
+      waittime = 0.05;
+      wait(waittime);  
+      }
+    else if(pad.check_event(Gamepad::R_PRESSED))
+    {
+      waittime = 0.5;
+      wait(waittime);  
+      }
+    else
+    {
+      wait(0.3);
+      }    
+}
\ No newline at end of file