Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
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
Generated on Fri Jul 22 2022 09:04:03 by
1.7.2