俄罗斯方块程序(3)

2019-03-15 22:11

fk_move(); //等待设置速度关数开始

delay(10);

}

for (i=0;i<4;i++)

{

fk_map[i]=0xffff; //背景映象

} delay(3000); for (i=4;i

{

if (i<(automapn+4))

fk_map[i]=rand()-1|~FULLMAP; //背景映象

else

fk_map[i]=~FULLMAP; //背景映象 fk_refline(i); //刷新1行背景

}

fk_show(); //显示分数 // fk_new(); //产生新方块

}

//--------------------------------------------------------------------------//

void fk_move(void) //移动方块

{

unsigned char temp;

if(KeyTest()) //检查有无按键

{

putinbuf(KeyGetCode()); //按键码输入接收缓冲区

} if (checkin())

{

temp=getbyte();

if (temp!=0) Lcd16WrCharhh(12,0,temp); if (temp!=0) Lcd16WrChar(15,0,temp);

putchar(temp);

} else

temp=0xff; //无键设为无效键用于下移方块

temp -= '0'; switch(temp)

{ default:

if (--moven) //游戏难度

break; else {

moven=(252>>speed)+2;

} case 2: //下移

if (fk_run) //游戏中下移

{ if(fk_y>0)

{ fk_y--; if(fk_chk())

{

fk_y++; //有冲突取消操作,执行碰撞组合

fk_add(); //方块合并 //产生新方块

} }

else //方块到底也执行碰撞组合

{

fk_add(); //方块合并

} }

else //初始化时

{

fk_new(); //产生新方块

} break; case 0: //下移到底

while((fk_y>0)&&~(fk_chk())) //一直下移直到冲突

{ fk_y--;

} moven=1;

fk_y++; //恢复到未冲突位置

break; case 3: //右移 case 6: //右移

if (fk_run) //游戏中右移

{ if(fk_x<12)

{ fk_x++; if(fk_chk())

fk_x--;//有冲突取消操作

} }

else //初始化时

{ automapn++; automapn &= 0x0f;

fk_show(); //显示分数

} break; case 1: //左移 case 4: //移

if (fk_run) //游戏中左移

{ if(fk_x>0)

{ fk_x--; if(fk_chk())

fk_x++;//有冲突取消操作

} }

else //初始化时

{ speed++; speed &= 0x07;

fk_show(); //显示分数

} break; case 9: //右转 case 8: //右转 case 5: //右转

if (fk_run) //游戏中右转

{ fk_r++; if(fk_chk())

fk_r--; //有冲突取消操作

fk_r &= 0x03;

}

else //初始化时

{ fk_run = 1;

} break; case 7: //左转

if (fk_run) //游戏中右转

{ fk_r--; if(fk_chk())

fk_r++; //有冲突取消操作

fk_r &= 0x03;

}

else //初始化时

{ fk_run = 1;

} break;

}

if((fk_run)&& ((fk_x!=fk_oldx)||(fk_y!=fk_oldy)||(fk_r!=fk_oldr)) )

{

fk_reffk(); //刷新显示

} rand();

} /*

// ---------------------------------------------- // 32字节

void delay(uint x)

{ uint i,j; for (i=0; i

} }

//--------------------------------------------------------------------------//

void main(void) // 测试用

{ serial_init();

Lcd6963Init(); //Lcd6963复位 Lcd16Reset(); //Lcd16复位 Serial_main(); // 串口测试用主函数 Lcd16main(); //Lcd16临时测试主程序 Lcd6963main(); //Lcd6963测试用

fk_init(); //方块初始化

while(1) { if (~fk_run)

fk_init(); //方块初始化 fk_move(); //移动方块

delay(10);

} }

*/

把Keil工程和Proteus6.5的仿真文件一起打包了 点 这 里 可 以 完 全 下 载 //本压缩包包含完整的Keil工程和Proteus仿真文件,

//如果你装有Proteus6.5,可以解压后直接运行Lcd-6963256-2.DNS,然后点击播放键|>运行, //用鼠标在串口点击一下就可以用电脑的键盘控制了,当然也可以用电路图上的键盘控制,不过那个键盘不是很好操作哦:-)


俄罗斯方块程序(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:德育职责

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: