Alan Song / Mbed 2 deprecated 4180lab4

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "uLCD_4DGL.h"
00003 #include "SDFileSystem.h"
00004 #include "wave_player.h"
00005 #include "rtos.h"
00006 #define X 0x000000
00007 #define _ 0xFFFFFF
00008 #define MONSTER_HEIGHT 24
00009 #define MONSTER_WIDTH 33
00010 
00011 uLCD_4DGL uLCD(p28, p27, p26);
00012 SDFileSystem sd(p5, p6, p7, p8, "sd");
00013 AnalogOut DACout(p18);
00014 wave_player waver(&DACout);
00015 FILE *fp;
00016 FILE *wave_file;
00017 int menu_state;
00018 bool arrow_state;
00019 bool light_state; // 0: on 1: off
00020 int info_state;
00021 
00022 class Nav_Switch
00023 {
00024 public:
00025     Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire);
00026     int read();
00027 //boolean functions to test each switch
00028     bool up();
00029     bool down();
00030     bool left();
00031     bool right();
00032     bool fire();
00033 //automatic read on RHS
00034     operator int ();
00035 //index to any switch array style
00036     bool operator[](int index) {
00037         return _pins[index];
00038     };
00039 private:
00040     BusIn _pins;
00041  
00042 };
00043 Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire):
00044     _pins(up, down, left, right, fire)
00045 {
00046     _pins.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise
00047     wait(0.001); //delays just a bit for pullups to pull inputs high
00048 }
00049 inline bool Nav_Switch::up()
00050 {
00051     return !(_pins[0]);
00052 }
00053 inline bool Nav_Switch::down()
00054 {
00055     return !(_pins[1]);
00056 }
00057 inline bool Nav_Switch::left()
00058 {
00059     return !(_pins[2]);
00060 }
00061 inline bool Nav_Switch::right()
00062 {
00063     return !(_pins[3]);
00064 }
00065 inline bool Nav_Switch::fire()
00066 {
00067     return !(_pins[4]);
00068 }
00069 inline int Nav_Switch::read()
00070 {
00071     return _pins.read();
00072 }
00073 inline Nav_Switch::operator int ()
00074 {
00075     return _pins.read();
00076 }
00077  
00078 Nav_Switch myNav( p12, p15, p14, p16, p13);
00079 
00080 // draw start
00081 
00082 int FOOD[22*17]={
00083     _,_,_,_,_,_,_,X,X,X,X,X,X,X,X,_,_,_,_,_,_,_,
00084     _,_,_,_,_,_,X,X,_,_,_,_,_,_,X,X,_,_,_,_,_,_,
00085     _,_,_,_,_,X,X,_,_,_,_,_,_,_,_,X,X,_,_,_,_,_,
00086     _,_,_,_,X,X,_,_,_,_,_,_,_,_,_,_,X,X,_,_,_,_,
00087     _,_,_,X,X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,_,_,_,
00088     _,_,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,_,_,
00089     _,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,_,
00090     X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
00091     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00092     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00093     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00094     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00095     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00096     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00097     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00098     _,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,
00099     _,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,
00100 };
00101 
00102 int FOOD2[22*6]={
00103     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00104     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00105     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00106     X,X,_,_,_,_,X,X,X,X,X,X,X,X,X,X,_,_,_,_,X,X,
00107     _,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,
00108     _,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,
00109 };
00110 
00111 int MED[16*16]={
00112     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00113     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00114     X,X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
00115     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00116     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00117     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00118     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00119     X,X,_,X,X,X,X,X,X,X,X,X,X,_,X,X,
00120     X,X,_,X,X,X,X,X,X,X,X,X,X,_,X,X,
00121     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00122     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00123     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00124     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00125     X,X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
00126     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00127     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00128 };
00129 
00130 int MED2[16*8]={
00131     X,X,_,X,X,X,X,X,X,X,X,X,X,_,X,X,
00132     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00133     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00134     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00135     X,X,_,_,_,_,_,X,X,_,_,_,_,_,X,X,
00136     X,X,_,_,_,_,_,_,_,_,_,_,_,_,X,X,
00137     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00138     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00139 };
00140 
00141 
00142 int POOP[8*11]={
00143     _,_,_,_,_,_,_,_,_,_,_,
00144     _,_,_,_,_,_,_,_,_,_,_,
00145     _,_,_,_,_,X,_,_,_,_,_,
00146     _,_,_,_,_,X,X,_,_,_,_,
00147     _,_,_,_,X,X,X,X,_,_,_,
00148     _,_,_,X,X,X,_,X,_,_,_,
00149     _,_,X,X,X,X,X,_,X,_,_,
00150     _,X,X,X,X,X,X,X,X,X,_,
00151 };
00152 
00153 int MONSTER1_1[MONSTER_HEIGHT * MONSTER_WIDTH]={
00154     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00155     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00156     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00157     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00158     X,X,X,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00159     X,X,X,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00160     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00161     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00162     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00163     X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,
00164     X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,
00165     X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,
00166     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00167     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00168     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00169     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00170     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00171     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00172     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00173     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00174     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00175     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00176     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00177     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00178 };
00179 
00180 int MONSTER1_2[MONSTER_HEIGHT * MONSTER_WIDTH]={
00181     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00182     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00183     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00184     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00185     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,X,X,X,
00186     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,X,X,X,
00187     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00188     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00189     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00190     _,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,
00191     _,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,
00192     _,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,
00193     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00194     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00195     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00196     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00197     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00198     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00199     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00200     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00201     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00202     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00203     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00204     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00205 };
00206 
00207 
00208 int MONSTER1_MAD1[MONSTER_HEIGHT * MONSTER_WIDTH]={
00209     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00210     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00211     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00212     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00213     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00214     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00215     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00216     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00217     _,_,_,_,_,_,X,X,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,X,X,_,_,_,_,_,_,
00218     X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,
00219     X,X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,X,
00220     X,X,X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,X,_,_,X,X,X,X,X,X,X,X,X,X,
00221     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00222     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00223     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00224     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00225     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00226     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00227     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00228     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00229     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00230     _,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,
00231     _,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,
00232     _,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,
00233 };
00234 
00235 
00236 
00237 
00238 
00239 int MONSTER1_SICK1[MONSTER_HEIGHT * MONSTER_WIDTH]={
00240     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00241     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00242     _,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
00243     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00244     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00245     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00246     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00247     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00248     _,_,_,_,_,_,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,
00249     _,_,_,X,X,X,X,X,_,X,_,X,_,X,X,X,X,X,X,X,_,X,_,X,_,X,X,X,X,X,_,_,_,
00250     _,_,_,X,X,X,X,X,_,_,X,_,_,X,X,X,X,X,X,X,_,_,X,_,_,X,X,X,X,X,_,_,_,
00251     _,_,_,X,X,X,X,X,_,X,_,X,_,X,X,X,X,X,X,X,_,X,_,X,_,X,X,X,X,X,_,_,_,
00252     X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,
00253     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00254     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00255     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00256     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00257     X,X,X,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,X,X,X,
00258     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00259     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00260     X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,
00261     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00262     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00263     _,_,_,_,_,_,_,_,_,X,X,X,X,X,X,_,_,_,X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
00264 };
00265 
00266 int MONSTER1_SLEEP1[MONSTER_HEIGHT * MONSTER_WIDTH]={
00267     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00268     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00269     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00270     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00271     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00272     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00273     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00274     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,X,X,X,_,X,X,X,_,_,
00275     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,_,_,_,X,_,_,_,X,_,_,_,
00276     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,X,X,X,_,X,X,X,_,_,
00277     _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
00278     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00279     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00280     _,_,_,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,_,_,_,
00281     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00282     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00283     _,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,X,X,X,_,_,_,_,_,_,_,_,_,
00284     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00285     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00286     _,_,_,_,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,_,_,_,
00287     _,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,X,X,X,X,X,X,X,_,_,_,
00288     _,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,
00289     _,_,_,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,_,_,_,
00290     X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
00291 };
00292 
00293 void drawMenu1(int color) {
00294     uLCD.line(12, 6, 13, 6, color);
00295     uLCD.line(24, 6, 25, 6, color);
00296     uLCD.line(13, 7, 14, 7, color);
00297     uLCD.line(23, 7, 25, 7, color);
00298     uLCD.line(10, 8, 11, 8, color);
00299     uLCD.line(14, 8, 15, 8, color);
00300     uLCD.line(22, 8, 25, 8, color);
00301     uLCD.line(8, 9, 9, 9, color);
00302     uLCD.line(11, 9, 13, 9, color);
00303     uLCD.line(15, 9, 16, 9, color);
00304     uLCD.line(21, 9, 25, 9, color);
00305     uLCD.line(9, 10, 10, 10, color);
00306     uLCD.line(12, 10, 14, 10, color);
00307     uLCD.line(15, 10, 16, 10, color);
00308     uLCD.line(20, 10, 25, 10, color);
00309     uLCD.line(10, 11, 11, 11, color);
00310     uLCD.line(13, 11, 16, 11, color);
00311     uLCD.line(19, 11, 24, 11, color);
00312     uLCD.line(11, 12, 16, 12, color);
00313     uLCD.line(18, 12, 23, 12, color);
00314     uLCD.line(12, 13, 15, 13, color);
00315     uLCD.line(17, 13, 22, 13, color);
00316     uLCD.line(16, 14, 21, 14, color);
00317     uLCD.line(15, 15, 18, 15, color);
00318     uLCD.line(14, 16, 17, 16, color);
00319     uLCD.line(19, 16, 21, 16, color);
00320     uLCD.line(13, 17, 16, 17, color);
00321     uLCD.line(18, 17, 22, 17, color);
00322     uLCD.line(11, 18, 15, 18, color);
00323     uLCD.line(19, 18, 23, 18, color);
00324     uLCD.line(11, 19, 14, 19, color);
00325     uLCD.line(20, 19, 24, 19, color);
00326     uLCD.line(9, 20, 13, 20, color);
00327     uLCD.line(21, 20, 25, 20, color);
00328     uLCD.line(10, 21, 12, 21, color);
00329     uLCD.line(22, 21, 25, 21, color);
00330 }
00331 
00332 void drawMenu2(int color) {
00333     uLCD.line(44, 5, 45, 5, color);
00334     uLCD.line(53, 5, 54, 5, color);
00335     uLCD.line(45, 6, 46, 6, color);
00336     uLCD.line(52, 6, 53, 6, color);
00337     uLCD.line(45, 7, 46, 7, color);
00338     uLCD.line(52, 7, 53, 7, color);
00339     uLCD.line(47, 8, 51, 8, color);
00340     uLCD.line(42, 9, 43, 9, color);
00341     uLCD.line(45, 9, 50, 9, color);
00342     uLCD.line(51, 9, 53, 9, color);
00343     uLCD.line(55, 9, 56, 9, color);
00344     uLCD.line(45, 10, 51, 10, color);
00345     uLCD.line(52, 10, 53, 10, color);
00346     uLCD.line(44, 11, 52, 11, color);
00347     uLCD.line(53, 11, 54, 11, color);
00348     uLCD.line(44, 12, 52, 12, color);
00349     uLCD.line(53, 12, 54, 12, color);
00350     uLCD.line(40, 13, 43, 13, color);
00351     uLCD.line(44, 13, 54, 13, color);
00352     uLCD.line(55, 13, 58, 13, color);
00353     uLCD.line(44, 14, 54, 14, color);
00354     uLCD.line(45, 15, 53, 15, color);
00355     uLCD.line(43, 16, 44, 16, color);
00356     uLCD.line(45, 16, 53, 16, color);
00357     uLCD.line(54, 16, 55, 16, color);
00358     uLCD.line(41, 17, 42, 17, color);
00359     uLCD.line(46, 17, 52, 17, color);
00360     uLCD.line(56, 17, 57, 17, color);
00361     uLCD.line(46, 18, 52, 18, color);
00362     uLCD.line(47, 19, 51, 19, color);
00363     uLCD.line(47, 21, 51, 21, color);
00364     uLCD.line(47, 22, 51, 22, color);
00365 }
00366 
00367 void drawMenu3(int color) {
00368     uLCD.line(73, 4, 74, 4, color);
00369     uLCD.line(72, 5, 76, 5, color);
00370     uLCD.line(71, 6, 77, 6, color);
00371     uLCD.line(71, 7, 78, 7, color);
00372     uLCD.line(72, 8, 79, 8, color);
00373     uLCD.line(73, 9, 79, 9, color);
00374     uLCD.line(74, 10, 80, 10, color);
00375     uLCD.line(75, 11, 81, 11, color);
00376     uLCD.line(76, 12, 82, 12, color);
00377     uLCD.line(77, 13, 83, 13, color);
00378     uLCD.line(79, 14, 83, 14, color);
00379     uLCD.line(80, 15, 84, 15, color);
00380     uLCD.line(82, 16, 85, 16, color);
00381     uLCD.line(83, 17, 86, 17, color);
00382     uLCD.line(84, 18, 86, 18, color);
00383     uLCD.line(85, 19, 87, 19, color);
00384     uLCD.line(74, 20, 76, 20, color);
00385     uLCD.line(86, 20, 88, 20, color);
00386     uLCD.line(73, 21, 76, 21, color);
00387     uLCD.line(87, 21, 89, 21, color);
00388     uLCD.line(73, 22, 76, 22, color);
00389     uLCD.line(88, 22, 90, 22, color);
00390 }
00391 
00392 void drawMenu4(int color) {
00393     uLCD.line(106, 4, 110, 4, color);
00394     uLCD.line(104, 5, 106, 5, color);
00395     uLCD.line(110, 5, 112, 5, color);
00396     uLCD.line(104, 6, 105, 6, color);
00397     uLCD.line(111, 6, 113, 6, color);
00398     uLCD.line(103, 7, 104, 7, color);
00399     uLCD.line(112, 7, 114, 7, color);
00400     uLCD.line(103, 8, 104, 8, color);
00401     uLCD.line(113, 8, 115, 8, color);
00402     uLCD.line(103, 9, 104, 9, color);
00403     uLCD.line(114, 9, 116, 9, color);
00404     uLCD.line(103, 10, 104, 10, color);
00405     uLCD.line(115, 10, 117, 10, color);
00406     uLCD.line(104, 11, 105, 11, color);
00407     uLCD.line(116, 11, 118, 11, color);
00408     uLCD.line(104, 12, 106, 12, color);
00409     uLCD.line(115, 12, 119, 12, color);
00410     uLCD.line(105, 13, 107, 13, color);
00411     uLCD.line(114, 13, 120, 13, color);
00412     uLCD.line(106, 14, 108, 14, color);
00413     uLCD.line(113, 14, 121, 14, color);
00414     uLCD.line(107, 15, 109, 15, color);
00415     uLCD.line(112, 15, 122, 15, color);
00416     uLCD.line(108, 16, 109, 16, color);
00417     uLCD.line(111, 16, 122, 16, color);
00418     uLCD.line(109, 17, 122, 17, color);
00419     uLCD.line(110, 18, 122, 18, color);
00420     uLCD.line(111, 19, 122, 19, color);
00421     uLCD.line(112, 20, 122, 20, color);
00422     uLCD.line(113, 21, 122, 21, color);
00423     uLCD.line(114, 22, 121, 22, color);
00424 }
00425 
00426 void drawMenu5(int color) {
00427     uLCD.line(20, 107, 24, 107, color);
00428     uLCD.line(19, 108, 25, 108, color);
00429     uLCD.line(18, 109, 25, 109, color);
00430     uLCD.line(18, 110, 25, 110, color);
00431     uLCD.line(17, 111, 25, 111, color);
00432     uLCD.line(17, 112, 24, 112, color);
00433     uLCD.line(17, 113, 24, 113, color);
00434     uLCD.line(18, 114, 23, 114, color);
00435     uLCD.line(11, 115, 18, 115, color);
00436     uLCD.line(21, 115, 22, 115, color);
00437     uLCD.line(10, 116, 11, 116, color);
00438     uLCD.line(18, 116, 21, 116, color);
00439     uLCD.line(9, 117, 11, 117, color);
00440     uLCD.line(17, 117, 21, 117, color);
00441     uLCD.line(11, 118, 21, 118, color);
00442     uLCD.line(10, 119, 11, 119, color);
00443     uLCD.line(16, 119, 20, 119, color);
00444     uLCD.line(11, 120, 20, 120, color);
00445     uLCD.line(12, 121, 19, 121, color);
00446     uLCD.line(12, 122, 13, 122, color);
00447     uLCD.line(14, 122, 19, 122, color);
00448     uLCD.line(12, 123, 19, 123, color);
00449     uLCD.line(12, 124, 19, 124, color);
00450 }
00451 
00452 void drawMenu6(int color) {
00453     uLCD.line(46, 107, 50, 107, color);
00454     uLCD.line(46, 108, 51, 108, color);
00455     uLCD.line(45, 109, 51, 109, color);
00456     uLCD.line(46, 110, 51, 110, color);
00457     uLCD.line(48, 111, 49, 111, color);
00458     uLCD.line(46, 113, 53, 113, color);
00459     uLCD.line(46, 114, 53, 114, color);
00460     uLCD.line(46, 115, 51, 115, color);
00461     uLCD.line(46, 116, 51, 116, color);
00462     uLCD.line(46, 117, 51, 117, color);
00463     uLCD.line(46, 118, 51, 118, color);
00464     uLCD.line(46, 119, 51, 119, color);
00465     uLCD.line(46, 120, 51, 120, color);
00466     uLCD.line(46, 121, 51, 121, color);
00467     uLCD.line(46, 122, 51, 122, color);
00468     uLCD.line(44, 123, 53, 123, color);
00469     uLCD.line(44, 124, 53, 124, color);
00470 }
00471 
00472 void drawMenu7(int color) {
00473     uLCD.line(89, 108, 90, 108, color);
00474     uLCD.line(89, 109, 90, 109, color);
00475     uLCD.line(77, 110, 81, 110, color);
00476     uLCD.line(85, 110, 88, 110, color);
00477     uLCD.line(89, 110, 90, 110, color);
00478     uLCD.line(76, 111, 77, 111, color);
00479     uLCD.line(83, 111, 88, 111, color);
00480     uLCD.line(89, 111, 90, 111, color);
00481     uLCD.line(76, 112, 77, 112, color);
00482     uLCD.line(80, 112, 88, 112, color);
00483     uLCD.line(89, 112, 90, 112, color);
00484     uLCD.line(76, 113, 88, 113, color);
00485     uLCD.line(89, 113, 90, 113, color);
00486     uLCD.line(71, 114, 73, 114, color);
00487     uLCD.line(74, 114, 88, 114, color);
00488     uLCD.line(89, 114, 90, 114, color);
00489     uLCD.line(71, 115, 73, 115, color);
00490     uLCD.line(74, 115, 88, 115, color);
00491     uLCD.line(89, 115, 90, 115, color);
00492     uLCD.line(71, 116, 73, 116, color);
00493     uLCD.line(74, 116, 88, 116, color);
00494     uLCD.line(89, 116, 90, 116, color);
00495     uLCD.line(71, 117, 73, 117, color);
00496     uLCD.line(74, 117, 88, 117, color);
00497     uLCD.line(89, 117, 90, 117, color);
00498     uLCD.line(72, 118, 73, 118, color);
00499     uLCD.line(75, 118, 88, 118, color);
00500     uLCD.line(89, 118, 90, 118, color);
00501     uLCD.line(78, 119, 88, 119, color);
00502     uLCD.line(89, 119, 90, 119, color);
00503     uLCD.line(81, 120, 88, 120, color);
00504     uLCD.line(89, 120, 90, 120, color);
00505     uLCD.line(85, 121, 88, 121, color);
00506     uLCD.line(89, 121, 90, 121, color);
00507     uLCD.line(89, 122, 90, 122, color);
00508     uLCD.line(89, 123, 90, 123, color);
00509 }
00510 
00511 void drawMenu8(int color) {
00512     uLCD.line(103, 108, 106, 108, color);
00513     uLCD.line(112, 108, 114, 108, color);
00514     uLCD.line(103, 109, 107, 109, color);
00515     uLCD.line(112, 109, 115, 109, color);
00516     uLCD.line(103, 110, 108, 110, color);
00517     uLCD.line(112, 110, 117, 110, color);
00518     uLCD.line(103, 111, 110, 111, color);
00519     uLCD.line(112, 111, 118, 111, color);
00520     uLCD.line(103, 112, 111, 112, color);
00521     uLCD.line(112, 112, 119, 112, color);
00522     uLCD.line(103, 113, 121, 113, color);
00523     uLCD.line(103, 114, 122, 114, color);
00524     uLCD.line(103, 115, 122, 115, color);
00525     uLCD.line(103, 116, 122, 116, color);
00526     uLCD.line(103, 117, 122, 117, color);
00527     uLCD.line(103, 118, 120, 118, color);
00528     uLCD.line(103, 119, 111, 119, color);
00529     uLCD.line(112, 119, 119, 119, color);
00530     uLCD.line(103, 120, 110, 120, color);
00531     uLCD.line(112, 120, 118, 120, color);
00532     uLCD.line(103, 121, 108, 121, color);
00533     uLCD.line(112, 121, 117, 121, color);
00534     uLCD.line(103, 122, 107, 122, color);
00535     uLCD.line(112, 122, 115, 122, color);
00536     uLCD.line(103, 123, 106, 123, color);
00537     uLCD.line(112, 123, 114, 123, color);
00538 }
00539 
00540 void drawUpperFrame() {
00541     uLCD.filled_rectangle(0, 0, 127, 25, GREEN);
00542 }
00543 
00544 void drawMiddleFrame() {
00545     uLCD.filled_rectangle(0, 26, 127, 127-25+1, WHITE);
00546 }
00547 
00548 void drawLowerFrame() {
00549     uLCD.filled_rectangle(0, 127-25, 127, 127, GREEN);
00550 }
00551 
00552 void drawUpperMenu() {
00553     drawMenu1(0xA0A0A0);
00554     drawMenu2(0xA0A0A0);
00555     drawMenu3(0xA0A0A0);
00556     drawMenu4(0xA0A0A0);
00557 }
00558 
00559 void drawLowerMenu() {
00560     drawMenu5(0xA0A0A0);
00561     drawMenu6(0xA0A0A0);
00562     drawMenu7(0xA0A0A0);
00563     drawMenu8(0xA0A0A0);
00564 }
00565 
00566 void drawBackground() {
00567     drawUpperFrame();
00568     drawMiddleFrame();
00569     drawLowerFrame();
00570     drawUpperMenu();
00571     drawLowerMenu();
00572 }
00573 
00574 void clearMiddle() {
00575     uLCD.filled_rectangle(0, 25, 127, 127-25+1, WHITE);
00576 }
00577 
00578 void turnOffLight() {
00579     uLCD.filled_rectangle(0, 25, 127, 127-25+1, BLACK);
00580 }
00581 
00582 void drawArrow1(int color) {
00583     uLCD.line(18, 39, 20, 39, color);
00584     uLCD.line(18, 40, 21, 40, color);
00585     uLCD.line(18, 41, 22, 41, color);
00586     uLCD.line(19, 42, 23, 42, color);
00587     uLCD.line(20, 43, 24, 43, color);
00588     uLCD.line(9, 44, 25, 44, color);
00589     uLCD.line(8, 45, 25, 45, color);
00590     uLCD.line(8, 46, 25, 46, color);
00591     uLCD.line(9, 47, 25, 47, color);
00592     uLCD.line(20, 48, 24, 48, color);
00593     uLCD.line(19, 49, 23, 49, color);
00594     uLCD.line(18, 50, 22, 50, color);
00595     uLCD.line(18, 51, 21, 51, color);
00596     uLCD.line(18, 52, 20, 52, color);
00597 }
00598 
00599 void drawArrow2(int color) {
00600     uLCD.line(18, 72, 20, 72, color);
00601     uLCD.line(18, 73, 21, 73, color);
00602     uLCD.line(18, 74, 22, 74, color);
00603     uLCD.line(19, 75, 23, 75, color);
00604     uLCD.line(20, 76, 24, 76, color);
00605     uLCD.line(9, 77, 25, 77, color);
00606     uLCD.line(8, 78, 25, 78, color);
00607     uLCD.line(8, 79, 25, 79, color);
00608     uLCD.line(9, 80, 25, 80, color);
00609     uLCD.line(20, 81, 24, 81, color);
00610     uLCD.line(19, 82, 23, 82, color);
00611     uLCD.line(18, 83, 22, 83, color);
00612     uLCD.line(18, 84, 21, 84, color);
00613     uLCD.line(18, 85, 20, 85, color);
00614 }
00615 
00616 void displayOption2() {
00617     clearMiddle();
00618     uLCD.text_width(4); // 4 times
00619     uLCD.text_height(4);
00620     
00621     uLCD.locate(1, 1);
00622     uLCD.printf("ON");
00623     uLCD.locate(1, 2);
00624     uLCD.printf("OFF");
00625     
00626     if (arrow_state == 0) {
00627         drawArrow2(WHITE);
00628         drawArrow1(BLACK);
00629     } else {
00630         drawArrow1(WHITE);
00631         drawArrow2(BLACK);
00632     }
00633 }
00634 
00635 void drawRock(int color, int x) {
00636     uLCD.line(33, 35+x, 34, 35+x, color);
00637 uLCD.line(31, 36+x, 35, 36+x, color);
00638 uLCD.line(31, 37+x, 35, 37+x, color);
00639 uLCD.line(33, 38+x, 35, 38+x, color);
00640 uLCD.line(28, 39+x, 32, 39+x, color);
00641 uLCD.line(36, 39+x, 39, 39+x, color);
00642 uLCD.line(27, 40+x, 34, 40+x, color);
00643 uLCD.line(36, 40+x, 39, 40+x, color);
00644 uLCD.line(26, 41+x, 35, 41+x, color);
00645 uLCD.line(37, 41+x, 39, 41+x, color);
00646 uLCD.line(25, 42+x, 31, 42+x, color);
00647 uLCD.line(32, 42+x, 36, 42+x, color);
00648 uLCD.line(24, 43+x, 30, 43+x, color);
00649 uLCD.line(33, 43+x, 37, 43+x, color);
00650 uLCD.line(39, 43+x, 41, 43+x, color);
00651 uLCD.line(24, 44+x, 30, 44+x, color);
00652 uLCD.line(34, 44+x, 37, 44+x, color);
00653 uLCD.line(38, 44+x, 42, 44+x, color);
00654 uLCD.line(24, 45+x, 30, 45+x, color);
00655 uLCD.line(32, 45+x, 33, 45+x, color);
00656 uLCD.line(38, 45+x, 42, 45+x, color);
00657 uLCD.line(24, 46+x, 30, 46+x, color);
00658 uLCD.line(36, 46+x, 40, 46+x, color);
00659 uLCD.line(24, 47+x, 31, 47+x, color);
00660 uLCD.line(32, 47+x, 33, 47+x, color);
00661 uLCD.line(35, 47+x, 39, 47+x, color);
00662 uLCD.line(24, 48+x, 30, 48+x, color);
00663 uLCD.line(32, 48+x, 34, 48+x, color);
00664 uLCD.line(35, 48+x, 38, 48+x, color);
00665 uLCD.line(40, 48+x, 43, 48+x, color);
00666 uLCD.line(23, 49+x, 30, 49+x, color);
00667 uLCD.line(32, 49+x, 34, 49+x, color);
00668 uLCD.line(39, 49+x, 43, 49+x, color);
00669 uLCD.line(22, 50+x, 30, 50+x, color);
00670 uLCD.line(31, 50+x, 35, 50+x, color);
00671 uLCD.line(37, 50+x, 42, 50+x, color);
00672 uLCD.line(21, 51+x, 29, 51+x, color);
00673 uLCD.line(31, 51+x, 35, 51+x, color);
00674 uLCD.line(37, 51+x, 41, 51+x, color);
00675 uLCD.line(21, 52+x, 28, 52+x, color);
00676 uLCD.line(30, 52+x, 36, 52+x, color);
00677 uLCD.line(37, 52+x, 40, 52+x, color);
00678 uLCD.line(22, 53+x, 36, 53+x, color);
00679 uLCD.line(22, 54+x, 37, 54+x, color);
00680 uLCD.line(23, 55+x, 38, 55+x, color);
00681 uLCD.line(24, 56+x, 37, 56+x, color);
00682 uLCD.line(24, 57+x, 35, 57+x, color);
00683 uLCD.line(25, 58+x, 29, 58+x, color);
00684 uLCD.line(27, 59+x, 28, 59+x, color);
00685 }
00686 void drawPaper(int color, int x) {
00687     uLCD.line(67, 35+x, 68, 35+x, color);
00688 uLCD.line(66, 36+x, 69, 36+x, color);
00689 uLCD.line(65, 37+x, 68, 37+x, color);
00690 uLCD.line(71, 37+x, 73, 37+x, color);
00691 uLCD.line(64, 38+x, 67, 38+x, color);
00692 uLCD.line(70, 38+x, 73, 38+x, color);
00693 uLCD.line(57, 39+x, 58, 39+x, color);
00694 uLCD.line(64, 39+x, 67, 39+x, color);
00695 uLCD.line(69, 39+x, 72, 39+x, color);
00696 uLCD.line(56, 40+x, 58, 40+x, color);
00697 uLCD.line(63, 40+x, 66, 40+x, color);
00698 uLCD.line(68, 40+x, 71, 40+x, color);
00699 uLCD.line(74, 40+x, 75, 40+x, color);
00700 uLCD.line(55, 41+x, 59, 41+x, color);
00701 uLCD.line(62, 41+x, 65, 41+x, color);
00702 uLCD.line(67, 41+x, 70, 41+x, color);
00703 uLCD.line(73, 41+x, 75, 41+x, color);
00704 uLCD.line(55, 42+x, 58, 42+x, color);
00705 uLCD.line(61, 42+x, 64, 42+x, color);
00706 uLCD.line(66, 42+x, 69, 42+x, color);
00707 uLCD.line(72, 42+x, 75, 42+x, color);
00708 uLCD.line(54, 43+x, 58, 43+x, color);
00709 uLCD.line(60, 43+x, 63, 43+x, color);
00710 uLCD.line(65, 43+x, 68, 43+x, color);
00711 uLCD.line(71, 43+x, 74, 43+x, color);
00712 uLCD.line(54, 44+x, 57, 44+x, color);
00713 uLCD.line(59, 44+x, 63, 44+x, color);
00714 uLCD.line(64, 44+x, 68, 44+x, color);
00715 uLCD.line(70, 44+x, 73, 44+x, color);
00716 uLCD.line(53, 45+x, 57, 45+x, color);
00717 uLCD.line(58, 45+x, 67, 45+x, color);
00718 uLCD.line(69, 45+x, 72, 45+x, color);
00719 uLCD.line(75, 45+x, 76, 45+x, color);
00720 uLCD.line(53, 46+x, 57, 46+x, color);
00721 uLCD.line(59, 46+x, 62, 46+x, color);
00722 uLCD.line(63, 46+x, 66, 46+x, color);
00723 uLCD.line(68, 46+x, 71, 46+x, color);
00724 uLCD.line(73, 46+x, 76, 46+x, color);
00725 uLCD.line(53, 47+x, 58, 47+x, color);
00726 uLCD.line(59, 47+x, 62, 47+x, color);
00727 uLCD.line(63, 47+x, 70, 47+x, color);
00728 uLCD.line(72, 47+x, 75, 47+x, color);
00729 uLCD.line(53, 48+x, 58, 48+x, color);
00730 uLCD.line(59, 48+x, 62, 48+x, color);
00731 uLCD.line(64, 48+x, 69, 48+x, color);
00732 uLCD.line(71, 48+x, 74, 48+x, color);
00733 uLCD.line(53, 49+x, 58, 49+x, color);
00734 uLCD.line(59, 49+x, 63, 49+x, color);
00735 uLCD.line(64, 49+x, 68, 49+x, color);
00736 uLCD.line(70, 49+x, 73, 49+x, color);
00737 uLCD.line(53, 50+x, 58, 50+x, color);
00738 uLCD.line(59, 50+x, 63, 50+x, color);
00739 uLCD.line(65, 50+x, 68, 50+x, color);
00740 uLCD.line(69, 50+x, 72, 50+x, color);
00741 uLCD.line(53, 51+x, 64, 51+x, color);
00742 uLCD.line(66, 51+x, 71, 51+x, color);
00743 uLCD.line(53, 52+x, 70, 52+x, color);
00744 uLCD.line(53, 53+x, 69, 53+x, color);
00745 uLCD.line(53, 54+x, 68, 54+x, color);
00746 uLCD.line(52, 55+x, 67, 55+x, color);
00747 uLCD.line(52, 56+x, 66, 56+x, color);
00748 uLCD.line(53, 57+x, 64, 57+x, color);
00749 uLCD.line(54, 58+x, 63, 58+x, color);
00750 uLCD.line(55, 59+x, 59, 59+x, color);
00751 uLCD.line(57, 60+x, 58, 60+x, color);
00752 }
00753 
00754 void drawScissors(int color, int x) {
00755 uLCD.line(100, 34+x, 101, 34+x, color);
00756 uLCD.line(99, 35+x, 102, 35+x, color);
00757 uLCD.line(99, 36+x, 101, 36+x, color);
00758 uLCD.line(98, 37+x, 101, 37+x, color);
00759 uLCD.line(97, 38+x, 100, 38+x, color);
00760 uLCD.line(97, 39+x, 100, 39+x, color);
00761 uLCD.line(96, 40+x, 99, 40+x, color);
00762 uLCD.line(105, 40+x, 109, 40+x, color);
00763 uLCD.line(95, 41+x, 99, 41+x, color);
00764 uLCD.line(104, 41+x, 108, 41+x, color);
00765 uLCD.line(95, 42+x, 98, 42+x, color);
00766 uLCD.line(102, 42+x, 107, 42+x, color);
00767 uLCD.line(101, 43+x, 105, 43+x, color);
00768 uLCD.line(99, 44+x, 103, 44+x, color);
00769 uLCD.line(92, 45+x, 98, 45+x, color);
00770 uLCD.line(100, 45+x, 102, 45+x, color);
00771 uLCD.line(90, 46+x, 99, 46+x, color);
00772 uLCD.line(89, 47+x, 94, 47+x, color);
00773 uLCD.line(97, 47+x, 99, 47+x, color);
00774 uLCD.line(88, 48+x, 93, 48+x, color);
00775 uLCD.line(95, 48+x, 96, 48+x, color);
00776 uLCD.line(88, 49+x, 91, 49+x, color);
00777 uLCD.line(93, 49+x, 96, 49+x, color);
00778 uLCD.line(99, 49+x, 102, 49+x, color);
00779 uLCD.line(87, 50+x, 91, 50+x, color);
00780 uLCD.line(93, 50+x, 94, 50+x, color);
00781 uLCD.line(97, 50+x, 102, 50+x, color);
00782 uLCD.line(87, 51+x, 91, 51+x, color);
00783 uLCD.line(92, 51+x, 93, 51+x, color);
00784 uLCD.line(95, 51+x, 101, 51+x, color);
00785 uLCD.line(87, 52+x, 91, 52+x, color);
00786 uLCD.line(92, 52+x, 93, 52+x, color);
00787 uLCD.line(95, 52+x, 98, 52+x, color);
00788 uLCD.line(86, 53+x, 91, 53+x, color);
00789 uLCD.line(92, 53+x, 93, 53+x, color);
00790 uLCD.line(99, 53+x, 101, 53+x, color);
00791 uLCD.line(86, 54+x, 90, 54+x, color);
00792 uLCD.line(92, 54+x, 95, 54+x, color);
00793 uLCD.line(97, 54+x, 102, 54+x, color);
00794 uLCD.line(85, 55+x, 94, 55+x, color);
00795 uLCD.line(96, 55+x, 100, 55+x, color);
00796 uLCD.line(85, 56+x, 95, 56+x, color);
00797 uLCD.line(96, 56+x, 97, 56+x, color);
00798 uLCD.line(86, 57+x, 95, 57+x, color);
00799 uLCD.line(86, 58+x, 96, 58+x, color);
00800 uLCD.line(88, 59+x, 94, 59+x, color);
00801 uLCD.line(89, 60+x, 91, 60+x, color);
00802 }
00803 
00804 void drawEneRockFrame() {
00805     uLCD.rectangle(17, 28+2, 45, 65-2, BLACK);
00806 }
00807 
00808 void drawEnePaperFrame() {
00809     uLCD.rectangle(17+32, 28+2, 45+32, 65-2, BLACK);
00810 }
00811 
00812 void drawEneSciFrame() {
00813     uLCD.rectangle(17+32*2+1, 28+2, 45+32*2+1, 65-2, BLACK);
00814 }
00815 
00816 void drawMyRockFrame() {
00817     uLCD.rectangle(17, 28+32+4, 45, 65+32-2, BLACK);
00818 }
00819 
00820 void drawMyPaperFrame() {
00821     uLCD.rectangle(17+32, 28+32+4, 45+32, 65+32-2, BLACK);
00822 }
00823 
00824 void drawMySciFrame() {
00825     uLCD.rectangle(17+32*2+1, 28+32+4, 45+32*2+1, 65+32-2, BLACK);
00826 }
00827 
00828 void displayOption3() {
00829     clearMiddle();
00830     drawRock(BLACK, 0);
00831     drawPaper(BLACK, 0);
00832     drawScissors(BLACK, 0);
00833     drawRock(BLACK, 32);
00834     drawPaper(BLACK, 32);
00835     drawScissors(BLACK, 32);
00836 }
00837 
00838 
00839 // draw end
00840 
00841 class Pet {
00842 public:
00843     Pet() {
00844         setAge(0);
00845         setWeight(5);
00846         setDiscipline(0);
00847         setHungry(0);
00848         setHappy(0);
00849     }
00850     
00851     void increaseAge() {
00852         age = age + 1;
00853     }
00854     
00855     void setAge(int _age) {
00856         age = _age;
00857     }
00858     int getAge() {
00859         return age;
00860     }
00861     
00862     void setWeight(int _weight) {
00863         weight = _weight;
00864     }
00865     int getWeight() {
00866         return weight;
00867     }
00868     
00869     void increaseDiscipline() {
00870         if (discipline < 4) {
00871             discipline = discipline + 1;
00872         }
00873     }
00874     void decreaseDiscipline() {
00875         if (discipline > 0) {
00876             discipline = discipline - 1;
00877         }
00878     }
00879     void setDiscipline(int _discipline) {
00880         discipline = _discipline;
00881     }
00882     int getDiscipline() {
00883         return discipline;
00884     }
00885     
00886     void increaseHungry() {
00887         if (hungry < 4) {
00888             hungry = hungry + 1;
00889         }
00890     }
00891     void decreaseHungry() {
00892         if (hungry > 0) {
00893             hungry = hungry - 1;
00894         }
00895     }
00896     void setHungry(int _hungry) {
00897         hungry = _hungry;
00898     }
00899     int getHungry() {
00900         return hungry;
00901     }
00902     
00903     
00904     void increaseHappy() {
00905         if (happy < 4) {
00906             happy = happy + 1;
00907         }
00908     }
00909     void decreaseHappy() {
00910         if (happy > 0) {
00911             happy = happy - 1;
00912         }
00913     }
00914     void setHappy(int _happy) {
00915         happy = _happy;
00916     }
00917     int getHappy() {
00918         return happy;
00919     }
00920     
00921 private:
00922     int age;
00923     int weight;
00924     int discipline;
00925     int hungry;
00926     int happy;
00927 };
00928 
00929 
00930 void thread1(void const *args)
00931 {
00932     wave_file=fopen("/sd/song.wav","r");
00933     if(wave_file == NULL) {
00934         error("Could not open file for write\n");
00935     }
00936     waver.play(wave_file);
00937     Thread::wait(500); // wait 0.5s
00938     fclose(wave_file);
00939 }
00940 
00941 
00942 
00943 Pet pet;
00944 
00945 
00946 void displayOption6() {
00947     clearMiddle();
00948     
00949     printf("%d\n\r", info_state);
00950     
00951     if (info_state%4 == 0) {
00952         uLCD.text_width(3); // 4 times
00953         uLCD.text_height(3);
00954         uLCD.locate(0, 1);
00955         uLCD.printf("AGE: %d\n", pet.getAge());
00956         uLCD.locate(0, 2);
00957         uLCD.printf("W:   %d\n", pet.getWeight());
00958     } else if (info_state%4 == 1) { //discipline
00959         uLCD.text_width(3); // 4 times
00960         uLCD.text_height(3);
00961         uLCD.locate(0, 1);
00962         uLCD.printf("Discip");
00963         if (pet.getDiscipline() == 0) {
00964             uLCD.circle(16, 72, 10, BLACK);
00965             uLCD.circle(16+32, 72, 10, BLACK);
00966             uLCD.circle(16+32*2, 72, 10, BLACK);
00967             uLCD.circle(16+32*3, 72, 10, BLACK);
00968         } else if (pet.getDiscipline() == 1) {
00969             uLCD.filled_circle(16, 72, 10, RED);
00970             uLCD.circle(16+32, 72, 10, BLACK);
00971             uLCD.circle(16+32*2, 72, 10, BLACK);
00972             uLCD.circle(16+32*3, 72, 10, BLACK);
00973         } else if (pet.getDiscipline() == 2) {
00974             uLCD.filled_circle(16, 72, 10, RED);
00975             uLCD.filled_circle(16+32, 72, 10, RED);
00976             uLCD.circle(16+32*2, 72, 10, BLACK);
00977             uLCD.circle(16+32*3, 72, 10, BLACK);
00978         } else if (pet.getDiscipline() == 3) {
00979             uLCD.filled_circle(16, 72, 10, RED);
00980             uLCD.filled_circle(16+32, 72, 10, RED);
00981             uLCD.filled_circle(16+32*2, 72, 10, RED);
00982             uLCD.circle(16+32*3, 72, 10, BLACK);
00983         } else if (pet.getDiscipline() == 4) {
00984             uLCD.filled_circle(16, 72, 10, RED);
00985             uLCD.filled_circle(16+32, 72, 10, RED);
00986             uLCD.filled_circle(16+32*2, 72, 10, RED);
00987             uLCD.filled_circle(16+32*3, 72, 10, RED);
00988         }
00989     } else if (info_state%4 == 2) { //hungry
00990         uLCD.text_width(3); // 4 times
00991         uLCD.text_height(3);
00992         uLCD.locate(0, 1);
00993         uLCD.printf("Hungry");
00994         if (pet.getHungry() == 0) {
00995             uLCD.circle(16, 72, 10, BLACK);
00996             uLCD.circle(16+32, 72, 10, BLACK);
00997             uLCD.circle(16+32*2, 72, 10, BLACK);
00998             uLCD.circle(16+32*3, 72, 10, BLACK);
00999         } else if (pet.getHungry() == 1) {
01000             uLCD.filled_circle(16, 72, 10, RED);
01001             uLCD.circle(16+32, 72, 10, BLACK);
01002             uLCD.circle(16+32*2, 72, 10, BLACK);
01003             uLCD.circle(16+32*3, 72, 10, BLACK);
01004         } else if (pet.getHungry() == 2) {
01005             uLCD.filled_circle(16, 72, 10, RED);
01006             uLCD.filled_circle(16+32, 72, 10, RED);
01007             uLCD.circle(16+32*2, 72, 10, BLACK);
01008             uLCD.circle(16+32*3, 72, 10, BLACK);
01009         } else if (pet.getHungry() == 3) {
01010             uLCD.filled_circle(16, 72, 10, RED);
01011             uLCD.filled_circle(16+32, 72, 10, RED);
01012             uLCD.filled_circle(16+32*2, 72, 10, RED);
01013             uLCD.circle(16+32*3, 72, 10, BLACK);
01014         } else if (pet.getHungry() == 4) {
01015             uLCD.filled_circle(16, 72, 10, RED);
01016             uLCD.filled_circle(16+32, 72, 10, RED);
01017             uLCD.filled_circle(16+32*2, 72, 10, RED);
01018             uLCD.filled_circle(16+32*3, 72, 10, RED);
01019         }
01020     } else if (info_state%4 == 3) { //happy
01021         uLCD.text_width(3); // 4 times
01022         uLCD.text_height(3);
01023         uLCD.locate(0, 1);
01024         uLCD.printf("Happy");
01025         if (pet.getHappy() == 0) {
01026             uLCD.circle(16, 72, 10, BLACK);
01027             uLCD.circle(16+32, 72, 10, BLACK);
01028             uLCD.circle(16+32*2, 72, 10, BLACK);
01029             uLCD.circle(16+32*3, 72, 10, BLACK);
01030         } else if (pet.getHappy() == 1) {
01031             uLCD.filled_circle(16, 72, 10, RED);
01032             uLCD.circle(16+32, 72, 10, BLACK);
01033             uLCD.circle(16+32*2, 72, 10, BLACK);
01034             uLCD.circle(16+32*3, 72, 10, BLACK);
01035         } else if (pet.getHappy() == 2) {
01036             uLCD.filled_circle(16, 72, 10, RED);
01037             uLCD.filled_circle(16+32, 72, 10, RED);
01038             uLCD.circle(16+32*2, 72, 10, BLACK);
01039             uLCD.circle(16+32*3, 72, 10, BLACK);
01040         } else if (pet.getHappy() == 3) {
01041             uLCD.filled_circle(16, 72, 10, RED);
01042             uLCD.filled_circle(16+32, 72, 10, RED);
01043             uLCD.filled_circle(16+32*2, 72, 10, RED);
01044             uLCD.circle(16+32*3, 72, 10, BLACK);
01045         } else if (pet.getHappy() == 4) {
01046             uLCD.filled_circle(16, 72, 10, RED);
01047             uLCD.filled_circle(16+32, 72, 10, RED);
01048             uLCD.filled_circle(16+32*2, 72, 10, RED);
01049             uLCD.filled_circle(16+32*3, 72, 10, RED);
01050         }
01051     }
01052 }
01053 
01054 
01055 
01056 
01057 int main() {
01058     
01059     Thread t1(thread1);
01060     
01061     bool fired = 0;
01062     
01063     uLCD.baudrate(1500000);
01064     uLCD.textbackground_color(WHITE);
01065     uLCD.color(BLACK);
01066     
01067     
01068     int getpositionx = 48;
01069     int getpositiony = 70;
01070     
01071 
01072     
01073 
01074     
01075     Thread::wait(100);
01076     
01077     drawBackground();
01078     
01079     menu_state = 0;
01080     arrow_state = 0;
01081     light_state = 0;
01082     info_state = 0;
01083     bool sick_state = 0;
01084     bool poop_state = 0;
01085     bool sleep_state = 0;
01086     
01087     int rand_sick;
01088     int rand_sleep;
01089     
01090     int token = 0;
01091 
01092     
01093     //monster1.draw();
01094     
01095     int poop_count = 0;
01096     
01097     while(1) {
01098         
01099         if (light_state == 1) { // light off
01100                     
01101         } else {
01102             if (sleep_state == 1) {
01103                 uLCD.BLIT(getpositionx, getpositiony, MONSTER_WIDTH, MONSTER_HEIGHT, MONSTER1_SLEEP1);
01104                 if (poop_state == 1) {
01105                     uLCD.BLIT(100, 85, 11, 8, POOP);
01106                 }
01107             } else { 
01108                 if (sick_state == 1) {                   
01109                     
01110                     uLCD.BLIT(getpositionx, getpositiony, MONSTER_WIDTH, MONSTER_HEIGHT, MONSTER1_SICK1);      
01111                     if (poop_state == 1) {
01112                         uLCD.BLIT(100, 85, 11, 8, POOP);
01113                     }
01114                 } else {
01115                     if (token == 1) {
01116                         uLCD.BLIT(getpositionx, getpositiony, MONSTER_WIDTH, MONSTER_HEIGHT, MONSTER1_1);
01117                         if (poop_state == 1) {
01118                             uLCD.BLIT(100, 85, 11, 8, POOP);
01119                         }
01120                     } else if (token == 100000) {
01121                         uLCD.BLIT(getpositionx, getpositiony, MONSTER_WIDTH, MONSTER_HEIGHT, MONSTER1_2);
01122                         if (poop_state == 1) {
01123                             uLCD.BLIT(100, 85, 11, 8, POOP);
01124                         }
01125                     } else if (token == 200000) {
01126                         token = 0;   
01127                         // sleep
01128                         rand_sleep = rand()%10000 + 1;
01129                         if (rand_sleep <= 10) {
01130                             sleep_state = 1;
01131                         }
01132             
01133                         // sick
01134                         rand_sick = rand()%10000 + 1;
01135                         if (poop_state == 1) {
01136                             if (rand_sick <= 50) {
01137                                 sick_state = 1;    
01138                             }
01139                         } else {
01140                             if (rand_sick <= 10) {
01141                                 sick_state = 1;    
01142                             }
01143                         }
01144                     }
01145                     token++;
01146                 }
01147             }
01148             
01149         }
01150         
01151         // poop
01152         poop_count++;
01153         if (poop_count == 10000000) {
01154             if (poop_state == 0) {
01155                 //uLCD.BLIT(90, 80, 11, 8, ERASE_POOP);
01156                 uLCD.BLIT(100, 85, 11, 8, POOP);
01157                 //poop_draw(90,80);
01158                 poop_state = 1;    
01159             } 
01160             poop_count = 0;
01161         }
01162         
01163         
01164         
01165         
01166         
01167         
01168         
01169         
01170   
01171           if (myNav.right()) { // left
01172             if (menu_state > 1) {
01173                 menu_state--;   
01174             }
01175             
01176              switch (menu_state) {
01177                 case 1: drawMenu2(0xA0A0A0);
01178                     drawMenu1(BLACK);
01179                     break;
01180                 case 2: drawMenu3(0xA0A0A0);
01181                     drawMenu2(BLACK);
01182                     break;
01183                 case 3: drawMenu4(0xA0A0A0);
01184                     drawMenu3(BLACK);
01185                     break;
01186                 case 4: drawMenu5(0xA0A0A0);
01187                     drawMenu4(BLACK);
01188                     break;
01189                 case 5: drawMenu6(0xA0A0A0);
01190                     drawMenu5(BLACK);
01191                     break;
01192                 case 6: drawMenu7(0xA0A0A0);
01193                     drawMenu6(BLACK);
01194                     break;
01195                 case 7: drawMenu8(0xA0A0A0);
01196                     drawMenu7(BLACK);
01197                     break;
01198             }
01199             Thread::wait(500);
01200             
01201         } else if (myNav.left()) { // right
01202             if (menu_state < 8) {
01203                 menu_state++;    
01204             }
01205              switch (menu_state) {
01206                 case 1: drawMenu1(BLACK);
01207                     break;
01208                 case 2: drawMenu1(0xA0A0A0);
01209                     drawMenu2(BLACK);
01210                     break;
01211                 case 3: drawMenu2(0xA0A0A0);
01212                     drawMenu3(BLACK);
01213                     break;
01214                 case 4: drawMenu3(0xA0A0A0);
01215                     drawMenu4(BLACK);
01216                     break;
01217                 case 5: drawMenu4(0xA0A0A0);
01218                     drawMenu5(BLACK);
01219                     break;
01220                 case 6: drawMenu5(0xA0A0A0);
01221                     drawMenu6(BLACK);
01222                     break;
01223                 case 7: drawMenu6(0xA0A0A0);
01224                     drawMenu7(BLACK);
01225                     break;
01226                 case 8: drawMenu7(0xA0A0A0);
01227                     drawMenu8(BLACK);
01228                     break;
01229             }
01230             Thread::wait(500);
01231             
01232             
01233         } else if (myNav.down()) { // up
01234             if (menu_state == 5) {
01235                 menu_state = 1;   
01236             } else if (menu_state == 6) {
01237                 menu_state = 2;   
01238             } else if (menu_state == 7) {
01239                 menu_state = 3;   
01240             } else if (menu_state == 8) {
01241                 menu_state = 4;   
01242             }
01243             
01244             switch (menu_state) {
01245                 case 1: drawMenu5(0xA0A0A0);
01246                     drawMenu1(BLACK);
01247                     break;
01248                 case 2: drawMenu6(0xA0A0A0);
01249                     drawMenu2(BLACK);
01250                     break;
01251                 case 3: drawMenu7(0xA0A0A0);
01252                     drawMenu3(BLACK);
01253                     break;
01254                 case 4: drawMenu8(0xA0A0A0);
01255                     drawMenu4(BLACK);
01256                     break;
01257             }
01258             
01259             Thread::wait(500);
01260         } else if (myNav.up()) { // down
01261             if (menu_state == 1) {
01262                 menu_state = 5;   
01263             } else if (menu_state == 2) {
01264                 menu_state = 6;   
01265             } else if (menu_state == 3) {
01266                 menu_state = 7;   
01267             } else if (menu_state == 4) {
01268                 menu_state = 8;   
01269             }
01270             
01271             switch (menu_state) {
01272                 case 5: drawMenu1(0xA0A0A0);
01273                     drawMenu5(BLACK);
01274                     break;
01275                 case 6: drawMenu2(0xA0A0A0);
01276                     drawMenu6(BLACK);
01277                     break;
01278                 case 7: drawMenu3(0xA0A0A0);
01279                     drawMenu7(BLACK);
01280                     break;
01281                 case 8: drawMenu4(0xA0A0A0);
01282                     drawMenu8(BLACK);
01283                     break;
01284             } 
01285             Thread::wait(500);
01286         } else if (myNav.fire()) {
01287             fired = 1;
01288             Thread::wait(500);
01289         }
01290            
01291     
01292         if (fired == 1) {
01293             fired = 0;
01294             if (menu_state == 1) {
01295                 if (light_state == 1) { // light off
01296                     
01297                 } else {
01298                     clearMiddle();
01299                     for (int i = 0; i < 10000000; i++) {
01300                         if (i == 0) {
01301                             uLCD.BLIT(55, 60, 22, 17, FOOD);
01302                         }
01303                         if (i== 5000000) {
01304                             clearMiddle();
01305                             uLCD.BLIT(55, 70, 22, 6, FOOD2);
01306                         }
01307                     }
01308                     
01309                     clearMiddle();
01310     
01311                     //monster1.draw();
01312                     pet.increaseHungry();
01313                 }
01314                 drawMenu1(0xA0A0A0);
01315                 menu_state = 0;
01316                 sleep_state = 0;
01317             } else if (menu_state == 2) {                     
01318                 displayOption2();
01319                 while (1) {
01320 
01321                     if (myNav.up() || myNav.down()) {
01322                         
01323                         if (arrow_state == 0) {
01324                             arrow_state = 1;
01325                         } else {
01326                             arrow_state = 0;
01327                         }
01328                         displayOption2();
01329                         Thread::wait(500);
01330                         
01331                     } else if (myNav.fire()) {
01332                         if (arrow_state == 0) {
01333                             clearMiddle();
01334                             //monster1.draw();
01335                             light_state = 0;
01336                         } else {
01337                             turnOffLight();
01338                             light_state = 1;
01339                         }
01340                         Thread::wait(500);
01341                         break;
01342                     } 
01343                 }
01344                 arrow_state = 0;
01345                 drawMenu2(0xA0A0A0);
01346                 menu_state = 0;
01347             } else if (menu_state == 3) {
01348                 if (light_state == 1) { // light off
01349                     
01350                 } else {
01351 
01352                     
01353                     displayOption3();
01354                     
01355                     int ene = rand()%3+1;
01356                     int result = 0; // 1: win 2: lose 3: tie
01357                     
01358                     while (1) {
01359 
01360                         if (myNav.right()) {
01361                             drawMyRockFrame();
01362                             if (ene == 1) {
01363                                 drawEneRockFrame();
01364                                 result = 3;
01365                             } else if (ene == 2) {
01366                                 drawEnePaperFrame();
01367                                 result = 2;
01368                             } else if (ene == 3) {
01369                                 drawEneSciFrame();
01370                                 result = 1;
01371                             }
01372                             Thread::wait(2000);
01373                         } else if (myNav.fire()) {
01374                             drawMyPaperFrame();
01375                             if (ene == 1) {
01376                                 drawEneRockFrame();
01377                                 result = 1;
01378                             } else if (ene == 2) {
01379                                 drawEnePaperFrame();
01380                                 result = 3;
01381                             } else if (ene == 3) {
01382                                 drawEneSciFrame();
01383                                 result = 2;
01384                             }
01385                             Thread::wait(2000);
01386                         } else if (myNav.left()) {
01387                             drawMySciFrame();
01388                             if (ene == 1) {
01389                                 drawEneRockFrame();
01390                                 result = 2;
01391                             } else if (ene == 2) {
01392                                 drawEnePaperFrame();
01393                                 result = 1;
01394                             } else if (ene == 3) {
01395                                 drawEneSciFrame();
01396                                 result = 3;
01397                             }
01398                             Thread::wait(2000);
01399                         }
01400                         
01401                         if (result == 3) {
01402                             clearMiddle();
01403                             uLCD.text_width(4); // 4 times
01404                             uLCD.text_height(4);
01405                             uLCD.locate(0, 1);
01406                             uLCD.printf("TIE");
01407                             Thread::wait(2000);
01408                             ene = rand()%3+1;
01409                             displayOption3();
01410                             result = 0;
01411                         } else if (result == 1) {
01412                             clearMiddle();
01413                             uLCD.text_width(4); // 4 times
01414                             uLCD.text_height(4);
01415                             uLCD.locate(0, 1);
01416                             uLCD.printf("WIN");
01417                             pet.increaseHappy();
01418                             Thread::wait(2000);
01419                             break;
01420                         } else if (result == 2) {
01421                             clearMiddle();
01422                             uLCD.text_width(4); // 4 times
01423                             uLCD.text_height(4);
01424                             uLCD.locate(0, 1);
01425                             uLCD.printf("LOSE");
01426                             pet.decreaseHappy();
01427                             Thread::wait(2000);
01428                             break;
01429                         }
01430                     }
01431                     clearMiddle();
01432                     //monster1.draw();
01433                 }
01434                 drawMenu3(0xA0A0A0);
01435                 menu_state = 0;
01436                 sleep_state = 0;
01437             } else if (menu_state == 4) { // medicine
01438                 if (light_state == 1) { // light off
01439                     
01440                 } else {
01441                     clearMiddle();
01442                     for (int i = 0; i < 10000000; i++) {
01443                         if (i == 0) {
01444                             uLCD.BLIT(60, 58, 16, 16, MED);
01445                         }
01446                         if (i== 5000000) {
01447                             clearMiddle();
01448                             uLCD.BLIT(60, 66, 16, 8, MED2);
01449                         }
01450                     }
01451                     
01452                     clearMiddle();
01453                     
01454                 }
01455                 drawMenu4(0xA0A0A0);
01456                 menu_state = 0;
01457                 sick_state = 0;
01458                 sleep_state = 0;
01459             } else if (menu_state == 5) { // poop
01460                 if (light_state == 1) { // light off
01461                     
01462                 } else {
01463                     for (int i = 0; i < 128; i = i + 5) {
01464                         if (i == 0) {
01465                             uLCD.filled_rectangle(0+i, 26, 5+i,127-25+1, BLACK);
01466                         } else {
01467                             uLCD.filled_rectangle(0+i-5, 26, 5+i-5,127-25+1, WHITE);
01468                             uLCD.filled_rectangle(0+i, 26, 5+i,127-25+1, BLACK);
01469                         }
01470                         Thread::wait(100);
01471                     }
01472                     poop_state = 0;
01473                     poop_count = 0;
01474                     clearMiddle();
01475                     //monster1.draw();
01476                 }
01477                 drawMenu5(0xA0A0A0);
01478                 menu_state = 0;
01479             } else if (menu_state == 6) { // info // working
01480                 displayOption6();
01481                 while (1) {
01482 
01483                     
01484                     if (myNav.left()) {
01485                         info_state = info_state + 1;
01486                         displayOption6();
01487                         Thread::wait(500);
01488                     } else if (myNav.right()) {
01489                         info_state = info_state - 1;
01490                         if (info_state < 0) {
01491                             info_state = info_state + 4; 
01492                         }
01493                         displayOption6();
01494                         Thread::wait(500);
01495                     } else if (myNav.fire()) {
01496                         Thread::wait(500);
01497                         break;
01498                     }                   
01499                 }
01500                 info_state = 0;
01501                 
01502                 if (light_state == 1) { // light off
01503                     drawUpperFrame();
01504                     drawUpperMenu();
01505                     turnOffLight();
01506                 } else {
01507                     clearMiddle();
01508                     drawUpperFrame();
01509                     drawUpperMenu();
01510                     
01511                     //monster1.draw();
01512                 }
01513                 drawMenu6(0xA0A0A0);
01514                 menu_state = 0;
01515             } else if (menu_state == 7) { // yell
01516                 if (light_state == 1) { // light off
01517                     
01518                 } else {
01519                     for (int i = 0; i < 10000000; i++) {
01520                         if (i % 1000000 == 0) {
01521                             uLCD.BLIT(getpositionx, getpositiony, MONSTER_WIDTH, MONSTER_HEIGHT, MONSTER1_MAD1);
01522                         }
01523                     }
01524                     
01525                     clearMiddle();
01526                     //monster1.draw();
01527                     pet.increaseDiscipline();
01528                     pet.decreaseHappy();
01529                 }
01530                 
01531                 drawMenu7(0xA0A0A0);
01532                 menu_state = 0;
01533                 sleep_state = 0;
01534             } else if (menu_state == 8) {
01535                 pet.increaseAge();
01536                 drawMenu8(0xA0A0A0);
01537                 menu_state = 0;
01538                 sleep_state = 0;
01539             }             
01540         } 
01541         
01542         
01543     }
01544     
01545     
01546 }
01547