Wang Lin 201090174
Dependencies: mbed Gamepad N5110 FXOS8700Q
main.h
- Committer:
- a1115921303
- Date:
- 2019-05-03
- Revision:
- 12:121ba031343a
- Child:
- 13:febf9fbb502f
File content as of revision 12:121ba031343a:
#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); } }