Game doesn't work properly, but it's a 'form' of Tetris.

Dependencies:   N5110 mbed

Committer:
el14kb
Date:
Thu Apr 28 14:33:28 2016 +0000
Revision:
1:7da5b36d5f50
Child:
2:dc75e15229ee
before inverse

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el14kb 1:7da5b36d5f50 1 #include "mbed.h"
el14kb 1:7da5b36d5f50 2 #include "N5110.h"
el14kb 1:7da5b36d5f50 3
el14kb 1:7da5b36d5f50 4 //Tetris by Kristian Bridges
el14kb 1:7da5b36d5f50 5
el14kb 1:7da5b36d5f50 6 // VCC, SCE, RST, D/C, MOSI, SCLK, LED
el14kb 1:7da5b36d5f50 7 N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3);
el14kb 1:7da5b36d5f50 8
el14kb 1:7da5b36d5f50 9 AnalogIn potX(PTB2);
el14kb 1:7da5b36d5f50 10 AnalogIn potY(PTB3);
el14kb 1:7da5b36d5f50 11 DigitalIn joyButton(PTB11);
el14kb 1:7da5b36d5f50 12
el14kb 1:7da5b36d5f50 13 #define tolerance 0.05f
el14kb 1:7da5b36d5f50 14 #define down_tolerance -0.05f
el14kb 1:7da5b36d5f50 15
el14kb 1:7da5b36d5f50 16 Ticker checkJoy;
el14kb 1:7da5b36d5f50 17
el14kb 1:7da5b36d5f50 18 enum direction_t {
el14kb 1:7da5b36d5f50 19 UP, //0
el14kb 1:7da5b36d5f50 20 DOWN, //1
el14kb 1:7da5b36d5f50 21 LEFT, //2
el14kb 1:7da5b36d5f50 22 RIGHT, //3
el14kb 1:7da5b36d5f50 23 CENTRE, //4
el14kb 1:7da5b36d5f50 24 UNKNOWN //5
el14kb 1:7da5b36d5f50 25 };
el14kb 1:7da5b36d5f50 26
el14kb 1:7da5b36d5f50 27 typedef struct {
el14kb 1:7da5b36d5f50 28 float initial_x,initial_y;
el14kb 1:7da5b36d5f50 29 float current_x,current_y;
el14kb 1:7da5b36d5f50 30 int button;
el14kb 1:7da5b36d5f50 31 direction_t direction;
el14kb 1:7da5b36d5f50 32 } joystick;
el14kb 1:7da5b36d5f50 33
el14kb 1:7da5b36d5f50 34 joystick joy;
el14kb 1:7da5b36d5f50 35
el14kb 1:7da5b36d5f50 36 volatile int g_bank_index = 0;
el14kb 1:7da5b36d5f50 37 volatile int index1 = g_bank_index;
el14kb 1:7da5b36d5f50 38 volatile int g_joyFlag = 0;
el14kb 1:7da5b36d5f50 39 char buffer[14];
el14kb 1:7da5b36d5f50 40 char buffer2[14];
el14kb 1:7da5b36d5f50 41 int xlcd;
el14kb 1:7da5b36d5f50 42 int ylcd;
el14kb 1:7da5b36d5f50 43
el14kb 1:7da5b36d5f50 44 void menu();
el14kb 1:7da5b36d5f50 45 void joyCal();
el14kb 1:7da5b36d5f50 46 void joyUpdate();
el14kb 1:7da5b36d5f50 47 void selection();
el14kb 1:7da5b36d5f50 48 void game();
el14kb 1:7da5b36d5f50 49 void achievements();
el14kb 1:7da5b36d5f50 50 void options();
el14kb 1:7da5b36d5f50 51
el14kb 1:7da5b36d5f50 52 int main()
el14kb 1:7da5b36d5f50 53 {
el14kb 1:7da5b36d5f50 54 lcd.init();
el14kb 1:7da5b36d5f50 55 lcd.clear();
el14kb 1:7da5b36d5f50 56 lcd.printString("Tetris",24,1);
el14kb 1:7da5b36d5f50 57 lcd.printString("by",36,2);
el14kb 1:7da5b36d5f50 58 lcd.printString("K.Bridges",15,3);
el14kb 1:7da5b36d5f50 59 lcd.printString("SID: 200859491",0,5);
el14kb 1:7da5b36d5f50 60 wait(2);
el14kb 1:7da5b36d5f50 61 lcd.clear();
el14kb 1:7da5b36d5f50 62 joyCal();
el14kb 1:7da5b36d5f50 63 checkJoy.attach(&joyUpdate,0.01);
el14kb 1:7da5b36d5f50 64 menu();
el14kb 1:7da5b36d5f50 65
el14kb 1:7da5b36d5f50 66 }
el14kb 1:7da5b36d5f50 67
el14kb 1:7da5b36d5f50 68 void menu()
el14kb 1:7da5b36d5f50 69 {
el14kb 1:7da5b36d5f50 70
el14kb 1:7da5b36d5f50 71 int x,y;
el14kb 1:7da5b36d5f50 72
el14kb 1:7da5b36d5f50 73 lcd.printString("New Game",18,1);
el14kb 1:7da5b36d5f50 74 lcd.printString("Achievements",6,2);
el14kb 1:7da5b36d5f50 75 lcd.printString("Options",21,3);
el14kb 1:7da5b36d5f50 76
el14kb 1:7da5b36d5f50 77 while(joy.button == 0) {
el14kb 1:7da5b36d5f50 78 if(g_joyFlag) {
el14kb 1:7da5b36d5f50 79 g_joyFlag = 0;
el14kb 1:7da5b36d5f50 80
el14kb 1:7da5b36d5f50 81 switch(joy.direction) {
el14kb 1:7da5b36d5f50 82 case UP:
el14kb 1:7da5b36d5f50 83 if(g_bank_index == 0) {
el14kb 1:7da5b36d5f50 84 g_bank_index = 2;
el14kb 1:7da5b36d5f50 85 break;
el14kb 1:7da5b36d5f50 86 } else
el14kb 1:7da5b36d5f50 87 g_bank_index--;
el14kb 1:7da5b36d5f50 88 break;
el14kb 1:7da5b36d5f50 89 case DOWN:
el14kb 1:7da5b36d5f50 90 if(g_bank_index == 2) {
el14kb 1:7da5b36d5f50 91 g_bank_index = 0;
el14kb 1:7da5b36d5f50 92 } else
el14kb 1:7da5b36d5f50 93 g_bank_index++;
el14kb 1:7da5b36d5f50 94 }
el14kb 1:7da5b36d5f50 95 if(g_bank_index == 0) {
el14kb 1:7da5b36d5f50 96
el14kb 1:7da5b36d5f50 97 lcd.clear();
el14kb 1:7da5b36d5f50 98 lcd.printString("New Game",18,1);
el14kb 1:7da5b36d5f50 99 lcd.printString("Achievements",6,2);
el14kb 1:7da5b36d5f50 100 lcd.printString("Options",21,3);
el14kb 1:7da5b36d5f50 101
el14kb 1:7da5b36d5f50 102 for(x=0; x<WIDTH; x++) {
el14kb 1:7da5b36d5f50 103 for(y=7; y<15; y++) {
el14kb 1:7da5b36d5f50 104 if(lcd.getPixel(x,y)) {
el14kb 1:7da5b36d5f50 105 lcd.clearPixel(x,y);
el14kb 1:7da5b36d5f50 106 } else {
el14kb 1:7da5b36d5f50 107 lcd.setPixel(x,y);
el14kb 1:7da5b36d5f50 108 }
el14kb 1:7da5b36d5f50 109 }
el14kb 1:7da5b36d5f50 110 }
el14kb 1:7da5b36d5f50 111 }
el14kb 1:7da5b36d5f50 112 if(g_bank_index == 1) {
el14kb 1:7da5b36d5f50 113
el14kb 1:7da5b36d5f50 114 lcd.clear();
el14kb 1:7da5b36d5f50 115 lcd.printString("New Game",18,1);
el14kb 1:7da5b36d5f50 116 lcd.printString("Achievements",6,2);
el14kb 1:7da5b36d5f50 117 lcd.printString("Options",21,3);
el14kb 1:7da5b36d5f50 118
el14kb 1:7da5b36d5f50 119 for(x=0; x<WIDTH; x++) {
el14kb 1:7da5b36d5f50 120 for(y=14; y<22; y++) {
el14kb 1:7da5b36d5f50 121 if(lcd.getPixel(x,y)) {
el14kb 1:7da5b36d5f50 122 lcd.clearPixel(x,y);
el14kb 1:7da5b36d5f50 123 } else {
el14kb 1:7da5b36d5f50 124 lcd.setPixel(x,y);
el14kb 1:7da5b36d5f50 125 }
el14kb 1:7da5b36d5f50 126 }
el14kb 1:7da5b36d5f50 127 }
el14kb 1:7da5b36d5f50 128 }
el14kb 1:7da5b36d5f50 129 if(g_bank_index == 2) {
el14kb 1:7da5b36d5f50 130
el14kb 1:7da5b36d5f50 131 lcd.clear();
el14kb 1:7da5b36d5f50 132 lcd.printString("New Game",18,1);
el14kb 1:7da5b36d5f50 133 lcd.printString("Achievements",6,2);
el14kb 1:7da5b36d5f50 134 lcd.printString("Options",21,3);
el14kb 1:7da5b36d5f50 135
el14kb 1:7da5b36d5f50 136 for(x=0; x<WIDTH; x++) {
el14kb 1:7da5b36d5f50 137 for(y=21; y<29; y++) {
el14kb 1:7da5b36d5f50 138 if(lcd.getPixel(x,y)) {
el14kb 1:7da5b36d5f50 139 lcd.clearPixel(x,y);
el14kb 1:7da5b36d5f50 140 } else {
el14kb 1:7da5b36d5f50 141 lcd.setPixel(x,y);
el14kb 1:7da5b36d5f50 142 }
el14kb 1:7da5b36d5f50 143 }
el14kb 1:7da5b36d5f50 144 }
el14kb 1:7da5b36d5f50 145 }
el14kb 1:7da5b36d5f50 146 lcd.refresh();
el14kb 1:7da5b36d5f50 147 }
el14kb 1:7da5b36d5f50 148 sleep();
el14kb 1:7da5b36d5f50 149 }//end of while loop
el14kb 1:7da5b36d5f50 150
el14kb 1:7da5b36d5f50 151 }//end of function
el14kb 1:7da5b36d5f50 152
el14kb 1:7da5b36d5f50 153 void joyCal()
el14kb 1:7da5b36d5f50 154 {
el14kb 1:7da5b36d5f50 155 joy.initial_x = potX;
el14kb 1:7da5b36d5f50 156 joy.initial_y = potY;
el14kb 1:7da5b36d5f50 157 joyButton.mode(PullDown);
el14kb 1:7da5b36d5f50 158 }
el14kb 1:7da5b36d5f50 159
el14kb 1:7da5b36d5f50 160 void joyUpdate()
el14kb 1:7da5b36d5f50 161 {
el14kb 1:7da5b36d5f50 162 joy.current_x = potX - joy.initial_x; //current x-position
el14kb 1:7da5b36d5f50 163 joy.current_y = potY - joy.initial_y; //current y-position
el14kb 1:7da5b36d5f50 164 joy.button = joyButton; //current button state
el14kb 1:7da5b36d5f50 165
el14kb 1:7da5b36d5f50 166 if((joy.current_y) > tolerance && fabs(joy.current_x) < tolerance) { //fabs returns an absolute value
el14kb 1:7da5b36d5f50 167 joy.direction = UP;
el14kb 1:7da5b36d5f50 168 } else if((joy.current_y) < down_tolerance && fabs(joy.current_x) < tolerance) {
el14kb 1:7da5b36d5f50 169 joy.direction = DOWN;
el14kb 1:7da5b36d5f50 170 } else if((joy.current_x) > tolerance && fabs(joy.current_y) < tolerance) {
el14kb 1:7da5b36d5f50 171 joy.direction = LEFT;
el14kb 1:7da5b36d5f50 172 } else if((joy.current_x) < tolerance && fabs(joy.current_y) < tolerance) {
el14kb 1:7da5b36d5f50 173 joy.direction = RIGHT;
el14kb 1:7da5b36d5f50 174 } else if(fabs(joy.current_x) < tolerance && fabs(joy.current_y) < tolerance) {
el14kb 1:7da5b36d5f50 175 joy.direction = CENTRE;
el14kb 1:7da5b36d5f50 176 } else
el14kb 1:7da5b36d5f50 177 joy.direction = UNKNOWN;
el14kb 1:7da5b36d5f50 178 g_joyFlag = 1;
el14kb 1:7da5b36d5f50 179 }
el14kb 1:7da5b36d5f50 180
el14kb 1:7da5b36d5f50 181 void selection()
el14kb 1:7da5b36d5f50 182 {
el14kb 1:7da5b36d5f50 183 if(g_bank_index == 0) {
el14kb 1:7da5b36d5f50 184 game();
el14kb 1:7da5b36d5f50 185 } else if(g_bank_index == 1) {
el14kb 1:7da5b36d5f50 186 achievements();
el14kb 1:7da5b36d5f50 187 } else if(g_bank_index == 2) {
el14kb 1:7da5b36d5f50 188 options();
el14kb 1:7da5b36d5f50 189 }
el14kb 1:7da5b36d5f50 190 }
el14kb 1:7da5b36d5f50 191
el14kb 1:7da5b36d5f50 192 void game()
el14kb 1:7da5b36d5f50 193 {
el14kb 1:7da5b36d5f50 194 }
el14kb 1:7da5b36d5f50 195
el14kb 1:7da5b36d5f50 196 void achievements()
el14kb 1:7da5b36d5f50 197 {
el14kb 1:7da5b36d5f50 198 }
el14kb 1:7da5b36d5f50 199
el14kb 1:7da5b36d5f50 200 void options()
el14kb 1:7da5b36d5f50 201 {
el14kb 1:7da5b36d5f50 202 }