This is the first version of a Fishing Mini-game. It uses a navigational switch as a button and a joystick, playing wav files from a SD card, and a uLCD screen to show the fishing game
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
Fishing.h
- Committer:
- jd0205
- Date:
- 2016-03-17
- Revision:
- 0:5d811b6879d5
- Child:
- 1:8dd8fafa7fc8
File content as of revision 0:5d811b6879d5:
#include "globals.h" class Fishing { public: Fishing(); void start(); void lake_init(); void grass(int x, int y, int n, int color); void draw_fish(int x, int dist); void draw_rod(int n, int x); private: int oldx; int oldx2; int oldCnt; }; Fishing::Fishing() { oldx = 0; oldx2 = 64; oldCnt = 1; } void Fishing::start() { stdio_mutex.lock(); uLCD.text_width(1); uLCD.text_height(1); uLCD.printf("Fishing Simulator V1.0"); wait(2.0); stdio_mutex.unlock(); } void Fishing::lake_init() { stdio_mutex.lock(); uLCD.filled_rectangle(0, 0 , 127, 127, BLACK); for(int i =0; i < 17; i++) { uLCD.line(0, 23+i, 127, 23+i, i*0x000F); } uLCD.filled_rectangle(0, 40, 127, 127, BLUE); uLCD.line(88, 40, 108, 108, RED); uLCD.line(20, 108, 40, 40, RED); stdio_mutex.unlock(); } void Fishing::grass(int x, int y, int n, int color) { uLCD.circle(x+2*n-2, y+4*n , n, 0x000042); uLCD.circle(x+2*n+1, y+4*n , n, 0x000042); uLCD.circle(x+2*n-2, y+4*n , n-1, 0x444444); uLCD.circle(x+2*n+1, y+4*n , n-1, 0x444444); uLCD.filled_circle(x+2*n-2, y+4*n , n-2, 0x000042); uLCD.filled_circle(x+2*n+1, y+4*n , n-2, 0x000042); uLCD.filled_circle(x+2*n-1, y+4*n , n-2, 0x000042); for (int i = n; i < 2*n; i++) { uLCD.line(x, y+2*n, x+i, y + 4*n, color - (0x000500 * i)); } for (int j = 2*n; j < 3*n; j++) { uLCD.line(x, y+2*n, x+j, y + 4*n, color - (0x000500 * j)); uLCD.line(x+n, y, x+j, y + 4*n, color - (0x000500 * j)); uLCD.line(x+4*n, y+n, x+j, y + 4*n, color - (0x000500 * j)); } } void Fishing::draw_fish(int x, int dist) { stdio_mutex.lock(); if(oldx != x) { uLCD.filled_circle(oldx, 80 , 4, BLUE); oldx = x; uLCD.circle(x-1, 80 , 3, 0x000042); uLCD.circle(x+1, 80 , 3, 0x000042); uLCD.circle(x-1, 80 , 2, 0x444444); uLCD.circle(x+1, 80 , 2, 0x444444); uLCD.filled_circle(x, 80 , 1, 0x000042); uLCD.filled_circle(x+1, 80 , 1, 0x000042); } uLCD.locate(7,15); uLCD.printf("%d", dist); stdio_mutex.unlock(); } void Fishing::draw_rod(int n, int x) { if (oldCnt != n || oldx2 != x) { stdio_mutex.lock(); uLCD.line(64 + 6*oldCnt,95, 64 + 7*oldCnt, 100, BLUE); uLCD.line(64 + 7*oldCnt,99, 64 + 8*oldCnt, 106, BLUE); uLCD.line(64 + 8*oldCnt,106, 64 + 7*oldCnt, 115, BLUE); uLCD.line(64 + 7*oldCnt,115, 64, 127, BLUE); uLCD.line(oldx2, 80, 64 + 6*oldCnt, 95, BLUE); oldCnt = n; oldx2 = x; uLCD.line(64 + 6*n,95, 64 + 7*n, 100, 0x964B00); uLCD.line(64 + 7*n,99, 64 + 8*n, 106, 0x964B00); uLCD.line(64 + 8*n,106, 64 + 7*n, 115, 0x964B00); uLCD.line(64 + 7*n,115, 64, 127, 0x964B00); uLCD.line(x, 80, 64 + 6*n, 95, WHITE); stdio_mutex.unlock(); } }