新闻中心

EEPW首页>嵌入式系统>设计应用> 基于51单片机的双人对战小游戏的实现

基于51单片机的双人对战小游戏的实现

作者: 时间:2016-11-30 来源:网络 收藏
void action_fist1()//第1个人出拳{int i;i=5;fist_change_buff1();shed_blood2();while(i--){display_one_page();}i=5;change_buffer_to1(position1*16);change_buffer_to2(position2*16);}void action_fist2()//第2个人出拳{int i;i=10;fist_change_buff2();shed_blood1();while(i--){display_one_page();}change_buffer_to1(position1*16);change_buffer_to2(position2*16);}void action_leg1()//第1个人出腿{ int i;i=10;leg_change_buff1();shed_blood2();while(i--){//display_one_page1();display_one_page();}change_buffer_to1(position1*16);change_buffer_to2(position2*16);}void action_leg2()//第2个人出腿{int i;i=10;leg_change_buff2();shed_blood1();while(i--){display_one_page();}change_buffer_to1(position1*16);change_buffer_to2(position2*16);}void init_interrupt()//中断位的设置{TMOD=0x11;//定时器T0 T1工作在1模式 16位方式下TH0=63536/256;//2ms一次定时器中断TL0=63536%256;TH1=63536/256;//2ms一次定时器中断TL1=63536%256;EA=1;//开总中断ET0=1;//开定时计数器T0ET1=1;//开定时计数器T1}void scan_key(){while(1){if(blood1==0||blood2==0)break;while(S11&&S12&&S13&&S14&&S21&&S22&&S23&&S24)display_one_page();while(S11||S12||S13||S14||S21||S22||S23||S24){delay(1);if(S11&&S12&&S13&&S14&&S21&&S22&&S23&&S24)display_one_page();elsebreak;}if(S12==0){delay(1);if(S12==0)//1向后的动作{action_back1();}}if(S22==0){delay(1);if(S22==0)//2向后的动作{action_back2();}}else if(S11==0){delay(1);if(S11==0)//1向前的动作{action_forth1();}}else if(S21==0){delay(1);if(S21==0)//2向前的动作{action_forth2();}}else if(S13==0){delay(1);if(S13==0){TR0=1;while(TR0==1){display_one_page();if(S22==0){delay(1);if(S22==0){count_back2=1;}}else if(S21==0){delay(1);if(S21==0){count_forth2=1;}}}action_fist1();}}else if(S23==0){delay(1);if(S23==0){TR1=1;while(TR1==1){display_one_page();if(S12==0){delay(1);if(S12==0){count_back1=1;}}else if(S11==0){delay(1);if(S11==0){count_forth1=1;}}}action_fist2();}}else if(S13==0){delay(1);if(S13==0){TR0=1;while(TR0==1){display_one_page();if(S22==0){delay(1);if(S22==0){count_back2=1;}}else if(S21==0){delay(1);if(S21==0){count_forth2=1;}}}action_fist1();}}else if(S23==0){delay(1);if(S23==0){TR1=1;while(TR1==1){display_one_page();if(S12==0){delay(1);if(S12==0){count_back1=1;}}else if(S11==0){delay(1);if(S11==0){count_forth1=1;}}}action_fist2();}}else if(S14==0){delay(1);if(S14==0){TR0=1;while(TR0==1){display_one_page();if(S22==0){delay(1);if(S22==0){count_back2=1;}}else if(S21==0){delay(1);if(S21==0){count_forth2=1;}}}action_leg1();}}else if(S24==0){delay(1);if(S24==0){TR1=1;while(TR1==1){display_one_page();if(S12==0){delay(1);if(S12==0){count_back1=1;}}else if(S11==0){delay(1);if(S11==0){count_forth1=1;}}}action_leg2();}}}}void shed_blood1(){if(position2==1){if(position1==2){if(blood1>0)blood1--;}}else if(position2==2){if(position1>0){if(blood1>0)blood1--;}}}void shed_blood2(){if(position1==1){if(position2==2){if(blood2>0)blood2--;}}else if(position1==2){if(position2>0){if(blood2>0)blood2--;}}}void handle1() interrupt 1{EA=0;TH0=63536/256;//2ms一次定时器中断TL0=63536%256;time0_count++;if(time0_count==200){time0_count=0;TR0=0;if(count_back2==1){count_back2=0;action_back2();}else if(count_forth2==1){count_forth2=0;action_forth2();}}EA=1;}void handle2() interrupt 3{EA=0;TH1=63536/256;//2ms一次定时器中断TL1=63536%256;time1_count++;if(time1_count==200){time1_count=0;TR1=0;if(count_back1==1){count_back1=0;action_back1();}else if(count_forth1==1){count_forth1=0;action_forth1();}}EA=1; }
上一页 1 2 3 下一页

评论


技术专区

关闭