Louis van der Walt
/
mPong
main.cpp@0:b6c9c868d906, 2009-12-15 (annotated)
- Committer:
- luwii
- Date:
- Tue Dec 15 18:43:27 2009 +0000
- Revision:
- 0:b6c9c868d906
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
luwii | 0:b6c9c868d906 | 1 | #include "mbed.h" |
luwii | 0:b6c9c868d906 | 2 | #include "MobileLCD.h" |
luwii | 0:b6c9c868d906 | 3 | MobileLCD lcd(p5, p6, p7, p8, p9); |
luwii | 0:b6c9c868d906 | 4 | Serial pc(USBTX, USBRX); // tx, rx |
luwii | 0:b6c9c868d906 | 5 | |
luwii | 0:b6c9c868d906 | 6 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 7 | // * Startup variables |
luwii | 0:b6c9c868d906 | 8 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 9 | //Ball speed |
luwii | 0:b6c9c868d906 | 10 | int speedh; |
luwii | 0:b6c9c868d906 | 11 | int speedv; |
luwii | 0:b6c9c868d906 | 12 | |
luwii | 0:b6c9c868d906 | 13 | //Ball position |
luwii | 0:b6c9c868d906 | 14 | int ballx = 5; |
luwii | 0:b6c9c868d906 | 15 | int bally = 65; |
luwii | 0:b6c9c868d906 | 16 | |
luwii | 0:b6c9c868d906 | 17 | //Score |
luwii | 0:b6c9c868d906 | 18 | int scorel; |
luwii | 0:b6c9c868d906 | 19 | int scorer; |
luwii | 0:b6c9c868d906 | 20 | |
luwii | 0:b6c9c868d906 | 21 | //Paddle size |
luwii | 0:b6c9c868d906 | 22 | const int paddle = 30; |
luwii | 0:b6c9c868d906 | 23 | |
luwii | 0:b6c9c868d906 | 24 | //Win level |
luwii | 0:b6c9c868d906 | 25 | const int winner = 3; |
luwii | 0:b6c9c868d906 | 26 | |
luwii | 0:b6c9c868d906 | 27 | //Paddle position |
luwii | 0:b6c9c868d906 | 28 | int lefty = 53; |
luwii | 0:b6c9c868d906 | 29 | int righty = 50; |
luwii | 0:b6c9c868d906 | 30 | |
luwii | 0:b6c9c868d906 | 31 | //Joystick position & input variables |
luwii | 0:b6c9c868d906 | 32 | AnalogIn inl(p20); |
luwii | 0:b6c9c868d906 | 33 | AnalogIn inr(p19); |
luwii | 0:b6c9c868d906 | 34 | float joystickl; |
luwii | 0:b6c9c868d906 | 35 | float joystickr; |
luwii | 0:b6c9c868d906 | 36 | |
luwii | 0:b6c9c868d906 | 37 | // Number of players |
luwii | 0:b6c9c868d906 | 38 | int players = 0; |
luwii | 0:b6c9c868d906 | 39 | |
luwii | 0:b6c9c868d906 | 40 | // Loop until winner declared |
luwii | 0:b6c9c868d906 | 41 | int playing = 1; |
luwii | 0:b6c9c868d906 | 42 | |
luwii | 0:b6c9c868d906 | 43 | const int ballcolour = 0xFFFFFF; |
luwii | 0:b6c9c868d906 | 44 | |
luwii | 0:b6c9c868d906 | 45 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 46 | |
luwii | 0:b6c9c868d906 | 47 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 48 | // * Display score, wait & wipe |
luwii | 0:b6c9c868d906 | 49 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 50 | void displayScore( int left, int right ) { |
luwii | 0:b6c9c868d906 | 51 | lcd.locate ( 3, 2 ) ; |
luwii | 0:b6c9c868d906 | 52 | lcd.printf( "%i %i ",left,right ); |
luwii | 0:b6c9c868d906 | 53 | //Check if we have a winner |
luwii | 0:b6c9c868d906 | 54 | if ( left == winner) { |
luwii | 0:b6c9c868d906 | 55 | lcd.locate( 3,4 ); |
luwii | 0:b6c9c868d906 | 56 | lcd.printf( "Left won!" ); |
luwii | 0:b6c9c868d906 | 57 | playing = 0; |
luwii | 0:b6c9c868d906 | 58 | lcd.fill(0, 0, 5, 130, 0x0000FF); //left |
luwii | 0:b6c9c868d906 | 59 | lcd.fill(126, 0, 4, 130, 0x000FFF); //right |
luwii | 0:b6c9c868d906 | 60 | wait(2); |
luwii | 0:b6c9c868d906 | 61 | } |
luwii | 0:b6c9c868d906 | 62 | if ( right == winner) { |
luwii | 0:b6c9c868d906 | 63 | lcd.locate( 3,4 ); |
luwii | 0:b6c9c868d906 | 64 | lcd.printf( "Right won!" ); |
luwii | 0:b6c9c868d906 | 65 | playing = 0; |
luwii | 0:b6c9c868d906 | 66 | lcd.fill(0, 0, 5, 130, 0x0000FF); //left |
luwii | 0:b6c9c868d906 | 67 | lcd.fill(126, 0, 4, 130, 0x000FFF); //right |
luwii | 0:b6c9c868d906 | 68 | wait(2); |
luwii | 0:b6c9c868d906 | 69 | } |
luwii | 0:b6c9c868d906 | 70 | wait( 2 ); |
luwii | 0:b6c9c868d906 | 71 | lcd.fill(13, 0, 110, 25, 0x0000FF); |
luwii | 0:b6c9c868d906 | 72 | } |
luwii | 0:b6c9c868d906 | 73 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 74 | |
luwii | 0:b6c9c868d906 | 75 | |
luwii | 0:b6c9c868d906 | 76 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 77 | // * Setup screen to start |
luwii | 0:b6c9c868d906 | 78 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 79 | void startup( void ) { |
luwii | 0:b6c9c868d906 | 80 | //speed |
luwii | 0:b6c9c868d906 | 81 | speedh = 1; |
luwii | 0:b6c9c868d906 | 82 | speedv = -1; |
luwii | 0:b6c9c868d906 | 83 | |
luwii | 0:b6c9c868d906 | 84 | //Score |
luwii | 0:b6c9c868d906 | 85 | scorel = 0; |
luwii | 0:b6c9c868d906 | 86 | scorer = 0; |
luwii | 0:b6c9c868d906 | 87 | |
luwii | 0:b6c9c868d906 | 88 | // *** Screen *** |
luwii | 0:b6c9c868d906 | 89 | lcd.background(0x0000FF); |
luwii | 0:b6c9c868d906 | 90 | lcd.cls(); |
luwii | 0:b6c9c868d906 | 91 | lcd.fill(1, lefty, 4, paddle, 0x00FF00); //left |
luwii | 0:b6c9c868d906 | 92 | lcd.fill(126, righty, 4, paddle, 0x00FF00); //right |
luwii | 0:b6c9c868d906 | 93 | lcd.fill(ballx, bally, 4, 4, ballcolour); //ball |
luwii | 0:b6c9c868d906 | 94 | displayScore(scorel,scorer); |
luwii | 0:b6c9c868d906 | 95 | |
luwii | 0:b6c9c868d906 | 96 | |
luwii | 0:b6c9c868d906 | 97 | // *** Calibrate analog in *** |
luwii | 0:b6c9c868d906 | 98 | // * Start game at higheest voltage level for both inpout pins |
luwii | 0:b6c9c868d906 | 99 | |
luwii | 0:b6c9c868d906 | 100 | } |
luwii | 0:b6c9c868d906 | 101 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 102 | |
luwii | 0:b6c9c868d906 | 103 | |
luwii | 0:b6c9c868d906 | 104 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 105 | // Move the Ball |
luwii | 0:b6c9c868d906 | 106 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 107 | void moveBall ( void ) { |
luwii | 0:b6c9c868d906 | 108 | |
luwii | 0:b6c9c868d906 | 109 | int retVal =0; |
luwii | 0:b6c9c868d906 | 110 | |
luwii | 0:b6c9c868d906 | 111 | //Remove ball from screen |
luwii | 0:b6c9c868d906 | 112 | lcd.fill( ballx,bally,4,4,0x0000FF ); |
luwii | 0:b6c9c868d906 | 113 | |
luwii | 0:b6c9c868d906 | 114 | // Normal x movement |
luwii | 0:b6c9c868d906 | 115 | if ( (ballx + speedh > 4) && (ballx + speedh < 122)) { |
luwii | 0:b6c9c868d906 | 116 | ballx = ballx + speedh; |
luwii | 0:b6c9c868d906 | 117 | |
luwii | 0:b6c9c868d906 | 118 | } else { |
luwii | 0:b6c9c868d906 | 119 | //Bounce off right paddle |
luwii | 0:b6c9c868d906 | 120 | if (ballx+speedh >= 122) { |
luwii | 0:b6c9c868d906 | 121 | if ( (bally>righty)&&(bally<righty+paddle) ) { |
luwii | 0:b6c9c868d906 | 122 | ballx=122; |
luwii | 0:b6c9c868d906 | 123 | speedh=speedh*(-1); |
luwii | 0:b6c9c868d906 | 124 | ballx=ballx+speedh; |
luwii | 0:b6c9c868d906 | 125 | } else { |
luwii | 0:b6c9c868d906 | 126 | //Left scores |
luwii | 0:b6c9c868d906 | 127 | scorel = scorel + 1; |
luwii | 0:b6c9c868d906 | 128 | displayScore( scorel,scorer ); |
luwii | 0:b6c9c868d906 | 129 | //Ball speed |
luwii | 0:b6c9c868d906 | 130 | speedh = -1; |
luwii | 0:b6c9c868d906 | 131 | speedv = +1; |
luwii | 0:b6c9c868d906 | 132 | |
luwii | 0:b6c9c868d906 | 133 | //Ball position |
luwii | 0:b6c9c868d906 | 134 | ballx = 122; |
luwii | 0:b6c9c868d906 | 135 | bally = righty+(paddle/2); |
luwii | 0:b6c9c868d906 | 136 | } |
luwii | 0:b6c9c868d906 | 137 | } |
luwii | 0:b6c9c868d906 | 138 | //Bounce off left paddle |
luwii | 0:b6c9c868d906 | 139 | if (ballx+speedh <=4) { |
luwii | 0:b6c9c868d906 | 140 | |
luwii | 0:b6c9c868d906 | 141 | if ( (bally>lefty)&&(bally<lefty+paddle) ) { |
luwii | 0:b6c9c868d906 | 142 | ballx=4; |
luwii | 0:b6c9c868d906 | 143 | speedh=speedh*(-1); |
luwii | 0:b6c9c868d906 | 144 | ballx=ballx+speedh; |
luwii | 0:b6c9c868d906 | 145 | } else { //Right scores |
luwii | 0:b6c9c868d906 | 146 | scorer = scorer + 1; |
luwii | 0:b6c9c868d906 | 147 | displayScore( scorel,scorer ); |
luwii | 0:b6c9c868d906 | 148 | //Ball speed |
luwii | 0:b6c9c868d906 | 149 | speedh = 1; |
luwii | 0:b6c9c868d906 | 150 | speedv = -1; |
luwii | 0:b6c9c868d906 | 151 | |
luwii | 0:b6c9c868d906 | 152 | //Ball position |
luwii | 0:b6c9c868d906 | 153 | ballx = 5; |
luwii | 0:b6c9c868d906 | 154 | bally = lefty+(paddle/2); |
luwii | 0:b6c9c868d906 | 155 | } |
luwii | 0:b6c9c868d906 | 156 | } |
luwii | 0:b6c9c868d906 | 157 | } //else |
luwii | 0:b6c9c868d906 | 158 | |
luwii | 0:b6c9c868d906 | 159 | |
luwii | 0:b6c9c868d906 | 160 | // Normal y movement |
luwii | 0:b6c9c868d906 | 161 | if ( (bally + speedv > 0) && (bally + speedv < 126)) { |
luwii | 0:b6c9c868d906 | 162 | bally = bally + speedv; |
luwii | 0:b6c9c868d906 | 163 | |
luwii | 0:b6c9c868d906 | 164 | } else { |
luwii | 0:b6c9c868d906 | 165 | // Bounce bottom |
luwii | 0:b6c9c868d906 | 166 | if ( bally + speedv >= 126 ) { |
luwii | 0:b6c9c868d906 | 167 | bally = 125; |
luwii | 0:b6c9c868d906 | 168 | speedv = speedv*(-1); |
luwii | 0:b6c9c868d906 | 169 | bally = bally + speedv; |
luwii | 0:b6c9c868d906 | 170 | } |
luwii | 0:b6c9c868d906 | 171 | // Bounce top |
luwii | 0:b6c9c868d906 | 172 | if (bally + speedv <= 0 ) { |
luwii | 0:b6c9c868d906 | 173 | bally = 0; |
luwii | 0:b6c9c868d906 | 174 | speedv = speedv*(-1); |
luwii | 0:b6c9c868d906 | 175 | bally = bally + speedv; |
luwii | 0:b6c9c868d906 | 176 | |
luwii | 0:b6c9c868d906 | 177 | } |
luwii | 0:b6c9c868d906 | 178 | } // else |
luwii | 0:b6c9c868d906 | 179 | |
luwii | 0:b6c9c868d906 | 180 | // Draw ball if it is to be moved |
luwii | 0:b6c9c868d906 | 181 | if ( retVal == 0 ) { |
luwii | 0:b6c9c868d906 | 182 | lcd.fill(ballx, bally, 4, 4, ballcolour); //ball |
luwii | 0:b6c9c868d906 | 183 | } |
luwii | 0:b6c9c868d906 | 184 | |
luwii | 0:b6c9c868d906 | 185 | } |
luwii | 0:b6c9c868d906 | 186 | |
luwii | 0:b6c9c868d906 | 187 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 188 | // Move the Paddles |
luwii | 0:b6c9c868d906 | 189 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 190 | |
luwii | 0:b6c9c868d906 | 191 | void movePaddles( void ) { |
luwii | 0:b6c9c868d906 | 192 | |
luwii | 0:b6c9c868d906 | 193 | //*** Left *** |
luwii | 0:b6c9c868d906 | 194 | |
luwii | 0:b6c9c868d906 | 195 | lcd.fill(1, lefty, 4, paddle, 0x0000FF); //Clear paddle |
luwii | 0:b6c9c868d906 | 196 | //Read paddle if 2 player |
luwii | 0:b6c9c868d906 | 197 | if ( players == 2 ) { |
luwii | 0:b6c9c868d906 | 198 | joystickl = inl.read(); |
luwii | 0:b6c9c868d906 | 199 | joystickl = joystickl * 100; |
luwii | 0:b6c9c868d906 | 200 | joystickl = 53 - joystickl; |
luwii | 0:b6c9c868d906 | 201 | lefty = joystickl*(130/47); |
luwii | 0:b6c9c868d906 | 202 | } else { |
luwii | 0:b6c9c868d906 | 203 | if ( lefty>bally ) { |
luwii | 0:b6c9c868d906 | 204 | lefty--; |
luwii | 0:b6c9c868d906 | 205 | } |
luwii | 0:b6c9c868d906 | 206 | if ( lefty<bally ) { |
luwii | 0:b6c9c868d906 | 207 | lefty++; |
luwii | 0:b6c9c868d906 | 208 | } |
luwii | 0:b6c9c868d906 | 209 | } |
luwii | 0:b6c9c868d906 | 210 | //Auto move paddle if 1 player |
luwii | 0:b6c9c868d906 | 211 | |
luwii | 0:b6c9c868d906 | 212 | |
luwii | 0:b6c9c868d906 | 213 | if ( lefty <0 ) { |
luwii | 0:b6c9c868d906 | 214 | lefty = 0; |
luwii | 0:b6c9c868d906 | 215 | } |
luwii | 0:b6c9c868d906 | 216 | if ( lefty > (130-paddle) ) { |
luwii | 0:b6c9c868d906 | 217 | lefty=130-paddle; |
luwii | 0:b6c9c868d906 | 218 | } |
luwii | 0:b6c9c868d906 | 219 | |
luwii | 0:b6c9c868d906 | 220 | lcd.fill(1, lefty, 4, paddle, 0x00FF00); //Draw paddle |
luwii | 0:b6c9c868d906 | 221 | |
luwii | 0:b6c9c868d906 | 222 | //*** Right *** |
luwii | 0:b6c9c868d906 | 223 | lcd.fill(126, righty, 4, paddle, 0x0000FF); //Clear paddle |
luwii | 0:b6c9c868d906 | 224 | joystickr = inr.read(); |
luwii | 0:b6c9c868d906 | 225 | joystickr = joystickr * 100; |
luwii | 0:b6c9c868d906 | 226 | joystickr = 53 - joystickr; |
luwii | 0:b6c9c868d906 | 227 | righty = joystickr*(130/47); |
luwii | 0:b6c9c868d906 | 228 | if ( righty <0 ) { |
luwii | 0:b6c9c868d906 | 229 | righty = 0; |
luwii | 0:b6c9c868d906 | 230 | } |
luwii | 0:b6c9c868d906 | 231 | if ( righty > (130-paddle) ) { |
luwii | 0:b6c9c868d906 | 232 | righty=130-paddle; |
luwii | 0:b6c9c868d906 | 233 | } |
luwii | 0:b6c9c868d906 | 234 | lcd.fill(126, righty, 4, paddle, 0x00FF00); //Draw paddle |
luwii | 0:b6c9c868d906 | 235 | } |
luwii | 0:b6c9c868d906 | 236 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 237 | |
luwii | 0:b6c9c868d906 | 238 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 239 | // Main menu |
luwii | 0:b6c9c868d906 | 240 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 241 | void menu( void ) { |
luwii | 0:b6c9c868d906 | 242 | //Read right joystick level, change will start game |
luwii | 0:b6c9c868d906 | 243 | joystickr = inr.read(); |
luwii | 0:b6c9c868d906 | 244 | joystickr = joystickr * 100; |
luwii | 0:b6c9c868d906 | 245 | joystickr = 53 - joystickr; |
luwii | 0:b6c9c868d906 | 246 | float startr = joystickr*(130/47); |
luwii | 0:b6c9c868d906 | 247 | |
luwii | 0:b6c9c868d906 | 248 | //Display menu options, control with left joystick |
luwii | 0:b6c9c868d906 | 249 | lcd.background(0x0000FF); |
luwii | 0:b6c9c868d906 | 250 | lcd.cls(); |
luwii | 0:b6c9c868d906 | 251 | lcd.locate( 5,3 ); |
luwii | 0:b6c9c868d906 | 252 | lcd.printf( "mPong" ); |
luwii | 0:b6c9c868d906 | 253 | lcd.locate( 1,12 ); |
luwii | 0:b6c9c868d906 | 254 | lcd.printf( "(left=choose;"); |
luwii | 0:b6c9c868d906 | 255 | lcd.locate( 1,13 ); |
luwii | 0:b6c9c868d906 | 256 | lcd.printf( " right=start)" ); |
luwii | 0:b6c9c868d906 | 257 | int choose = 1; |
luwii | 0:b6c9c868d906 | 258 | while ( choose==1 ) { |
luwii | 0:b6c9c868d906 | 259 | |
luwii | 0:b6c9c868d906 | 260 | //*** Left *** |
luwii | 0:b6c9c868d906 | 261 | joystickl = inl.read(); |
luwii | 0:b6c9c868d906 | 262 | joystickl = joystickl * 100; |
luwii | 0:b6c9c868d906 | 263 | joystickl = 53 - joystickl; |
luwii | 0:b6c9c868d906 | 264 | lefty = joystickl*(130/47); |
luwii | 0:b6c9c868d906 | 265 | |
luwii | 0:b6c9c868d906 | 266 | if ( lefty < 44 ) { |
luwii | 0:b6c9c868d906 | 267 | lcd.background( 0x550000 ); |
luwii | 0:b6c9c868d906 | 268 | lcd.locate (1,6); |
luwii | 0:b6c9c868d906 | 269 | lcd.printf( "Single Player"); |
luwii | 0:b6c9c868d906 | 270 | lcd.background( 0x0000FF ); |
luwii | 0:b6c9c868d906 | 271 | lcd.locate (1,7); |
luwii | 0:b6c9c868d906 | 272 | lcd.printf( "Double Player"); |
luwii | 0:b6c9c868d906 | 273 | players = 1; |
luwii | 0:b6c9c868d906 | 274 | } else { |
luwii | 0:b6c9c868d906 | 275 | lcd.background( 0x0000FF ); |
luwii | 0:b6c9c868d906 | 276 | lcd.locate (1,6); |
luwii | 0:b6c9c868d906 | 277 | lcd.printf( "Single Player"); |
luwii | 0:b6c9c868d906 | 278 | lcd.background( 0x550000 ); |
luwii | 0:b6c9c868d906 | 279 | lcd.locate (1,7); |
luwii | 0:b6c9c868d906 | 280 | lcd.printf( "Double Player"); |
luwii | 0:b6c9c868d906 | 281 | players = 2; |
luwii | 0:b6c9c868d906 | 282 | } |
luwii | 0:b6c9c868d906 | 283 | wait(0.1); |
luwii | 0:b6c9c868d906 | 284 | |
luwii | 0:b6c9c868d906 | 285 | //Read right joystick level, change will start game |
luwii | 0:b6c9c868d906 | 286 | joystickr = inr.read(); |
luwii | 0:b6c9c868d906 | 287 | joystickr = joystickr * 100; |
luwii | 0:b6c9c868d906 | 288 | joystickr = 53 - joystickr; |
luwii | 0:b6c9c868d906 | 289 | joystickr = joystickr*(130/47); |
luwii | 0:b6c9c868d906 | 290 | |
luwii | 0:b6c9c868d906 | 291 | if ( (startr - joystickr) > 10 || (startr - joystickr ) < -10 ) { |
luwii | 0:b6c9c868d906 | 292 | // Start game |
luwii | 0:b6c9c868d906 | 293 | choose = 0; |
luwii | 0:b6c9c868d906 | 294 | //Nice screen clear |
luwii | 0:b6c9c868d906 | 295 | for ( choose=0; choose <65; choose++ ) { |
luwii | 0:b6c9c868d906 | 296 | lcd.fill(65-choose, 0, 1, 130, 0x0000FF); |
luwii | 0:b6c9c868d906 | 297 | lcd.fill(65+choose, 0, 1, 130, 0x0000FF); |
luwii | 0:b6c9c868d906 | 298 | wait(0.02); |
luwii | 0:b6c9c868d906 | 299 | playing=1; |
luwii | 0:b6c9c868d906 | 300 | } |
luwii | 0:b6c9c868d906 | 301 | } |
luwii | 0:b6c9c868d906 | 302 | |
luwii | 0:b6c9c868d906 | 303 | } |
luwii | 0:b6c9c868d906 | 304 | } |
luwii | 0:b6c9c868d906 | 305 | // ******************************************************************************** |
luwii | 0:b6c9c868d906 | 306 | int main() { |
luwii | 0:b6c9c868d906 | 307 | while ( 1 ) { |
luwii | 0:b6c9c868d906 | 308 | |
luwii | 0:b6c9c868d906 | 309 | menu(); |
luwii | 0:b6c9c868d906 | 310 | startup(); |
luwii | 0:b6c9c868d906 | 311 | |
luwii | 0:b6c9c868d906 | 312 | // Main Loop |
luwii | 0:b6c9c868d906 | 313 | while (playing == 1) { |
luwii | 0:b6c9c868d906 | 314 | moveBall(); |
luwii | 0:b6c9c868d906 | 315 | movePaddles(); |
luwii | 0:b6c9c868d906 | 316 | wait(0.02); |
luwii | 0:b6c9c868d906 | 317 | } // while playing |
luwii | 0:b6c9c868d906 | 318 | |
luwii | 0:b6c9c868d906 | 319 | } // while 1 |
luwii | 0:b6c9c868d906 | 320 | } |