基于8051stc板的飞机大战
想法概述
本次大作业的灵感来自于方凯晴老师的讲座,当时突然就想到飞机大战这个游戏,然后就联系了一下板子的 电路构造,决定采用八个LED灯做我方飞机的走位路线,而八个数码管做为敌机的出现路线,数码管上的数字为敌机血量。当我方飞机瞄准敌方飞机开炮时,可减去敌方血量,敌方血量为零时,攻击有效,战绩加1。战斗结束时,未消灭敌机数量大于三架,则闯关失败,数码管上显示战绩以及单词“lose”;闯关成功,则数码管上显示战绩以及单词“yeah”。
电路结构
-
数码管和LED灯电路
- 数码管
-
LED灯
导航按键电路
蜂鸣器电路
游戏原理
代码块
中断延时:
void timer0() interrupt 1 //将数码管的显示周期提到中断器里
{
TH0=(65535-1000)/256; //重载定时器
TL0=(65535-1000)%256;
flag++;
if(flag==3000) //分频
{
flag=0;
flag_weixuan++;
}
}
数组定义减血:
case 0x03 : //导航按键向里
for(i=0;i<=7;i++)
{
if(led==judge[i])//判断我方飞机走位位置
flag_judge=i;
}
if(compare[flag_judge]==weixuan[flag_weixuan])//判断我方飞机是否瞄准敌方飞机
{
if(duanxuan[flag_weixuan]!=0x3f){
//减血过程
for(j=1;j<=16;j++)
{
if(duanxuan[flag_weixuan]==judge_duanxuan[j])
{
j=j-1;
duanxuan[flag_wei