Gatech ECE 4180 Lab 4 Deal or No Deal Game -Alex Ferrara -Luke LeFeve

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed wave_player

Revision:
1:13d194e38ea6
Parent:
0:a9fc9a400a0a
Child:
3:0d3cadcd159b
--- a/main.cpp	Mon Oct 31 02:40:10 2016 +0000
+++ b/main.cpp	Mon Oct 31 05:37:38 2016 +0000
@@ -1,57 +1,129 @@
 #include "mbed.h"
 #include "uLCD_4DGL.h"
+#include <math.h>
 
 void draw_case(int x, int y);
 void draw_case_grid(void);
+void draw_single_case(int caseNum);
+void flashCase(int caseNum);
+void draw_banker_screen(void);
 uLCD_4DGL uLCD(p28,p27,p30);
+bool isCase[] = {false,false,false,true,false,false,false,false,false,false,false,false};
+bool isOpen[] = {false,true,false,false,false,true,false,false,false,true,false,false};
 int G_HANDLE_HEIGHT = 1;
 int G_HANDLE_LENGTH = 2;
 int G_CASE_HEIGHT   = 2;
 int G_CASE_LENGTH   = 3;
-void draw_case(int x, int y, int scale){
-    //uLCD.pen_size(1);
+void draw_case(int x, int y, int scale, bool gold, bool open){
     int HANDLE_HEIGHT = G_HANDLE_HEIGHT * scale;
     int HANDLE_LENGTH = G_HANDLE_LENGTH * scale;
     int CASE_HEIGHT   = G_CASE_HEIGHT * scale;
     int CASE_LENGTH   = G_CASE_LENGTH * scale;
     int HANDLE_OFFSET = (CASE_LENGTH - HANDLE_LENGTH) /2;
+    int c1,c2,c3;
+    (gold) ? (c1=0xfff08c) : (c1=LGREY);
+    (gold) ? (c2=0xc99700) : (c2=DGREY);
+    (gold) ? (c3= 0xFFDF00) : (c3=WHITE);
     //handle
-    uLCD.rectangle(x+HANDLE_OFFSET, y, x+HANDLE_OFFSET+HANDLE_LENGTH, y+HANDLE_HEIGHT, LGREY);
+    uLCD.rectangle(x+HANDLE_OFFSET, y, x+HANDLE_OFFSET+HANDLE_LENGTH, y+HANDLE_HEIGHT, c1);
     //main section
-    uLCD.filled_rectangle(x, y+HANDLE_HEIGHT, x+CASE_LENGTH, y+HANDLE_HEIGHT+CASE_HEIGHT, WHITE);    
-    uLCD.rectangle(x, y+HANDLE_HEIGHT, x+CASE_LENGTH, y+HANDLE_HEIGHT+CASE_HEIGHT, LGREY);    
+    uLCD.filled_rectangle(x, y+HANDLE_HEIGHT, x+CASE_LENGTH, y+HANDLE_HEIGHT+CASE_HEIGHT, c3);    
+    uLCD.rectangle(x, y+HANDLE_HEIGHT, x+CASE_LENGTH, y+HANDLE_HEIGHT+CASE_HEIGHT, c2);    
     //uLCD.printf("%d, %d",x+HANDLE_HEIGHT+(CASE_HEIGHT/2), y+CASE_LENGTH/2);
-}
-void draw_case_grid(void){
-    uLCD.textbackground_color(WHITE);
-    //draw 12 cases
-    int text_offset_x = 7;
-    int text_offset_y = 4;
-    int xPos[] = {0,33,66,99};//,0,33,66,99,0,33,66,99];
-    int yPos[] = {0,33,66};
-    for(int i=0; i<12; i++){
-        draw_case(xPos[i%4]+text_offset_x,yPos[i%3]+text_offset_y,7);
-    }    
-    //print nums
-    uLCD.text_string("1", 2, 2, NULL, BLACK);
-    uLCD.text_string(" 2", 6, 2, NULL, BLACK);
-    uLCD.text_string(" 3", 11, 2, NULL, BLACK);
-    uLCD.text_string("4", 16, 2, NULL, BLACK);
-    uLCD.text_string("5", 2, 6, NULL, BLACK);
-    uLCD.text_string(" 6", 6, 6, NULL, BLACK);
-    uLCD.text_string(" 7", 11, 6, NULL, BLACK);
-    uLCD.text_string("8", 16, 6, NULL, BLACK);
-    uLCD.text_string("9", 2, 10, NULL, BLACK);
-    uLCD.text_string("10", 6, 10, NULL, BLACK);
-    uLCD.text_string("11", 11, 10, NULL, BLACK);
-    uLCD.text_string("12", 16, 10, NULL, BLACK);    
+    if(open){
+        uLCD.line(x,y,x+CASE_LENGTH,y+HANDLE_HEIGHT+CASE_HEIGHT,RED);        
+        uLCD.line(x+1,y,x+CASE_LENGTH+1,y+HANDLE_HEIGHT+CASE_HEIGHT,RED);  
+        uLCD.line(x-1,y,x+CASE_LENGTH-1,y+HANDLE_HEIGHT+CASE_HEIGHT,RED);    
 
-draw_case(20,100,8);
+        uLCD.line(x,y+HANDLE_HEIGHT+CASE_HEIGHT,x+CASE_LENGTH,y,RED);
+        uLCD.line(x+1,y+HANDLE_HEIGHT+CASE_HEIGHT,x+CASE_LENGTH+1,y,RED);
+        uLCD.line(x-1,y+HANDLE_HEIGHT+CASE_HEIGHT,x+CASE_LENGTH-1,y,RED);
+    }
 }
 
+int text_offset_x = 7;
+int text_offset_y = 4;
+int xPos[] = {0,33,66,99};//,0,33,66,99,0,33,66,99};
+int yPos[] = {0,33,66};//0,0,0,33,33,33,33,66,66,66,66};
+char* caseLabel[] = {"1"," 2"," 3","4","5"," 6"," 7","8","9","10","11","12"};
+int labelCol[] = {2,6,11,16};//,2,6,11,16,2,6,11,16};
+int labelRow[] = {2,6,10};//2,2,2,6,6,6,6,10,10,10,10};
+void draw_case_grid(void){
+    //draw 12 case grid
+    for(int i=0; i<12; i++){
+        uLCD.text_mode(TRANSPARENT);
+        draw_case(xPos[i%4]+text_offset_x,yPos[i/4]+text_offset_y,7,isCase[i],isOpen[i]);
+        uLCD.text_string(caseLabel[i],labelCol[i%4],labelRow[i/4], NULL, BLACK);
+    }     
+    uLCD.text_mode(OPAQUE);
+    draw_case(60,100,9, false, false);
+    uLCD.locate(9,14);
+    uLCD.textbackground_color(WHITE);
+    uLCD.printf("%d",12);
+    uLCD.textbackground_color(BLACK);
+    uLCD.color(GREEN);
+    uLCD.locate(0,13);
+    uLCD.printf("%d cases",3);
+    uLCD.locate(0,14);
+    uLCD.printf("left in");
+    uLCD.locate(0,15);
+    uLCD.printf("round");
+    uLCD.locate(10,15);
+    uLCD.printf("$%d",1000);
+}
+void flashCase(int caseNum){
+    int i = caseNum - 1;
+    int scale = 8;
+    int tempX = xPos[i%4]+text_offset_x-1;
+    int tempY = yPos[i/4]+text_offset_y-1;
+    int HANDLE_HEIGHT = G_HANDLE_HEIGHT * scale;
+    int CASE_HEIGHT   = G_CASE_HEIGHT * scale;
+    int CASE_LENGTH   = G_CASE_LENGTH * scale;
+    for(int j=0;j<2;j++){
+        uLCD.filled_rectangle(tempX,tempY,tempX+CASE_LENGTH+2,tempY+CASE_HEIGHT+HANDLE_HEIGHT+2,BLACK);
+        wait(0.2);
+        draw_single_case(i+1);
+        wait(0.2);
+    }
+}
+void draw_single_case(int caseNum){
+    int i = caseNum-1;
+    uLCD.text_mode(TRANSPARENT);
+    draw_case(xPos[i%4]+text_offset_x,yPos[i/4]+text_offset_y,7,isCase[i],isOpen[i]);
+    uLCD.text_string(caseLabel[i],labelCol[i%4],labelRow[i/4], NULL, BLACK);
+}
+
+int values[] = {1,5,10,20,50,100,250,500,1000,2500,5000,10000};
+char* valuesStr[] = {"1","5","10","20","50","100","$ 250","$ 500","$  1k","$2.5k","$  5k","$ 10k"};
+bool valueOpen[]= {true,false,true,false,true,false,true,false,false,true,false,false};
+void draw_banker_screen(void){
+    //uLCD.locate(0,0);
+    //uLCD.printf("test");
+    for(int i=0;i<6;i++){
+        uLCD.locate(0,i);
+        (valueOpen[i]) ? uLCD.color(RED) : uLCD.color(GREEN);
+        uLCD.printf("$%d",values[i]);
+    }
+    for(int i=6;i<12;i++){
+        //int j = ((int) log10((double)values[i]) + 1);
+        uLCD.locate(13,(i-6));
+        (valueOpen[i]) ? uLCD.color(RED) : uLCD.color(GREEN);
+        /*char* val;
+        (values[i]>500) ? val=values[i] : valuesStr[i];*/
+        uLCD.printf(valuesStr[i]);
+    }
+    uLCD.locate(0,8);
+    uLCD.printf("The banker's");
+    uLCD.locate(0,9);
+    uLCD.printf("offer is: $%d",3784);
+}
 
 int main() {
+    //uLCD.baudrate(299999);
+    //draw_case_grid();
+    //wait(2);
+    //flashCase(2);    
     
-    draw_case_grid();
     
+    draw_banker_screen();
 }