for rex

Dependencies:   FatFileSystem mbed

Fork of SnakeGame by Pujun Bhatnagar

Committer:
pbhatnagar3
Date:
Mon Mar 24 17:48:19 2014 +0000
Revision:
0:8b08136c5edd
Child:
1:4222a8f9ca88
3-D snake game for the mbed application board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pbhatnagar3 0:8b08136c5edd 1 //HEADER FILES
pbhatnagar3 0:8b08136c5edd 2 #include "mbed.h"
pbhatnagar3 0:8b08136c5edd 3 #include "C12832.h"
pbhatnagar3 0:8b08136c5edd 4 #include "MMA7660.h"
pbhatnagar3 0:8b08136c5edd 5 #include <time.h>
pbhatnagar3 0:8b08136c5edd 6 #include <stdlib.h>
pbhatnagar3 0:8b08136c5edd 7
pbhatnagar3 0:8b08136c5edd 8 //IMPORTANT INITIALIZATIONS
pbhatnagar3 0:8b08136c5edd 9 Serial pc(USBTX, USBRX);
pbhatnagar3 0:8b08136c5edd 10 C12832 lcd(p5, p7, p6, p8, p11);
pbhatnagar3 0:8b08136c5edd 11 BusIn joy(p15,p12,p13,p16);
pbhatnagar3 0:8b08136c5edd 12 DigitalIn fire(p14);
pbhatnagar3 0:8b08136c5edd 13 BusOut leds(LED1,LED2,LED3,LED4);
pbhatnagar3 0:8b08136c5edd 14 MMA7660 MMA(p28, p27); //I2C Accelerometer
pbhatnagar3 0:8b08136c5edd 15 DigitalOut connectionLed(LED1);//Accel OK LED
pbhatnagar3 0:8b08136c5edd 16
pbhatnagar3 0:8b08136c5edd 17
pbhatnagar3 0:8b08136c5edd 18 int main()
pbhatnagar3 0:8b08136c5edd 19 {
pbhatnagar3 0:8b08136c5edd 20 //IMPORTANT VARIABLE DECLARATIONS
pbhatnagar3 0:8b08136c5edd 21 srand(time(NULL));
pbhatnagar3 0:8b08136c5edd 22 int r = rand();
pbhatnagar3 0:8b08136c5edd 23 int i=0;
pbhatnagar3 0:8b08136c5edd 24 int dimX = 120;
pbhatnagar3 0:8b08136c5edd 25 int dimY = 28;
pbhatnagar3 0:8b08136c5edd 26 int x=0,y=0;
pbhatnagar3 0:8b08136c5edd 27 lcd.cls();
pbhatnagar3 0:8b08136c5edd 28 lcd.locate(0,3);
pbhatnagar3 0:8b08136c5edd 29 lcd.printf("welcome to 3D snake game");
pbhatnagar3 0:8b08136c5edd 30 wait(2);
pbhatnagar3 0:8b08136c5edd 31 lcd.cls();
pbhatnagar3 0:8b08136c5edd 32 lcd.locate(0, 3);
pbhatnagar3 0:8b08136c5edd 33 lcd.printf("hit joystick 4 fireball");
pbhatnagar3 0:8b08136c5edd 34 wait(1.5);
pbhatnagar3 0:8b08136c5edd 35 int j = 0;
pbhatnagar3 0:8b08136c5edd 36 int cst = 4;
pbhatnagar3 0:8b08136c5edd 37 int fDimX = dimX - cst;
pbhatnagar3 0:8b08136c5edd 38 int fDimY = dimY - cst;
pbhatnagar3 0:8b08136c5edd 39 int flag = 0;
pbhatnagar3 0:8b08136c5edd 40 int p1 = r % fDimX;
pbhatnagar3 0:8b08136c5edd 41 int p2 = r % fDimY;
pbhatnagar3 0:8b08136c5edd 42 int score = 0;
pbhatnagar3 0:8b08136c5edd 43 int bonus = 0;
pbhatnagar3 0:8b08136c5edd 44 if (p1 < 10)
pbhatnagar3 0:8b08136c5edd 45 p1 = 10;
pbhatnagar3 0:8b08136c5edd 46 if (p2 < 10)
pbhatnagar3 0:8b08136c5edd 47 p2 = 10;
pbhatnagar3 0:8b08136c5edd 48 while(1) {
pbhatnagar3 0:8b08136c5edd 49 //CONDITION FOR CHECKING FOR THE FIREBALL
pbhatnagar3 0:8b08136c5edd 50 if (fire && score>5) {
pbhatnagar3 0:8b08136c5edd 51 leds=0xf;
pbhatnagar3 0:8b08136c5edd 52 flag = 100;
pbhatnagar3 0:8b08136c5edd 53 if(bonus == 0){
pbhatnagar3 0:8b08136c5edd 54 score -= 2;
pbhatnagar3 0:8b08136c5edd 55 bonus = 1;
pbhatnagar3 0:8b08136c5edd 56 }
pbhatnagar3 0:8b08136c5edd 57 }
pbhatnagar3 0:8b08136c5edd 58 // CONDITIONS TO CHECK FOR JOYSTICK INPUT
pbhatnagar3 0:8b08136c5edd 59 else {
pbhatnagar3 0:8b08136c5edd 60 if (flag == 0){
pbhatnagar3 0:8b08136c5edd 61 leds=joy;
pbhatnagar3 0:8b08136c5edd 62 // moving the snake backwards
pbhatnagar3 0:8b08136c5edd 63 if (joy == 0x4 ){
pbhatnagar3 0:8b08136c5edd 64 i= i - cst;
pbhatnagar3 0:8b08136c5edd 65 if (i < 0)
pbhatnagar3 0:8b08136c5edd 66 i = dimX;
pbhatnagar3 0:8b08136c5edd 67 }
pbhatnagar3 0:8b08136c5edd 68 // moving the snake forward
pbhatnagar3 0:8b08136c5edd 69 else if (joy == 0x8){
pbhatnagar3 0:8b08136c5edd 70 i = (i + cst)%dimX;
pbhatnagar3 0:8b08136c5edd 71 }
pbhatnagar3 0:8b08136c5edd 72 // moving the snake up
pbhatnagar3 0:8b08136c5edd 73 else if (joy == 0x1){
pbhatnagar3 0:8b08136c5edd 74 j = j - cst;
pbhatnagar3 0:8b08136c5edd 75 if (j < 0)
pbhatnagar3 0:8b08136c5edd 76 j = dimY;
pbhatnagar3 0:8b08136c5edd 77 }
pbhatnagar3 0:8b08136c5edd 78 // moving the snake down
pbhatnagar3 0:8b08136c5edd 79 else if (joy == 0x2){
pbhatnagar3 0:8b08136c5edd 80 j = (j + cst)%dimY;
pbhatnagar3 0:8b08136c5edd 81 }
pbhatnagar3 0:8b08136c5edd 82 }
pbhatnagar3 0:8b08136c5edd 83 // LOGIC FOR THE FIREBALL
pbhatnagar3 0:8b08136c5edd 84 if (flag >= 1){
pbhatnagar3 0:8b08136c5edd 85 x = (x + MMA.x() * 32.0)/1.5;
pbhatnagar3 0:8b08136c5edd 86 y = (y -(MMA.y() * 16.0))/1.5;
pbhatnagar3 0:8b08136c5edd 87 lcd.fillcircle(x+63, y+15, 3, 1); //draw bubble
pbhatnagar3 0:8b08136c5edd 88 //lcd.circle(63, 15, 8, 1);
pbhatnagar3 0:8b08136c5edd 89 wait(.1); //time delay
pbhatnagar3 0:8b08136c5edd 90 pc.printf(" score %d", score);
pbhatnagar3 0:8b08136c5edd 91 flag -=1;
pbhatnagar3 0:8b08136c5edd 92 if (abs(x + 63 - p1) <=cst && abs(y + 15 - p2) <=cst+1){
pbhatnagar3 0:8b08136c5edd 93 score +=15;
pbhatnagar3 0:8b08136c5edd 94 flag = -1;
pbhatnagar3 0:8b08136c5edd 95 }
pbhatnagar3 0:8b08136c5edd 96 if (flag < 0)
pbhatnagar3 0:8b08136c5edd 97 flag = 0;
pbhatnagar3 0:8b08136c5edd 98 bonus = 0;
pbhatnagar3 0:8b08136c5edd 99 lcd.fillcircle(x+63, y+15, 3, 0); //erase bubble
pbhatnagar3 0:8b08136c5edd 100 }
pbhatnagar3 0:8b08136c5edd 101 }
pbhatnagar3 0:8b08136c5edd 102 if (flag == 0){
pbhatnagar3 0:8b08136c5edd 103 //printing the snake, food and score on the LCD
pbhatnagar3 0:8b08136c5edd 104 lcd.cls();
pbhatnagar3 0:8b08136c5edd 105 lcd.locate(i,j);
pbhatnagar3 0:8b08136c5edd 106 lcd.printf("~+");
pbhatnagar3 0:8b08136c5edd 107 lcd.locate(0, 22);
pbhatnagar3 0:8b08136c5edd 108 lcd.printf("%d", score);
pbhatnagar3 0:8b08136c5edd 109 //pc.printf("the dot is at %d %d\n \r", p1, p2);
pbhatnagar3 0:8b08136c5edd 110 pc.printf("snake location %d %d\n \r", i, j);
pbhatnagar3 0:8b08136c5edd 111 lcd.locate(p1, p2);
pbhatnagar3 0:8b08136c5edd 112 lcd.printf(".");
pbhatnagar3 0:8b08136c5edd 113 // CONDITION FOR CHECKING THE SNAKE FOOD COLLISION
pbhatnagar3 0:8b08136c5edd 114 if (abs(i + 8 - p1) <=cst && abs(j - p2) <=cst+1){
pbhatnagar3 0:8b08136c5edd 115 //pc.printf("the snake is at %d %d\n \r", i, j);
pbhatnagar3 0:8b08136c5edd 116 //pc.printf("the dot is at %d %d\n \r", p1, p2);
pbhatnagar3 0:8b08136c5edd 117 score = score + 1;
pbhatnagar3 0:8b08136c5edd 118 //finding a new random location for food
pbhatnagar3 0:8b08136c5edd 119 r = rand();
pbhatnagar3 0:8b08136c5edd 120 p1 = r%fDimX;
pbhatnagar3 0:8b08136c5edd 121 p2 = r%fDimY;
pbhatnagar3 0:8b08136c5edd 122 //boundary checking
pbhatnagar3 0:8b08136c5edd 123 if (p1 < 10)
pbhatnagar3 0:8b08136c5edd 124 p1 = 10;
pbhatnagar3 0:8b08136c5edd 125 if (p2 < 10)
pbhatnagar3 0:8b08136c5edd 126 p2 = 10;
pbhatnagar3 0:8b08136c5edd 127 lcd.printf(".");
pbhatnagar3 0:8b08136c5edd 128 }
pbhatnagar3 0:8b08136c5edd 129 wait(0.3);
pbhatnagar3 0:8b08136c5edd 130 }
pbhatnagar3 0:8b08136c5edd 131 }
pbhatnagar3 0:8b08136c5edd 132 }