📄 main.lst
字号:
312 3 }
313 2 LCD_WriteData(0x00,i-1,64+i*8-j+2);
314 2 LCD_WriteData(0x00,i-1,64+i*8-j+1);
315 2
316 2 }
317 1 return 1;
318 1 }
319
320 //=============================================
321 //斜线移动:向右下移动
322 //=============================================
323 uchar Ball_MoveRightDown(uint speed)
324 {
325 1 uchar i,j,wdata;
326 1 for(i=0;i<8;i++)//向右下移动
327 1 {
328 2 wdata=0x03;
329 2 for(j=0;j<8;j+=2)
330 2 {
331 3 if(j)
332 3 {
333 4 LCD_WriteData(0x00,i,64+i*8+j-2);//CLR
334 4 LCD_WriteData(0x00,i,64+i*8+j-1);
335 4 }
336 3 LCD_WriteData(wdata,i,64+i*8+j);
337 3 LCD_WriteData(wdata,i,64+i*8+j+1);
338 3 wdata=wdata<<2;
339 3 Delay_x10ms(speed*10);
340 3 if(i==7&&j>=4) j=10;
341 3 pause();
342 3 }
343 2 if(buttonplay)
344 2 {
345 3 buttonplay=0;
346 3 if((button==0x04)&&(i>=7)) return 0; //p2.0
347 3 else if(button==0x04||button==0x08) return 2;
348 3 }
349 2 LCD_WriteData(0x00,i,64+i*8+j-2);
350 2 LCD_WriteData(0x00,i,64+i*8+j-1);
351 2 }
352 1 return 2;
353 1 }
354
355 //=============================================
356 //水平移动
357 //0:-->
358 //1:<--
359 //=============================================
360 uchar Ball_MoveP(uchar Data,uchar direction,uchar hang,uint speed,uchar value)
361 {
362 1 int i;
363 1 if(direction)
364 1 {
365 2 for(i=0;i<62;i++)//-->
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 7
366 2 {
367 3 if(i){
368 4 LCD_WriteData(0,hang,64+i-2);LCD_WriteData(0,hang,64+i-1);}
369 3 if(buttonplay)
370 3 {
371 4 buttonplay=0;
372 4 if((button==value)&&(i>=51)) return 0;
373 4 else if(button==value) return 2;
374 4 }
375 3 LCD_WriteData(Data,hang,64+i);LCD_WriteData(Data,hang,64+i+1);
376 3 Delay_x10ms(speed*10);
377 3 i++;
378 3 pause();
379 3 }
380 2 LCD_WriteData(0,hang,64+i-2);LCD_WriteData(0,hang,64+i-1);
381 2 return 2;
382 2 }
383 1 else
384 1 {
385 2 for(i=62;i>0;i--)//<--
386 2 {
387 3 if(i!=62){
388 4 LCD_WriteData(0,hang,64+i+2);LCD_WriteData(0,hang,64+i+1);}
389 3 if(buttonplay)
390 3 {
391 4 buttonplay=0;
392 4 if((button==value)&(i<=10)) return 0;
393 4 else if(button==value) return 1;
394 4 }
395 3 LCD_WriteData(Data,hang,64+i);LCD_WriteData(Data,hang,64+i-1);
396 3 Delay_x10ms(speed*10);
397 3 i--;
398 3 pause();
399 3 }
400 2 LCD_WriteData(0,hang,64+i+2);LCD_WriteData(0,hang,64+i+1);
401 2 return 1;
402 2 }
403 1 }
404
405 void Delay_x10ms(uchar DelayTime) //*******ms延时*****//
406 {
407 1 unsigned char i,j,k;
408 1 for(i=0;i<DelayTime;i++){
409 2 if(buttonplay) break;
410 2 for(j=0;j<10;j++){
411 3 if(buttonplay) break;
412 3 for(k=0;k<45;k++) {if(buttonplay) break;}
413 3 } }
414 1 }
415
416 /*******************************
417 双人游戏
418 ********************************/
419 uchar doubleplay()
420 {
421 1 uchar i,flag,sendball=0,j=0;
422 1 uchar a[3]={0,0,0},b[3]={0,0,0};
423 1 LCD_CLR(L);LCD_CLR(R);
424 1 //画边框
425 1 for(i=0;i<8;i++){//球与信息分割线
426 2 LCD_WriteData(0xFF,i,63);}
427 1 for(i=1;i<7;i++){
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 8
428 2 LCD_WriteData(0xFF,i,127);}//右边线
429 1 put_chinese(chinese[20],0,4,0);//甲
430 1 put_chinese(chinese[21],2,4,0);//乙
431 1 for(;;) {
432 2 LCD_CLR(R);
433 2 LCD_WriteData(0xFF,0,127);
434 2 LCD_WriteData(0xFF,7,127);
435 2 for(i=0;i<8;i++){//球与信息分割线
436 3 LCD_WriteData(0xFF,i,63);}
437 2 for(i=0;i<8;i++){
438 3 LCD_WriteData(0xFF,i,127);}//右边线
439 2 infodisplay();
*** WARNING C209 IN LINE 439 OF MAIN.C: 'infodisplay': too few actual parameters
440 2 if(double_modle_1(sendball)) return 1;
441 2 sendball++;
442 2 if(sendball>=4) sendball=0;
443 2 infodisplay();
*** WARNING C209 IN LINE 443 OF MAIN.C: 'infodisplay': too few actual parameters
444 2 //比分局分控制
445 2 if((gamenum.mark1>=11)&&((gamenum.mark1-gamenum.mark2)>=2))
446 2 {
447 3 a[j]=gamenum.mark1;
448 3 b[j]=gamenum.mark2;
449 3 gamenum.game1++;
450 3 gamenum.mark1=0;
451 3 gamenum.mark2=0;
452 3 put_chinese(chinese[20],0,64,1);
453 3 put_chinese(chinese[13],0,80,1);
454 3 enter();LCD_CLR(R);j++;
455 3 }
456 2 else if((gamenum.mark2>=11)&&((gamenum.mark2-gamenum.mark1)>=2))
457 2 {
458 3 a[j]=gamenum.mark1;
459 3 b[j]=gamenum.mark2;
460 3 gamenum.game2++;
461 3 gamenum.mark1=0;
462 3 gamenum.mark2=0;
463 3 put_chinese(chinese[21],0,64,1);
464 3 put_chinese(chinese[13],0,80,1);
465 3 enter();LCD_CLR(R);j++;
466 3 }
467 2 if(gamenum.game2>=2) {flag=1;break;}
468 2 else if(gamenum.game1>=2) {flag=0;break;}
469 2 }
470 1 infoflash(a,b,flag);
471 1 Delay_x10ms(1000);
472 1 return 1;
473 1 }
474
475 uchar Read_P2()
476 {
477 1 P2=0xFF;
478 1 return(P2&0x0F);
479 1 }
480
481 void infoflash(uchar* a,uchar* b,uchar flag)
482 {
483 1 uchar i;
484 1 put_picture_half(Bmp1,R);
485 1 LCD_CLR(L);
486 1 put_chinese(chinese[20],4,0,0);//甲
487 1 put_chinese(chinese[21],6,0,0);//乙
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 9
488 1 if(flag) put_chinese(chinese[21],0,8,1);
489 1 else put_chinese(chinese[20],0,8,1);
490 1 put_chinese(chinese[13],0,24,1);put_chinese(chinese[14],0,40,1);//shengli
491 1
492 1 put_num(num10[1],2,20,1);
493 1 put_num(num10[2],2,36,1);
494 1 put_num(num10[3],2,52,1);
495 1
496 1 for(i=0;i<3;i++){
497 2 if(a[i]>9)
498 2 put_num(num10[1],4,16+i*16,0);//甲
499 2 else put_num(num10[0],4,16+i*16,0);
500 2 if(a[i]>9)
501 2 put_num(num10[a[i]-10],4,16+i*16+8,0);
502 2 else put_num(num10[a[i]],4,16+i*16+8,0);
503 2
504 2 if(b[i]>9)
505 2 put_num(num10[1],6,16+i*16,0);//乙
506 2 else put_num(num10[0],6,16+i*16,0);
507 2 if(b[i]>9)
508 2 put_num(num10[b[i]-10],6,16+i*16+8,0);
509 2 else put_num(num10[b[i]],6,16+i*16+8,0);}
510 1 enter();
511 1 }
512 uchar double_modle_1(uchar send_id)
513 {
514 1 uchar state=0,value;
515 1 uchar direction;
516 1 put_chinese(chinese[17],4,24,0);//发球
517 1 put_chinese(chinese[16],4,40,0);
518 1 P3=0xFF;
519 1 switch(send_id)
520 1 {
521 2 case 0://甲1发球
522 2 put_num(num10[10],0,53,0);//甲
523 2 put_num(num10[11],2,53,0);
524 2 put_chinese(chinese[20],4,0,0);
525 2 put_num(num10[1],4,16,0);
526 2 do
527 2 {
528 3 button=Read_P2();
529 3 pause();
530 3 if(pauseflag==EXIT) return 1;
531 3 }while(!(button==0x01));
532 2 if(moveflag==ENTER) direction=0;
533 2 else direction=2;
534 2 break;
535 2 case 1://甲2发球
536 2 put_num(num10[10],0,53,0);//甲
537 2 put_num(num10[11],2,53,0);
538 2 put_chinese(chinese[20],4,0,0);
539 2 put_num(num10[2],4,16,0);
540 2 do
541 2 {
542 3 button=Read_P2();
543 3 pause();
544 3 if(pauseflag==EXIT) return 1;
545 3 }while(!(button==0x02));
546 2 if(moveflag==ENTER) direction=6;
547 2 else direction=5;
548 2 break;
549 2 case 2://乙1发球
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 10
550 2 direction=4;
551 2 put_num(num10[10],2,53,0);//乙
552 2 put_num(num10[11],0,53,0);
553 2 put_chinese(chinese[21],4,0,0);
554 2 put_num(num10[1],4,16,0);
555 2 do
556 2 {
557 3 button=Read_P2();
558 3 pause();
559 3 if(pauseflag==EXIT) return 1;
560 3 }while(!(button==0x08));
561 2 if(moveflag==UP) direction=1;
562 2 else direction=4;
563 2 break;
564 2 case 3://乙2发球
565 2 put_num(num10[10],2,53,0);//乙
566 2 put_num(num10[11],0,53,0);
567 2 put_chinese(chinese[21],4,0,0);
568 2 put_num(num10[2],4,16,0);
569 2 do
570 2 {
571 3 button=Read_P2();
572 3 pause();
573 3 if(pauseflag==EXIT) return 1;
574 3 }while(!(button==0x04));
575 2 if(moveflag==UP) direction=7;
576 2 else direction=3;
577 2 break;
578 2 }
579 1
580 1 while(!state)
581 1 {
582 2 moveflag=0;
583 2 if(direction==1) value=0x01;
584 2 else if(direction==0) value=0x08;
585 2 else if(direction==6) value=0x04;
586 2 else if(direction==7) value=0x02;
587 2 switch(direction)
588 2 {
589 3 case 0:
590 3 state=Ball_MoveP(0x03,1,0,speed,value);
591 3 switch(state)
592 3 {
593 4 case 0:
594 4 if(moveflag==ENTER) direction=1;
595 4 else direction=4;
596 4 moveflag=0;
597 4 break;
598 4 case 2://乙犯规,甲得分
599 4 gamenum.mark1++;
600 4 put_chinese(chinese[21],6,10,1);//yi
601 4 break;
602 4 }
603 3 break;
604 3 case 1:
605 3 state=Ball_MoveP(0x03,0,0,speed,value);
606 3 switch(state)
607 3 {
608 4 case 0:
609 4 if(moveflag==ENTER) direction=0;
610 4 else direction=2;
611 4 break;
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 11
612 4 case 1://甲犯规,乙得分
613 4 gamenum.mark2++;
614 4 put_chinese(chinese[20],6,10,1);//jia
615 4 break;
616 4 case 2://乙犯规,甲得分
617 4 gamenum.mark1++;
618 4 put_chinese(chinese[21],6,10,1);
619 4 break;
620 4 }
621 3 break;
622 3 case 2:
623 3 state=Ball_MoveRightDown(speed);
624 3 switch(state)
625 3 {
626 4 case 0:
627 4 if(moveflag==UP) direction=7;
628 4 else direction=3;
629 4 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -