Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL mbed PS2 TextLCD beep
Revision 1:2fad0ed78add, committed 2012-10-11
- Comitter:
- pprasad7
- Date:
- Thu Oct 11 20:24:22 2012 +0000
- Parent:
- 0:ad25b4578ec4
- Commit message:
- Version 1.0;
Changed in this revision
--- a/4DGL.lib Thu Oct 11 20:18:37 2012 +0000 +++ b/4DGL.lib Thu Oct 11 20:24:22 2012 +0000 @@ -1,1 +1,1 @@ -4DGL#be8c5e23ec25 +http://mbed.org/users/pprasad7/code/4DGL/#be8c5e23ec25
--- a/PS2/PS2.lib Thu Oct 11 20:18:37 2012 +0000 +++ b/PS2/PS2.lib Thu Oct 11 20:24:22 2012 +0000 @@ -1,1 +1,1 @@ -PS2/PS2#62b62530a82f +http://mbed.org/users/pprasad7/code/PS2/#62b62530a82f
--- a/TextLCD/TextLCD.lib Thu Oct 11 20:18:37 2012 +0000 +++ b/TextLCD/TextLCD.lib Thu Oct 11 20:24:22 2012 +0000 @@ -1,1 +1,1 @@ -TextLCD/TextLCD#de90b67b2bca +http://mbed.org/users/pprasad7/code/TextLCD/#de90b67b2bca
--- a/beep/beep.lib Thu Oct 11 20:18:37 2012 +0000 +++ b/beep/beep.lib Thu Oct 11 20:24:22 2012 +0000 @@ -1,1 +1,1 @@ -beep/beep#080ef5594cce +http://mbed.org/users/pprasad7/code/beep/#080ef5594cce
--- a/main.cpp Thu Oct 11 20:18:37 2012 +0000
+++ b/main.cpp Thu Oct 11 20:24:22 2012 +0000
@@ -1,659 +1,661 @@
-#include "mbed.h"
-#include "TFT_4DGL.h"
-#include <stdarg.h>
-#include "TextLCD.h"
-#include <stdio.h>
-#include "PS2Keyboard.h"
-#include <string>
-#include "beep.h"
-Beep speaker(p22);
-// overwrite 4DGL library screen size settings in TFT_4DGL.h
-#define SIZE_X 479
-#define SIZE_Y 639
-//
-
-TFT_4DGL ecran(p13,p14,p21); // serial tx, serial rx, reset pin;
-TextLCD lcd(p24, p26, p27, p28, p29, p30);
-PS2Keyboard ps2kb(p12, p11);
-int outputrow = 1;
-int j = 0;
-char buffer[20480]; //working at 4608
-char printbuf[256];
-int linenum=1;
-void myprintf1(int row_no,const char* format, ...)
-{
- char dest[256];
- if(j>80) {
- j=0;
- }
- va_list argptr;
- va_start(argptr, format);
- vsprintf(dest, format, argptr);
- va_end(argptr);
- for ( int i = 0; i < 256; i++) {
- buffer[256*j+i]= dest[i];
- }
- j++;
- int linenum = j;
-
- for (int k = 0; k <256; k++) {
- printbuf[k] = buffer[256*(linenum-1)+k];
- }
- ecran.rectangle(0, 8*outputrow, 100, 8*outputrow+31, BLACK);
- ecran.text_string( dest, row_no , 2 , FONT_8X8, WHITE);
- wait(.1);
- outputrow+= 2;
- if(outputrow>58) {
- outputrow =1;
- }
-}
-
-void myprintf(const char* format, ...)
-{
- char dest[256];
- if(j>80) {
- j=0;
- }
- va_list argptr;
- va_start(argptr, format);
- vsprintf(dest, format, argptr);
- va_end(argptr);
- for ( int i = 0; i < 256; i++) {
- buffer[256*j+i]= dest[i];
- }
- j++;
- int linenum = j;
-
- for (int k = 0; k <256; k++) {
- printbuf[k] = buffer[256*(linenum-1)+k];
- }
- // ecran.rectangle(0, 8*outputrow, 100, 8*outputrow+31, BLACK);
- ecran.text_string( dest, 2 , outputrow , FONT_8X8, WHITE);
- wait(.1);
- outputrow+= 2;
- if(outputrow>58) {
- outputrow =1;
- }
-}
-
-PS2Keyboard::keyboard_event_t evt_kb;
-
-int shift, ctrl, alt, numlock = 0, capslock = 0;
-
-char kb_getc()
-{
- char ascii;
-
- ascii = 0;
- while(ascii == 0) {
- if (ps2kb.processing(&evt_kb)) {
- lcd.locate(0, 1);
- //for (int i = 0; i < evt_kb.length; i++) {
- // lcd.printf("%02X", evt_kb.scancode[i]);
- // }
- //for (int i = 0; i < 16 - evt_kb.length * 2; i++) {
- // lcd.printf("-");
- //}
- if ( evt_kb.length == 1) {
- switch (evt_kb.scancode[0]) {
- //Keyboard mode key -Make-
- case (0x12) :
- shift = 1;
- lcd.locate(11,0);
- lcd.putc('S');
- break;
- case (0x59) :
- shift = 1;
- lcd.locate(11,0);
- lcd.putc('S');
- break;
- case (0x14) :
- ctrl = 1;
- lcd.locate(12,0);
- lcd.putc('C');
- break;
- case (0x11) :
- alt = 1;
- lcd.locate(13,0);
- lcd.putc('A');
- break;
- case (0x77) :
- numlock = (numlock) == 0 ? 1 : 0;
- if (numlock == 1) {
- lcd.locate(14,0);
- lcd.putc('N');
- } else {
- lcd.locate(14,0);
- lcd.putc(' ');
- }
- break;
- case (0x58) :
- capslock = (shift) == 1 ? !capslock : capslock;
- if (capslock == 1) lcd.locate(15,0), lcd.putc('L');
- else lcd.locate(15,0), lcd.putc(' ');
- break;
- //Character keys(ASCII) -Make-
- case (0x29) :
- ascii = ' ';
- break; //space
- case (0x0D) :
- ascii = 0x09;
- break; //tab
- case (0x66) :
- ascii = 0x08;
- break; //BS
- case (0x5A) :
- ascii = 0x0D;
- break; //ENTER
- case (0x76) :
- ascii = 0x1B;
- break; //ESC
- case (0x1C) :
- ascii = (shift + capslock) == 1 ? 'A' : 'a';
- break;
- case (0x32) :
- ascii = (shift + capslock) == 1 ? 'B' : 'b';
- break;
- case (0x21) :
- ascii = (shift + capslock) == 1 ? 'C' : 'c';
- break;
- case (0x23) :
- ascii = (shift + capslock) == 1 ? 'D' : 'd';
- break;
- case (0x24) :
- ascii = (shift + capslock) == 1 ? 'E' : 'e';
- break;
- case (0x2B) :
- ascii = (shift + capslock) == 1 ? 'F' : 'f';
- break;
- case (0x34) :
- ascii = (shift + capslock) == 1 ? 'G' : 'g';
- break;
- case (0x33) :
- ascii = (shift + capslock) == 1 ? 'H' : 'h';
- break;
- case (0x43) :
- ascii = (shift + capslock) == 1 ? 'I' : 'i';
- break;
- case (0x3B) :
- ascii = (shift + capslock) == 1 ? 'J' : 'j';
- break;
- case (0x42) :
- ascii = (shift + capslock) == 1 ? 'K' : 'k';
- break;
- case (0x4B) :
- ascii = (shift + capslock) == 1 ? 'L' : 'l';
- break;
- case (0x3A) :
- ascii = (shift + capslock) == 1 ? 'M' : 'm';
- break;
- case (0x31) :
- ascii = (shift + capslock) == 1 ? 'N' : 'n';
- break;
- case (0x44) :
- ascii = (shift + capslock) == 1 ? 'O' : 'o';
- break;
- case (0x4D) :
- ascii = (shift + capslock) == 1 ? 'P' : 'p';
- break;
- case (0x15) :
- ascii = (shift + capslock) == 1 ? 'Q' : 'q';
- break;
- case (0x2D) :
- ascii = (shift + capslock) == 1 ? 'R' : 'r';
- break;
- case (0x1B) :
- ascii = (shift + capslock) == 1 ? 'S' : 's';
- break;
- case (0x2C) :
- ascii = (shift + capslock) == 1 ? 'T' : 't';
- break;
- case (0x3C) :
- ascii = (shift + capslock) == 1 ? 'U' : 'u';
- break;
- case (0x2A) :
- ascii = (shift + capslock) == 1 ? 'V' : 'v';
- break;
- case (0x1D) :
- ascii = (shift + capslock) == 1 ? 'W' : 'w';
- break;
- case (0x22) :
- ascii = (shift + capslock) == 1 ? 'X' : 'x';
- break;
- case (0x35) :
- ascii = (shift + capslock) == 1 ? 'Y' : 'y';
- break;
- case (0x1A) :
- ascii = (shift + capslock) == 1 ? 'Z' : 'z';
- break;
- case (0x45) :
- ascii = shift == 1 ? '0' : '0';
- break;
- case (0x16) :
- ascii = shift == 1 ? '!' : '1';
- break;
- case (0x1E) :
- ascii = shift == 1 ? '"' : '2';
- break;
- case (0x26) :
- ascii = shift == 1 ? '#' : '3';
- break;
- case (0x25) :
- ascii = shift == 1 ? '$' : '4';
- break;
- case (0x2E) :
- ascii = shift == 1 ? '%' : '5';
- break;
- case (0x36) :
- ascii = shift == 1 ? '&' : '6';
- break;
- case (0x3D) :
- ascii = shift == 1 ? '\'' : '7';
- break;
- case (0x3E) :
- ascii = shift == 1 ? '(' : '8';
- break;
- case (0x46) :
- ascii = shift == 1 ? ')' : '9';
- break;
- case (0x4E) :
- ascii = shift == 1 ? '=' : '-';
- break;
- case (0x7B) :
- ascii = shift == 1 ? '-' : '-';
- break;
- case (0x4A) :
- ascii = shift == 1 ? '?' : '/';
- break;
- case (0x41) :
- ascii = shift == 1 ? '<' : ',';
- break;
- case (0x49) :
- ascii = shift == 1 ? '>' : '.';
- break;
- case (0x6A) :
- ascii = shift == 1 ? '|' : '\\';
- break;
- case (0x5B) :
- ascii = shift == 1 ? '{' : '[';
- break;
- case (0x5D) :
- ascii = shift == 1 ? '}' : ']';
- break;
- case (0x4C) :
- ascii = shift == 1 ? '+' : ';';
- break;
- case (0x79) :
- ascii = shift == 1 ? '+' : '+';
- break;
- case (0x51) :
- ascii = shift == 1 ? '_' : '\\';
- break;
- case (0x54) :
- ascii = shift == 1 ? '`' : '@';
- break;
- case (0x55) :
- ascii = shift == 1 ? '~' : '^';
- break;
- case (0x7C) :
- ascii = shift == 1 ? '*' : '*';
- break;
- case (0x52) :
- ascii = shift == 1 ? '*' : ':';
- break;
- //Function keys -Make-
- case (0x05) :
- ascii = 0x05;
- break; //F1
- case (0x06) :
- ascii = 0x06;
- break; //F2
- case (0x04) :
- ascii = 0x04;
- break; //F3
- case (0x0C) :
- ascii = 0x12;
- break; //F4
- case (0x03) :
- ascii = 0x03;
- break; //F5
- case (0x0B) :
- ascii = 0x11;
- break; //F6
- case (0x83) :
- ascii = 0x13;
- break; //F7
- case (0x0A) :
- ascii = 0x10;
- break; //F8
- case (0x01) :
- ascii = 0x01;
- break; //F9
- case (0x09) :
- ascii = 0x02;
- break; //F10
- case (0x78) :
- ascii = 0x14;
- break; //F11
- case (0x07) :
- ascii = 0x07;
- break; //F12
- //Tenkeys -Make-
- case (0x75) :
- ascii = numlock == 1 ? '8' : 0x15;
- break; //UP
- case (0x72) :
- ascii = numlock == 1 ? '2' : 0x16;
- break; //DOWN
- case (0x6B) :
- ascii = numlock == 1 ? '4' : 0x17;
- break; //LEFT
- case (0x74) :
- ascii = numlock == 1 ? '6' : 0x18;
- break; //RIGHT
- case (0x6C) :
- ascii = numlock == 1 ? '7' : 0x1C;
- break; //HOME
- case (0x69) :
- ascii = numlock == 1 ? '1' : 0x1D;
- break; //END
- case (0x70) :
- ascii = numlock == 1 ? '0' : 0x1E;
- break; //INS
- case (0x7D) :
- ascii = numlock == 1 ? '9' : 0x19;
- break; //PAGE UP
- case (0x7A) :
- ascii = numlock == 1 ? '3' : 0x1A;
- break; //PAGE DOWN
- case (0x71) :
- ascii = numlock == 1 ? '.' : 0x7F;
- break; //DEL
- case (0x73) :
- ascii = numlock == 1 ? '5' : '5';
- break;
- }
- } else {
- //Keyboard mode key -Break- F0xx
- if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xF0) {
- switch (evt_kb.scancode[1]) {
- case (0x12) :
- shift = 0;
- lcd.locate(11,0);
- lcd.putc(' ');
- break;
- case (0x59) :
- shift = 0;
- lcd.locate(11,0);
- lcd.putc(' ');
- break;
- case (0x14) :
- ctrl = 0;
- lcd.locate(12,0);
- lcd.putc(' ');
- break;
- case (0x11) :
- alt = 0;
- lcd.locate(13,0);
- lcd.putc(' ');
- break;
- }
- } else {
- //Keyboard right mode keys, Arrow, Del -Make- E0xx
- if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xE0) {
- switch (evt_kb.scancode[1]) {
- case (0x14) :
- ctrl = 0;
- lcd.locate(12,0);
- lcd.putc(' ');
- break;
- case (0x11) :
- alt = 0;
- lcd.locate(13,0);
- lcd.putc(' ');
- break;
- case (0x4A) :
- ascii = '/';
- break;
- case (0x75) :
- ascii = 0x15;
- break; //UP
- case (0x72) :
- ascii = 0x16;
- break; //DOWN
- case (0x6B) :
- ascii = 0x17;
- break; //LEFT
- case (0x74) :
- ascii = 0x18;
- break; //RIGHT
- case (0x70) :
- ascii = 0x1E;
- break; //INSERT
- case (0x71) :
- ascii = 0x7F;
- break; //DEL
- case (0x5A) :
- ascii = 0x0D;
- break; //ENTER
- }
- } else {
- //Keyboard right mode keys -Break- E0F0xx
- if ( evt_kb.length == 3 && evt_kb.scancode[0] == 0xE0 && evt_kb.scancode[1] == 0xF0) {
- switch (evt_kb.scancode[2]) {
- case (0x14) :
- ctrl = 0;
- lcd.locate(12,0);
- lcd.putc(' ');
- break;
- case (0x11) :
- alt = 0;
- lcd.locate(13,0);
- lcd.putc(' ');
- break;
- }
- }
- }
- }
- }
- }
- } //while(ascii == 0)
- return ascii;
-} //kb_getc()
-
-
-
-
-
-
-
-
-int main()
-{
- ecran.baudrate(115200);
- ecran.display_control(0x0c, 0x01);
- int col_count=1;
- ecran.cls();
-
- int chk_blank=0;
- int wrong_count=0;
- char chr[100];
- char yn;
- char ans[100], ans_temp;
- int i=0;
- int blank=0;
- lcd.locate(0, 0);
- bool end_cond = false;
- int trial=10;
- bool count= false;
- while (1) {
- if(!count) {
- //first player
- myprintf("Enter a Word");
- while(chr[i]!=0x0D) {
- i++;
- chr[i] = kb_getc();
-
- }
- if(chr[i]==0x0D) {
- count=true;
-
- // i--;
- }
- for(int k=1; k<i; k++) {
- if((chr[k] =='a')||(chr[k] =='e')||(chr[k] =='i')||(chr[k] =='o')||(chr[k] =='u')) {
-
- ans[k]=chr[k];
- } else {
-
- ans[k]='_';
-
- }
-
- }
-
-
-
-
- wait(.2);
- for(int u=1; u<i; u++)
- if(ans[u] == '_')
- blank++;
-
- ans[0]=' ';
-
- lcd.locate(0,0);
-
- lcd.cls();
- for(int z=1; z<i; z++)
- lcd.printf("%c",ans[z]);
- lcd.printf(" ");
-
- }
-
- else {
- //2nd player
- ans[i]='\0';
- if(trial>0) {
-
- myprintf("enter char");
-
- ans_temp = kb_getc();
-
- for(int h=1; h<i; h++) {
- if(ans_temp==chr[h]) {
- chk_blank++;
- ans[h]=chr[h];
- } else
- wrong_count++;
-
- }
-
- if(wrong_count==(i-1))
- trial--;
- myprintf("trial %i",trial);
- switch(trial) {
- case 0:
- ecran.rectangle(410,322 ,415, 362 , WHITE);
- //break;
- case 1:
- ecran.rectangle(440,322 ,435, 362 , WHITE);
- //break;
- case 2:
- ecran.rectangle(408, 280,375, 285 , WHITE);
- //break;
- case 3:
- ecran.rectangle(442, 280,475, 285 , WHITE);
- //break;
- case 4: //ecran.ellipse(425,290 ,5,30,WHITE);
- ecran.circle(425,280,15,WHITE);
- ecran.rectangle(440, 280,410, 320 , WHITE);
- case 5:
- ecran.circle(425,255,10,WHITE);
- //break;
- case 6:
- ecran.pixel(425,250, BLUE);
- ecran.line(425, 240, 425,200,BLUE);
- //break;
- case 7:
- ecran.pixel(425,200, WHITE);
- ecran.line(325, 200, 425,200,WHITE);
- // break;
- case 8:
- ecran.pixel(325, 200, GREEN);
- ecran.line(325, 200, 325,350,GREEN);
- // break;
- case 9:
- ecran.line(300, 400, 325,350,RED);
- ecran.line(350, 400, 325,350,RED);
- ecran.pixel(325,350, RED);
- ecran.pixel(300,400, RED);
- ecran.pixel(350,400, RED);
- //break;
- // default:myprintf("correct");
- }
-
-
- wrong_count=0;
-
- lcd.cls();
- lcd.locate(0, 0);
- for(int z=1; z<(i+1); z++)
- lcd.printf("%c",ans[z]);
- lcd.printf(" ");
-
- if(blank==chk_blank) {
- lcd.cls();
- //lcd.printf("You win");
- myprintf("You Win");
- lcd.printf("You Win");
- speaker.beep(100, .1);
- wait(.1);
- speaker.beep(100, .1);
- wait(.1);
- speaker.beep(100, .1);
- wait(.1);
- speaker.beep(100, .1);
- wait(.1);
- speaker.beep(100, .1);
- wait(.1);
- speaker.beep(100, .1);
- end_cond=true;
- }
-
-//lcd.printf("%d trial ",trial);
- } else {
- lcd.cls();
- lcd.printf("GAME OVER");
- myprintf("GAME OVER");
- speaker.beep(90, .5);
- end_cond=true;
- }
- }
-//ecran.cls();
- if(end_cond==true) {
-//myprintf("gng here");
-ecran.cls();
- myprintf("Play Again?");
- yn=kb_getc();
- //myprintf("you entered %c",yn);
- if(yn=='y') {
-//wait(.1);
-
-//wait(.1);
- trial=10;
- count=false;
- i=0;
- end_cond=false;
- }
- else {
- myprintf("bye");
- return(-1);
- }
- }
- }
-
- return 0;
-
-}
-
+#include "mbed.h"
+#include "TFT_4DGL.h"
+#include <stdarg.h>
+#include "TextLCD.h"
+#include <stdio.h>
+#include "PS2Keyboard.h"
+#include <string>
+#include "beep.h"
+Beep speaker(p22);
+// overwrite 4DGL library screen size settings in TFT_4DGL.h
+#define SIZE_X 479
+#define SIZE_Y 639
+//
+
+TFT_4DGL ecran(p13,p14,p21); // serial tx, serial rx, reset pin;
+TextLCD lcd(p24, p26, p27, p28, p29, p30);
+PS2Keyboard ps2kb(p12, p11);
+int outputrow = 1;
+int j = 0;
+char buffer[20480]; //working at 4608
+char printbuf[256];
+int linenum=1;
+void myprintf1(int row_no,const char* format, ...)
+{
+ char dest[256];
+ if(j>80) {
+ j=0;
+ }
+ va_list argptr;
+ va_start(argptr, format);
+ vsprintf(dest, format, argptr);
+ va_end(argptr);
+ for ( int i = 0; i < 256; i++) {
+ buffer[256*j+i]= dest[i];
+ }
+ j++;
+ int linenum = j;
+
+ for (int k = 0; k <256; k++) {
+ printbuf[k] = buffer[256*(linenum-1)+k];
+ }
+ ecran.rectangle(0, 8*outputrow, 100, 8*outputrow+31, BLACK);
+ ecran.text_string( dest, row_no , 2 , FONT_8X8, WHITE);
+ wait(.1);
+ outputrow+= 2;
+ if(outputrow>58) {
+ outputrow =1;
+ }
+}
+
+void myprintf(const char* format, ...)
+{
+ char dest[256];
+ if(j>80) {
+ j=0;
+ }
+ va_list argptr;
+ va_start(argptr, format);
+ vsprintf(dest, format, argptr);
+ va_end(argptr);
+ for ( int i = 0; i < 256; i++) {
+ buffer[256*j+i]= dest[i];
+ }
+ j++;
+ int linenum = j;
+
+ for (int k = 0; k <256; k++) {
+ printbuf[k] = buffer[256*(linenum-1)+k];
+ }
+ // ecran.rectangle(0, 8*outputrow, 100, 8*outputrow+31, BLACK);
+ ecran.text_string( dest, 2 , outputrow , FONT_8X8, WHITE);
+ wait(.1);
+ outputrow+= 2;
+ if(outputrow>58) {
+ outputrow =1;
+ }
+}
+
+PS2Keyboard::keyboard_event_t evt_kb;
+
+int shift, ctrl, alt, numlock = 0, capslock = 0;
+
+char kb_getc()
+{
+ char ascii;
+
+ ascii = 0;
+ while(ascii == 0) {
+ if (ps2kb.processing(&evt_kb)) {
+ lcd.locate(0, 1);
+ //for (int i = 0; i < evt_kb.length; i++) {
+ // lcd.printf("%02X", evt_kb.scancode[i]);
+ // }
+ //for (int i = 0; i < 16 - evt_kb.length * 2; i++) {
+ // lcd.printf("-");
+ //}
+ if ( evt_kb.length == 1) {
+ switch (evt_kb.scancode[0]) {
+ //Keyboard mode key -Make-
+ case (0x12) :
+ shift = 1;
+ lcd.locate(11,0);
+ lcd.putc('S');
+ break;
+ case (0x59) :
+ shift = 1;
+ lcd.locate(11,0);
+ lcd.putc('S');
+ break;
+ case (0x14) :
+ ctrl = 1;
+ lcd.locate(12,0);
+ lcd.putc('C');
+ break;
+ case (0x11) :
+ alt = 1;
+ lcd.locate(13,0);
+ lcd.putc('A');
+ break;
+ case (0x77) :
+ numlock = (numlock) == 0 ? 1 : 0;
+ if (numlock == 1) {
+ lcd.locate(14,0);
+ lcd.putc('N');
+ } else {
+ lcd.locate(14,0);
+ lcd.putc(' ');
+ }
+ break;
+ case (0x58) :
+ capslock = (shift) == 1 ? !capslock : capslock;
+ if (capslock == 1) lcd.locate(15,0), lcd.putc('L');
+ else lcd.locate(15,0), lcd.putc(' ');
+ break;
+ //Character keys(ASCII) -Make-
+ case (0x29) :
+ ascii = ' ';
+ break; //space
+ case (0x0D) :
+ ascii = 0x09;
+ break; //tab
+ case (0x66) :
+ ascii = 0x08;
+ break; //BS
+ case (0x5A) :
+ ascii = 0x0D;
+ break; //ENTER
+ case (0x76) :
+ ascii = 0x1B;
+ break; //ESC
+ case (0x1C) :
+ ascii = (shift + capslock) == 1 ? 'A' : 'a';
+ break;
+ case (0x32) :
+ ascii = (shift + capslock) == 1 ? 'B' : 'b';
+ break;
+ case (0x21) :
+ ascii = (shift + capslock) == 1 ? 'C' : 'c';
+ break;
+ case (0x23) :
+ ascii = (shift + capslock) == 1 ? 'D' : 'd';
+ break;
+ case (0x24) :
+ ascii = (shift + capslock) == 1 ? 'E' : 'e';
+ break;
+ case (0x2B) :
+ ascii = (shift + capslock) == 1 ? 'F' : 'f';
+ break;
+ case (0x34) :
+ ascii = (shift + capslock) == 1 ? 'G' : 'g';
+ break;
+ case (0x33) :
+ ascii = (shift + capslock) == 1 ? 'H' : 'h';
+ break;
+ case (0x43) :
+ ascii = (shift + capslock) == 1 ? 'I' : 'i';
+ break;
+ case (0x3B) :
+ ascii = (shift + capslock) == 1 ? 'J' : 'j';
+ break;
+ case (0x42) :
+ ascii = (shift + capslock) == 1 ? 'K' : 'k';
+ break;
+ case (0x4B) :
+ ascii = (shift + capslock) == 1 ? 'L' : 'l';
+ break;
+ case (0x3A) :
+ ascii = (shift + capslock) == 1 ? 'M' : 'm';
+ break;
+ case (0x31) :
+ ascii = (shift + capslock) == 1 ? 'N' : 'n';
+ break;
+ case (0x44) :
+ ascii = (shift + capslock) == 1 ? 'O' : 'o';
+ break;
+ case (0x4D) :
+ ascii = (shift + capslock) == 1 ? 'P' : 'p';
+ break;
+ case (0x15) :
+ ascii = (shift + capslock) == 1 ? 'Q' : 'q';
+ break;
+ case (0x2D) :
+ ascii = (shift + capslock) == 1 ? 'R' : 'r';
+ break;
+ case (0x1B) :
+ ascii = (shift + capslock) == 1 ? 'S' : 's';
+ break;
+ case (0x2C) :
+ ascii = (shift + capslock) == 1 ? 'T' : 't';
+ break;
+ case (0x3C) :
+ ascii = (shift + capslock) == 1 ? 'U' : 'u';
+ break;
+ case (0x2A) :
+ ascii = (shift + capslock) == 1 ? 'V' : 'v';
+ break;
+ case (0x1D) :
+ ascii = (shift + capslock) == 1 ? 'W' : 'w';
+ break;
+ case (0x22) :
+ ascii = (shift + capslock) == 1 ? 'X' : 'x';
+ break;
+ case (0x35) :
+ ascii = (shift + capslock) == 1 ? 'Y' : 'y';
+ break;
+ case (0x1A) :
+ ascii = (shift + capslock) == 1 ? 'Z' : 'z';
+ break;
+ case (0x45) :
+ ascii = shift == 1 ? '0' : '0';
+ break;
+ case (0x16) :
+ ascii = shift == 1 ? '!' : '1';
+ break;
+ case (0x1E) :
+ ascii = shift == 1 ? '"' : '2';
+ break;
+ case (0x26) :
+ ascii = shift == 1 ? '#' : '3';
+ break;
+ case (0x25) :
+ ascii = shift == 1 ? '$' : '4';
+ break;
+ case (0x2E) :
+ ascii = shift == 1 ? '%' : '5';
+ break;
+ case (0x36) :
+ ascii = shift == 1 ? '&' : '6';
+ break;
+ case (0x3D) :
+ ascii = shift == 1 ? '\'' : '7';
+ break;
+ case (0x3E) :
+ ascii = shift == 1 ? '(' : '8';
+ break;
+ case (0x46) :
+ ascii = shift == 1 ? ')' : '9';
+ break;
+ case (0x4E) :
+ ascii = shift == 1 ? '=' : '-';
+ break;
+ case (0x7B) :
+ ascii = shift == 1 ? '-' : '-';
+ break;
+ case (0x4A) :
+ ascii = shift == 1 ? '?' : '/';
+ break;
+ case (0x41) :
+ ascii = shift == 1 ? '<' : ',';
+ break;
+ case (0x49) :
+ ascii = shift == 1 ? '>' : '.';
+ break;
+ case (0x6A) :
+ ascii = shift == 1 ? '|' : '\\';
+ break;
+ case (0x5B) :
+ ascii = shift == 1 ? '{' : '[';
+ break;
+ case (0x5D) :
+ ascii = shift == 1 ? '}' : ']';
+ break;
+ case (0x4C) :
+ ascii = shift == 1 ? '+' : ';';
+ break;
+ case (0x79) :
+ ascii = shift == 1 ? '+' : '+';
+ break;
+ case (0x51) :
+ ascii = shift == 1 ? '_' : '\\';
+ break;
+ case (0x54) :
+ ascii = shift == 1 ? '`' : '@';
+ break;
+ case (0x55) :
+ ascii = shift == 1 ? '~' : '^';
+ break;
+ case (0x7C) :
+ ascii = shift == 1 ? '*' : '*';
+ break;
+ case (0x52) :
+ ascii = shift == 1 ? '*' : ':';
+ break;
+ //Function keys -Make-
+ case (0x05) :
+ ascii = 0x05;
+ break; //F1
+ case (0x06) :
+ ascii = 0x06;
+ break; //F2
+ case (0x04) :
+ ascii = 0x04;
+ break; //F3
+ case (0x0C) :
+ ascii = 0x12;
+ break; //F4
+ case (0x03) :
+ ascii = 0x03;
+ break; //F5
+ case (0x0B) :
+ ascii = 0x11;
+ break; //F6
+ case (0x83) :
+ ascii = 0x13;
+ break; //F7
+ case (0x0A) :
+ ascii = 0x10;
+ break; //F8
+ case (0x01) :
+ ascii = 0x01;
+ break; //F9
+ case (0x09) :
+ ascii = 0x02;
+ break; //F10
+ case (0x78) :
+ ascii = 0x14;
+ break; //F11
+ case (0x07) :
+ ascii = 0x07;
+ break; //F12
+ //Tenkeys -Make-
+ case (0x75) :
+ ascii = numlock == 1 ? '8' : 0x15;
+ break; //UP
+ case (0x72) :
+ ascii = numlock == 1 ? '2' : 0x16;
+ break; //DOWN
+ case (0x6B) :
+ ascii = numlock == 1 ? '4' : 0x17;
+ break; //LEFT
+ case (0x74) :
+ ascii = numlock == 1 ? '6' : 0x18;
+ break; //RIGHT
+ case (0x6C) :
+ ascii = numlock == 1 ? '7' : 0x1C;
+ break; //HOME
+ case (0x69) :
+ ascii = numlock == 1 ? '1' : 0x1D;
+ break; //END
+ case (0x70) :
+ ascii = numlock == 1 ? '0' : 0x1E;
+ break; //INS
+ case (0x7D) :
+ ascii = numlock == 1 ? '9' : 0x19;
+ break; //PAGE UP
+ case (0x7A) :
+ ascii = numlock == 1 ? '3' : 0x1A;
+ break; //PAGE DOWN
+ case (0x71) :
+ ascii = numlock == 1 ? '.' : 0x7F;
+ break; //DEL
+ case (0x73) :
+ ascii = numlock == 1 ? '5' : '5';
+ break;
+ }
+ } else {
+ //Keyboard mode key -Break- F0xx
+ if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xF0) {
+ switch (evt_kb.scancode[1]) {
+ case (0x12) :
+ shift = 0;
+ lcd.locate(11,0);
+ lcd.putc(' ');
+ break;
+ case (0x59) :
+ shift = 0;
+ lcd.locate(11,0);
+ lcd.putc(' ');
+ break;
+ case (0x14) :
+ ctrl = 0;
+ lcd.locate(12,0);
+ lcd.putc(' ');
+ break;
+ case (0x11) :
+ alt = 0;
+ lcd.locate(13,0);
+ lcd.putc(' ');
+ break;
+ }
+ } else {
+ //Keyboard right mode keys, Arrow, Del -Make- E0xx
+ if ( evt_kb.length == 2 && evt_kb.scancode[0] == 0xE0) {
+ switch (evt_kb.scancode[1]) {
+ case (0x14) :
+ ctrl = 0;
+ lcd.locate(12,0);
+ lcd.putc(' ');
+ break;
+ case (0x11) :
+ alt = 0;
+ lcd.locate(13,0);
+ lcd.putc(' ');
+ break;
+ case (0x4A) :
+ ascii = '/';
+ break;
+ case (0x75) :
+ ascii = 0x15;
+ break; //UP
+ case (0x72) :
+ ascii = 0x16;
+ break; //DOWN
+ case (0x6B) :
+ ascii = 0x17;
+ break; //LEFT
+ case (0x74) :
+ ascii = 0x18;
+ break; //RIGHT
+ case (0x70) :
+ ascii = 0x1E;
+ break; //INSERT
+ case (0x71) :
+ ascii = 0x7F;
+ break; //DEL
+ case (0x5A) :
+ ascii = 0x0D;
+ break; //ENTER
+ }
+ } else {
+ //Keyboard right mode keys -Break- E0F0xx
+ if ( evt_kb.length == 3 && evt_kb.scancode[0] == 0xE0 && evt_kb.scancode[1] == 0xF0) {
+ switch (evt_kb.scancode[2]) {
+ case (0x14) :
+ ctrl = 0;
+ lcd.locate(12,0);
+ lcd.putc(' ');
+ break;
+ case (0x11) :
+ alt = 0;
+ lcd.locate(13,0);
+ lcd.putc(' ');
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ } //while(ascii == 0)
+ return ascii;
+} //kb_getc()
+
+
+
+
+
+
+
+
+int main()
+{
+ ecran.baudrate(115200);
+ ecran.display_control(0x0c, 0x01);
+ int col_count=1;
+ ecran.cls();
+
+ int chk_blank=0;
+ int wrong_count=0;
+ char chr[100];
+ char yn;
+ char ans[100], ans_temp;
+ int i=0;
+ int blank=0;
+ lcd.locate(0, 0);
+ bool end_cond = false;
+ int trial=10;
+ bool count= false;
+ while (1) {
+ if(!count) {
+ //first player
+ myprintf("Enter a Word");
+ while(chr[i]!=0x0D) {
+ i++;
+ chr[i] = kb_getc();
+
+ }
+ if(chr[i]==0x0D) {
+ count=true;
+
+ // i--;
+ }
+ for(int k=1; k<i; k++) {
+ if((chr[k] =='a')||(chr[k] =='e')||(chr[k] =='i')||(chr[k] =='o')||(chr[k] =='u')) {
+
+ ans[k]=chr[k];
+ } else {
+
+ ans[k]='_';
+
+ }
+
+ }
+
+
+
+
+ wait(.2);
+ for(int u=1; u<i; u++)
+ if(ans[u] == '_')
+ blank++;
+
+ ans[0]=' ';
+
+ lcd.locate(0,0);
+
+ lcd.cls();
+ for(int z=1; z<i; z++)
+ lcd.printf("%c",ans[z]);
+ lcd.printf(" ");
+
+ }
+
+ else {
+ //2nd player
+ ans[i]='\0';
+ if(trial>0) {
+
+ myprintf("enter char");
+
+ ans_temp = kb_getc();
+
+ for(int h=1; h<i; h++) {
+ if(ans_temp==chr[h]) {
+ chk_blank++;
+ ans[h]=chr[h];
+ } else
+ wrong_count++;
+
+ }
+
+ if(wrong_count==(i-1))
+ trial--;
+ myprintf("trial %i",trial);
+ switch(trial) {
+ case 0:
+ ecran.rectangle(410,322 ,415, 362 , WHITE);
+ //break;
+ case 1:
+ ecran.rectangle(440,322 ,435, 362 , WHITE);
+ //break;
+ case 2:
+ ecran.rectangle(408, 280,375, 285 , WHITE);
+ //break;
+ case 3:
+ ecran.rectangle(442, 280,475, 285 , WHITE);
+ //break;
+ case 4: //ecran.ellipse(425,290 ,5,30,WHITE);
+ ecran.circle(425,280,15,WHITE);
+ ecran.rectangle(440, 280,410, 320 , WHITE);
+ case 5:
+ ecran.circle(425,255,10,WHITE);
+ //break;
+ case 6:
+ ecran.pixel(425,250, BLUE);
+ ecran.line(425, 240, 425,200,BLUE);
+ //break;
+ case 7:
+ ecran.pixel(425,200, WHITE);
+ ecran.line(325, 200, 425,200,WHITE);
+ // break;
+ case 8:
+ ecran.pixel(325, 200, GREEN);
+ ecran.line(325, 200, 325,350,GREEN);
+ // break;
+ case 9:
+ ecran.line(300, 400, 325,350,RED);
+ ecran.line(350, 400, 325,350,RED);
+ ecran.pixel(325,350, RED);
+ ecran.pixel(300,400, RED);
+ ecran.pixel(350,400, RED);
+ //break;
+ // default:myprintf("correct");
+ }
+
+
+ wrong_count=0;
+
+ lcd.cls();
+ lcd.locate(0, 0);
+ for(int z=1; z<(i+1); z++)
+ lcd.printf("%c",ans[z]);
+ lcd.printf(" ");
+
+ if(blank==chk_blank) {
+ wait(2);
+ lcd.cls();
+ //lcd.printf("You win");
+ myprintf("You Win");
+ lcd.printf("You Win");
+ speaker.beep(100, .1);
+ wait(.1);
+ speaker.beep(100, .1);
+ wait(.1);
+ speaker.beep(100, .1);
+ wait(.1);
+ speaker.beep(100, .1);
+ wait(.1);
+ speaker.beep(100, .1);
+ wait(.1);
+ speaker.beep(100, .1);
+ end_cond=true;
+ }
+
+//lcd.printf("%d trial ",trial);
+ } else {
+ wait(2);
+ lcd.cls();
+ lcd.printf("GAME OVER");
+ myprintf("GAME OVER");
+ speaker.beep(90, .5);
+ end_cond=true;
+ }
+ }
+//ecran.cls();
+ if(end_cond==true) {
+//myprintf("gng here");
+ecran.cls();
+ myprintf("Play Again?");
+ yn=kb_getc();
+ //myprintf("you entered %c",yn);
+ if(yn=='y') {
+//wait(.1);
+
+//wait(.1);
+ trial=10;
+ count=false;
+ i=0;
+ end_cond=false;
+ }
+ else {
+ myprintf("bye");
+ return(-1);
+ }
+ }
+ }
+
+ return 0;
+
+}
+