Two Player Hangman

Dependencies:   4DGL mbed PS2 TextLCD beep

Files at this revision

API Documentation at this revision

Comitter:
pprasad7
Date:
Thu Oct 11 20:24:22 2012 +0000
Parent:
0:ad25b4578ec4
Commit message:
Version 1.0;

Changed in this revision

4DGL.lib Show annotated file Show diff for this revision Revisions of this file
PS2/PS2.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD/TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
beep/beep.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r ad25b4578ec4 -r 2fad0ed78add 4DGL.lib
--- 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
diff -r ad25b4578ec4 -r 2fad0ed78add PS2/PS2.lib
--- 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
diff -r ad25b4578ec4 -r 2fad0ed78add TextLCD/TextLCD.lib
--- 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
diff -r ad25b4578ec4 -r 2fad0ed78add beep/beep.lib
--- 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
diff -r ad25b4578ec4 -r 2fad0ed78add main.cpp
--- 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;
+
+}
+