Flip tile pattern game
Dependencies: 4DGL-uLCD-SE PinDetect SDFileSystem mbed-rtos mbed wave_player
tile.cpp
- Committer:
- jsmith352
- Date:
- 2015-10-22
- Revision:
- 1:4e25bf8e016e
- Parent:
- 0:96656a61e4e3
File content as of revision 1:4e25bf8e016e:
#include "tile.h" // constructors Tile::Tile(PinName pin1, PinName pin2, PinName pin3){ LCD_ptr = new uLCD_4DGL(pin1, pin2, pin3); setup = false; score = 0; win = false; } // member functions void Tile::TilePattern3(int square){ int i = 0; int j = 0; switch(square){ case 0: square0(); square1(); square3(); break; case 1: square0(); square1(); square2(); square4(); break; case 2: square1(); square2(); square5(); break; case 3: square0(); square3(); square4(); square6(); break; case 4: square1(); square3(); square4(); square5(); square7(); break; case 5: square2(); square4(); square5(); square8(); break; case 6: square3(); square6(); square7(); break; case 7: square4(); square6(); square7(); square8(); break; case 8: square5(); square7(); square8(); break; default: break; } score++; for(i = 0; i < 9; i++){ if(squares[i] == true) j++; } if(j == 9){ win = true; } } void Tile::TilePattern4(int square){ int i = 0; int j = 0; switch(square){ case 0: smallSquare0(); smallSquare1(); smallSquare4(); break; case 1: smallSquare0(); smallSquare1(); smallSquare2(); smallSquare5(); break; case 2: smallSquare1(); smallSquare2(); smallSquare3(); smallSquare6(); break; case 3: smallSquare2(); smallSquare3(); smallSquare7(); break; case 4: smallSquare0(); smallSquare4(); smallSquare5(); smallSquare8(); break; case 5: smallSquare1(); smallSquare4(); smallSquare5(); smallSquare6(); smallSquare9(); break; case 6: smallSquare2(); smallSquare5(); smallSquare6(); smallSquare7(); smallSquare10(); break; case 7: smallSquare3(); smallSquare6(); smallSquare7(); smallSquare11(); break; case 8: smallSquare4(); smallSquare8(); smallSquare9(); smallSquare12(); break; case 9: smallSquare5(); smallSquare8(); smallSquare9(); smallSquare10(); smallSquare13(); break; case 10: smallSquare6(); smallSquare9(); smallSquare10(); smallSquare11(); smallSquare14(); break; case 11: smallSquare7(); smallSquare10(); smallSquare11(); smallSquare15(); break; case 12: smallSquare8(); smallSquare12(); smallSquare13(); break; case 13: smallSquare9(); smallSquare12(); smallSquare13(); smallSquare14(); break; case 14: smallSquare10(); smallSquare13(); smallSquare14(); smallSquare15(); break; case 15: smallSquare11(); smallSquare14(); smallSquare15(); break; default: break; } score++; for(i = 0; i < 16; i++){ if(smallSquares[i] == true) j++; } if(j == 16){ win = true; } } void Tile::TilePatternSetup(){ if(number_of_tiles == true){ // 3x3 square0(); square1(); square2(); square3(); square4(); square5(); square6(); square7(); square8(); } if(number_of_tiles == false){ // 4x4 smallSquare0(); smallSquare1(); smallSquare2(); smallSquare3(); smallSquare4(); smallSquare5(); smallSquare6(); smallSquare7(); smallSquare8(); smallSquare9(); smallSquare10(); smallSquare11(); smallSquare12(); smallSquare13(); smallSquare14(); smallSquare15(); } setup = true; } void Tile::setNumberOfTiles(bool size){ number_of_tiles = size; } int Tile::getScore(){ return(score); } void Tile::resetScore(){ score = 0; } void Tile::reset(){ resetScore(); win = false; setup = false; TilePatternSetup(); } void Tile::pause(){ int i = 0; if(number_of_tiles == true){ // 3x3 for(i = 0; i < 9; i++) squares[i] = !squares[i]; } else{ for(i = 0; i < 16; i++) smallSquares[i] = !smallSquares[i]; } } void Tile::unpause(){ if(number_of_tiles == true){ square0(); square1(); square2(); square3(); square4(); square5(); square6(); square7(); square8(); } else{ smallSquare0(); smallSquare1(); smallSquare2(); smallSquare3(); smallSquare4(); smallSquare5(); smallSquare6(); smallSquare7(); smallSquare8(); smallSquare9(); smallSquare10(); smallSquare11(); smallSquare12(); smallSquare13(); smallSquare14(); smallSquare15(); } } bool Tile::drawCursor(int position){ if(number_of_tiles == true) return(squares[position]); else return(smallSquares[position]); } //return false for red, true for green // *************************************** // // 3x3 SQUARES // *************************************** // // SQUARE 0 void Tile::square0(){ switch(setup){ case false: LCD_ptr->filled_rectangle(87, 0, 127, 41, TILE_OFF); squares[0] = false; break; case true: squares[0] = !squares[0]; if(squares[0] == true) LCD_ptr->filled_rectangle(87, 0, 127, 41, TILE_ON); else LCD_ptr->filled_rectangle(87, 0, 127, 41, TILE_OFF); break; } } // SQUARE 1 void Tile::square1(){ switch(setup){ case false: LCD_ptr->filled_rectangle(87, 44, 127, 85, TILE_OFF); squares[1] = false; break; case true: squares[1] = !squares[1]; if(squares[1] == true) LCD_ptr->filled_rectangle(87, 44, 127, 85, TILE_ON); else LCD_ptr->filled_rectangle(87, 44, 127, 85, TILE_OFF); break; } } //SQUARE 2 void Tile::square2(){ switch(setup){ case false: LCD_ptr->filled_rectangle(87, 88, 127, 127, TILE_OFF); squares[2] = false; break; case true: squares[2] = !squares[2]; if(squares[2] == true) LCD_ptr->filled_rectangle(87, 88, 127, 127, TILE_ON); else LCD_ptr->filled_rectangle(87, 88, 127, 127, TILE_OFF); break; } } // SQUARE 3 void Tile::square3(){ switch(setup){ case false: LCD_ptr->filled_rectangle(44, 0, 85, 41, TILE_OFF); squares[3] = false; break; case true: squares[3] = !squares[3]; if(squares[3] == true) LCD_ptr->filled_rectangle(44, 0, 85, 41, TILE_ON); else LCD_ptr->filled_rectangle(44, 0, 85, 41, TILE_OFF); break; } } // SQUARE 4 void Tile::square4(){ switch(setup){ case false: LCD_ptr->filled_rectangle(44, 44, 85, 85, TILE_OFF); squares[4] = false; break; case true: squares[4] = !squares[4]; if(squares[4] == true) LCD_ptr->filled_rectangle(44, 44, 85, 85, TILE_ON); else LCD_ptr->filled_rectangle(44, 44, 85, 85, TILE_OFF); break; } } // SQUARE 5 void Tile::square5(){ switch(setup){ case false: LCD_ptr->filled_rectangle(44, 88, 85, 127, TILE_OFF); squares[5] = false; break; case true: squares[5] = !squares[5]; if(squares[5] == true) LCD_ptr->filled_rectangle(44, 88, 85, 127, TILE_ON); else LCD_ptr->filled_rectangle(44, 88, 85, 127, TILE_OFF); break; } } // SQUARE 6 void Tile::square6(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 0, 41, 41, TILE_OFF); squares[6] = false; break; case true: squares[6] = !squares[6]; if(squares[6] == true) LCD_ptr->filled_rectangle(0, 0, 41, 41, TILE_ON); else LCD_ptr->filled_rectangle(0, 0, 41, 41, TILE_OFF); break; } } // SQUARE 7 void Tile::square7(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 44, 41, 85, TILE_OFF); squares[7] = false; break; case true: squares[7] = !squares[7]; if(squares[7] == true) LCD_ptr->filled_rectangle(0, 44, 41, 85, TILE_ON); else LCD_ptr->filled_rectangle(0, 44, 41, 85, TILE_OFF); break; } } // SQUARE 8 void Tile::square8(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 88, 41, 127, TILE_OFF); squares[8] = false; break; case true: squares[8] = !squares[8]; if(squares[8] == true) LCD_ptr->filled_rectangle(0, 88, 41, 127, TILE_ON); else LCD_ptr->filled_rectangle(0, 88, 41, 127, TILE_OFF); break; } } // *************************************** // // 4x4 SQUARES // *************************************** // // SQUARE 0 void Tile::smallSquare0(){ switch(setup){ case false: LCD_ptr->filled_rectangle(96, 0, 126, 29, TILE_OFF); smallSquares[0] = false; break; case true: smallSquares[0] = !smallSquares[0]; if(smallSquares[0] == true) LCD_ptr->filled_rectangle(96, 0, 126, 29, TILE_ON); else LCD_ptr->filled_rectangle(96, 0, 126, 29, TILE_OFF); break; } } // SQUARE 1 void Tile::smallSquare1(){ switch(setup){ case false: LCD_ptr->filled_rectangle(96, 32, 126, 61, TILE_OFF); smallSquares[1] = false; break; case true: smallSquares[1] = !smallSquares[1]; if(smallSquares[1] == true) LCD_ptr->filled_rectangle(96, 32, 126, 61, TILE_ON); else LCD_ptr->filled_rectangle(96, 32, 126, 61, TILE_OFF); break; } } // SQUARE 2 void Tile::smallSquare2(){ switch(setup){ case false: LCD_ptr->filled_rectangle(96, 64, 126, 93, TILE_OFF); smallSquares[2] = false; break; case true: smallSquares[2] = !smallSquares[2]; if(smallSquares[2] == true) LCD_ptr->filled_rectangle(96, 64, 126, 93, TILE_ON); else LCD_ptr->filled_rectangle(96, 64, 126, 93, TILE_OFF); break; } } // SQUARE 3 void Tile::smallSquare3(){ switch(setup){ case false: LCD_ptr->filled_rectangle(96, 96, 126, 126, TILE_OFF); smallSquares[3] = false; break; case true: smallSquares[3] = !smallSquares[3]; if(smallSquares[3] == true) LCD_ptr->filled_rectangle(96, 96, 126, 126, TILE_ON); else LCD_ptr->filled_rectangle(96, 96, 126, 126, TILE_OFF); break; } } // SQUARE 4 void Tile::smallSquare4(){ switch(setup){ case false: LCD_ptr->filled_rectangle(64, 0, 93, 29, TILE_OFF); smallSquares[4] = false; break; case true: smallSquares[4] = !smallSquares[4]; if(smallSquares[4] == true) LCD_ptr->filled_rectangle(64, 0, 93, 29, TILE_ON); else LCD_ptr->filled_rectangle(64, 0, 93, 29, TILE_OFF); break; } } // SQUARE 5 void Tile::smallSquare5(){ switch(setup){ case false: LCD_ptr->filled_rectangle(64, 32, 93, 61, TILE_OFF); smallSquares[5] = false; break; case true: smallSquares[5] = !smallSquares[5]; if(smallSquares[5] == true) LCD_ptr->filled_rectangle(64, 32, 93, 61, TILE_ON); else LCD_ptr->filled_rectangle(64, 32, 93, 61, TILE_OFF); break; } } // SQUARE 6 void Tile::smallSquare6(){ switch(setup){ case false: LCD_ptr->filled_rectangle(64, 64, 93, 93, TILE_OFF); smallSquares[6] = false; break; case true: smallSquares[6] = !smallSquares[6]; if(smallSquares[6] == true) LCD_ptr->filled_rectangle(64, 64, 93, 93, TILE_ON); else LCD_ptr->filled_rectangle(64, 64, 93, 93, TILE_OFF); break; } } // SQUARE 7 void Tile::smallSquare7(){ switch(setup){ case false: LCD_ptr->filled_rectangle(64, 96, 93, 126, TILE_OFF); smallSquares[7] = false; break; case true: smallSquares[7] = !smallSquares[7]; if(smallSquares[7] == true) LCD_ptr->filled_rectangle(64, 96, 93, 126, TILE_ON); else LCD_ptr->filled_rectangle(64, 96, 93, 126, TILE_OFF); break; } } // SQUARE 8 void Tile::smallSquare8(){ switch(setup){ case false: LCD_ptr->filled_rectangle(32, 0, 61, 29, TILE_OFF); smallSquares[8] = false; break; case true: smallSquares[8] = !smallSquares[8]; if(smallSquares[8] == true) LCD_ptr->filled_rectangle(32, 0, 61, 29, TILE_ON); else LCD_ptr->filled_rectangle(32, 0, 61, 29, TILE_OFF); break; } } // SQUARE 9 void Tile::smallSquare9(){ switch(setup){ case false: LCD_ptr->filled_rectangle(32, 32, 61, 61, TILE_OFF); smallSquares[9] = false; break; case true: smallSquares[9] = !smallSquares[9]; if(smallSquares[9] == true) LCD_ptr->filled_rectangle(32, 32, 61, 61, TILE_ON); else LCD_ptr->filled_rectangle(32, 32, 61, 61, TILE_OFF); break; } } // SQUARE 10 void Tile::smallSquare10(){ switch(setup){ case false: LCD_ptr->filled_rectangle(32, 64, 61, 93, TILE_OFF); smallSquares[10] = false; break; case true: smallSquares[10] = !smallSquares[10]; if(smallSquares[10] == true) LCD_ptr->filled_rectangle(32, 64, 61, 93, TILE_ON); else LCD_ptr->filled_rectangle(32, 64, 61, 93, TILE_OFF); break; } } // SQUARE 11 void Tile::smallSquare11(){ switch(setup){ case false: LCD_ptr->filled_rectangle(32, 96, 61, 126, TILE_OFF); smallSquares[11] = false; break; case true: smallSquares[11] = !smallSquares[11]; if(smallSquares[11] == true) LCD_ptr->filled_rectangle(32, 96, 61, 126, TILE_ON); else LCD_ptr->filled_rectangle(32, 96, 61, 126, TILE_OFF); break; } } // SQUARE 12 void Tile::smallSquare12(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 0, 29, 29, TILE_OFF); smallSquares[12] = false; break; case true: smallSquares[12] = !smallSquares[12]; if(smallSquares[12] == true) LCD_ptr->filled_rectangle(0, 0, 29, 29, TILE_ON); else LCD_ptr->filled_rectangle(0, 0, 29, 29, TILE_OFF); break; } } // SQUARE 13 void Tile::smallSquare13(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 32, 29, 61, TILE_OFF); smallSquares[13] = false; break; case true: smallSquares[13] = !smallSquares[13]; if(smallSquares[13] == true) LCD_ptr->filled_rectangle(0, 32, 29, 61, TILE_ON); else LCD_ptr->filled_rectangle(0, 32, 29, 61, TILE_OFF); break; } } // SQUARE 14 void Tile::smallSquare14(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 64, 29, 93, TILE_OFF); smallSquares[14] = false; break; case true: smallSquares[14] = !smallSquares[14]; if(smallSquares[14] == true) LCD_ptr->filled_rectangle(0, 64, 29, 93, TILE_ON); else LCD_ptr->filled_rectangle(0, 64, 29, 93, TILE_OFF); break; } } // SQUARE 15 void Tile::smallSquare15(){ switch(setup){ case false: LCD_ptr->filled_rectangle(0, 96, 29, 126, TILE_OFF); smallSquares[15] = false; break; case true: smallSquares[15] = !smallSquares[15]; if(smallSquares[15] == true) LCD_ptr->filled_rectangle(0, 96, 29, 126, TILE_ON); else LCD_ptr->filled_rectangle(0, 96, 29, 126, TILE_OFF); break; } }