📄 badgerbash.lst
字号:
279 2 GotoXY(12,0);
280 2 Print(score);
281 2
282 2 key = 254; /*等待下一按键*/
283 2 }
284 1 }
285
286 /*** 键盘扫描程序 ***/
287 /*本键盘扫描程序只支持单键*/
288 uchar keyscan(void)
289 {
290 1 uchar row, col = 0, key = 254;
291 1 //uchar test[4];
292 1 row1 = row2 = row3 = 1; /*行输出高电平,列输出低电平*/
293 1 col1 = col2 = col3 = 0;
294 1 if ((row1 && row2 && row3) == 0)
295 1 {
296 2 //delay_ms(5);
297 2 if ((row1 && row2 && row3) == 0)
298 2 {
299 3 if(row1 == 0)
300 3 row = 0;
301 3 if(row2 == 0)
302 3 row = 1;
303 3 if(row3 == 0)
C51 COMPILER V8.05a BADGERBASH 05/06/2009 21:14:12 PAGE 6
304 3 row = 2;
305 3
306 3 row1 = row2 = row3 = 0; /*行输低电平,列输出高电平*/
307 3 col1 = col2 = col3 = 1;
308 3
309 3 if(col1 == 0)
310 3 col = 0;
311 3 if(col2 == 0)
312 3 col = 1;
313 3 if(col3 == 0)
314 3 col = 2;
315 3 }
316 2
317 2 key = row * 3 + col;
318 2
319 2 /*测试按键扫描
320 2 test[0] = row + '0';
321 2 test[1] = col + '0';
322 2 test[2] = key + '0';
323 2 test[3] = '\0';
324 2 GotoXY(0,0);
325 2 Print(test);
326 2 */
327 2 }
328 1 return key;
329 1 }
330
331 void setgrade(uchar g)
332 {
333 1 switch(g)
334 1 {
335 2 case 0:/*关卡1*/
336 2 showTime = 3000; /*单位ms*/
337 2 badgerNum = 5;
338 2 gain = 1;
339 2 break;
340 2 case 1:/*关卡2*/
341 2 showTime = 2500; /*单位ms*/
342 2 badgerNum = 4;
343 2 gain = 2;
344 2 break;
345 2 case 2:/*关卡3*/
346 2 showTime = 2000; /*单位ms*/
347 2 badgerNum = 4;
348 2 gain = 4;
349 2 break;
350 2 case 3:/*关卡4*/
351 2 showTime = 1500; /*单位ms*/
352 2 badgerNum = 3;
353 2 gain = 6;
354 2 break;
355 2 case 4:/*关卡5*/
356 2 showTime = 1000; /*单位ms*/
357 2 badgerNum = 3;
358 2 gain = 8;
359 2 break;
360 2 case 5:/*关卡6*/
361 2 showTime = 900; /*单位ms*/
362 2 badgerNum = 2;
363 2 gain = 10;
364 2 break;
365 2 case 6:/*关卡7*/
C51 COMPILER V8.05a BADGERBASH 05/06/2009 21:14:12 PAGE 7
366 2 showTime = 800; /*单位ms*/
367 2 badgerNum = 1;
368 2 gain = 12;
369 2 break;
370 2 case 7:/*关卡8*/
371 2 showTime = 600; /*单位ms*/
372 2 badgerNum = 1;
373 2 gain = 14;
374 2 break;
375 2 default:/*关卡9:需要5600分进入*/
376 2 showTime = 500; /*单位ms*/
377 2 badgerNum = 1;
378 2 gain = 34;
379 2 break;
380 2 }
381 1 }
382
383 void modeControl(uchar m)
384 {
385 1 uchar l[2];
386 1
387 1 switch (m)
388 1 {
389 2 case 1: /*模式1*/
390 2 setgrade(0);
391 2
392 2 l[0] = 0 + '0';
393 2 l[1] = '\0';
394 2 /*显示关卡*/
395 2
396 2 GotoXY(0,0);
397 2 Print("Level ");
398 2 GotoXY(6,0);
399 2 Print(l);
400 2 break;
401 2 case 2: /*模式2*/
402 2 showTime = 3000; /*单位ms*/
403 2 badgerNum = 1;
404 2 gain = 1;
405 2
406 2 GotoXY(0,0);
407 2 Print("TRAINING");
408 2 Print(l);
409 2 break;
410 2 default:
411 2 break;
412 2 }
413 1 }
414
415 void set_Mode(void)
416 {
417 1 /*模式设置
418 1 * 1、关卡模式:
419 1 * 2、挑战模式:
420 1 */
421 1
422 1 /*显示提示*/
423 1 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
424 1 delay_ms(50);
425 1
426 1 GotoXY(1,0);
427 1 Print("..Start Game..");
C51 COMPILER V8.05a BADGERBASH 05/06/2009 21:14:12 PAGE 8
428 1 GotoXY(2,1);
429 1 Print("press 'MODE'");
430 1
431 1
432 1 while(1)
433 1 {
434 2 keyNum = keyscan(); /*扫描按键*/
435 2
436 2 if (start == 0) /*进入游戏*/
437 2 {
438 3 if (keyNum == 0)
439 3 {
440 4 start = 1;
441 4 }
442 3 keyNum = 254; /*等待下一按键*/
443 3 delay_ms(100); /*延时稳定,防抖动*/
444 3
445 3 if (start != 0) /*进入声音设置*/
446 3 {
447 4 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
448 4 GotoXY(0,0);
449 4 Print(" UP: SOUND ON");
450 4 GotoXY(0,1);
451 4 Print("DOWN: SOUND OFF");
452 4 }
453 3 }
454 2
455 2 if (setsound == 0 && start == 1) /*声音设置*/
456 2 {
457 3 if (keyNum == 1)
458 3 setsound = 1;
459 3 else if (keyNum == 2)
460 3 setsound = 2;
461 3
462 3 keyNum = 254; /*等待下一按键*/
463 3 delay_ms(100);
464 3
465 3 if (setsound != 0)
466 3 {
467 4 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
468 4 GotoXY(0,0);
469 4 Print(" UP: TOURNANMENT");
470 4 GotoXY(0,1);
471 4 Print("DOWN: TRAINING");
472 4 }
473 3 }
474 2
475 2 if (set_mod == 0 && setsound != 0) /*模式设置*/
476 2 {
477 3 if (keyNum == 1)
478 3 set_mod = 1;
479 3 else if (keyNum == 2)
480 3 set_mod = 2;
481 3 else
482 3 set_mod = 0;
483 3
484 3 keyNum = 254; /*等待下一按键*/
485 3 delay_ms(100);
486 3
487 3 if (set_mod != 0)
488 3 {
489 4 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
C51 COMPILER V8.05a BADGERBASH 05/06/2009 21:14:12 PAGE 9
490 4 delay_ms(50);
491 4
492 4 modeControl(set_mod);
493 4
494 4 /*设置完成,游戏开始*/
495 4 run = 1;
496 4 break;
497 4 }
498 3 }
499 2
500 2 }
501 1 }
502
503 void monitor(void)
504 {
505 1 uchar i,temp = 0;
506 1
507 1 for (i = 0; i < posNum; i++)
508 1 {
509 2 if (showPos[i][0] == 1)
510 2 temp++;
511 2 }
512 1 badgerNow = temp;
513 1
514 1 creatbadger(badgerNum-badgerNow, showPos);
515 1 }
516
517 void timer0Int(void) interrupt 1 using 1
518 {
519 1 TH0 = 0x3c; /*定时50ms*/
520 1 TL0 = 0xb0;
521 1
522 1 /**********处理操作****************/
523 1 count++;
524 1 showEn++;
525 1
526 1 //RUN = ~RUN;
527 1
528 1 for (count2 = 0; count2 < posNum; count2++)
529 1 {
530 2 if (showPos[count2][1] > 0)
531 2 {
532 3 showPos[count2][1]-=50;
533 3 }
534 2 if (showPos[count2][0] == 1 && showPos[count2][1] <= 0)
535 2 {
536 3 showPos[count2][0] = 0;
537 3 }
538 2 }
539 1 }
540
541
542
543
544
545
546
547
548
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.05a BADGERBASH 05/06/2009 21:14:12 PAGE 10
CODE SIZE = 1657 ----
CONSTANT SIZE = 140 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 79 20
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -