基于飞思卡尔NXP的MKE02单片机的俄罗斯方块KEIL5平台C代码可移植显示成绩

本文介绍了一款基于飞思卡尔NXP MKE02单片机的俄罗斯方块游戏,使用KEIL5平台,展示开机画面、游戏过程和成绩,并提供了部分关键代码。代码存在一些已知问题,如向左超出边界处理及移动时的异常,但不影响游戏进行。文章包含开机画面显示、成绩显示以及游戏核心的形状下落逻辑。
摘要由CSDN通过智能技术生成

 

代码还有BUG:向左回超出边界,左右移动时,钻进空格中会悬停,懒得改了,  过两天有时间再说吧,其它不影响玩,主函数重新上电后会继续开始游戏,需要的自己重新写下循环就好了

//部分代码见下,完整代码和原理图见压缩包

 

 

//开机画面显示,延时5s
void display_start_page(void)
{
    for(char i = 0; i < 8; i++)
    {
        Display_temp_win1[0][i] = Tetris_Num[11][i];        
    }
    for(char i = 0; i < 16; i++)
    {
        Display_temp_win2[0][i] = Tetris_All_Shape[21][i];        
    }
    Display_win1();
    Display_win2();
    //延时2s 
    delay(50000);
    delay(50000);
    
    win_clear(2);
}

//显示成绩
void display_grade(void)
{
    for(char i = 0; i < 8; i++)
    {
        Display_temp_win1[0][i] = Tetris_Num[Tetris_grade+1][i];        
    }

    Display_win1();
}

/*************************************************************************
Function:      void tetris_rolls(char Tetris_Shape_Num)
Description:   WIN_2   下落任意形状  满行消除
Input:         none
Output:        none
Return:        none
Others:        ...改变Right_step_now的值,左右移动,改变Tetris_Shape_Num的值旋转,满行消除
*************************************************************************/
void tetris_rolls(void)
{
      //显示16次
            for(char roll_step = 0; roll_step < 16; roll_step++)
      {             
                    //显示这次的每一行        
                        for ( char y = 0; y < 16; y++)          
                        {      
                                if(y <= roll_step)
                                {        
                                        //如果为负
                                        if(Right_step_now < 0)
                                        {               
                                              //有下降空间
                        if( ( Display_temp_win2_backup[0][roll_step] & (Tetris_All_Shape[Tetris_Shape_Num][15 - roll_step + roll_step] << (-Right_step_now)) ) == 0)
                                                {
                                                             if(roll_step>=3)
                                                             {
                                                                     if(((Display_temp_win2_backup[0][roll_step - 0] & Tetris_All_Shape[Tetris_Shape_Num][15 - 0] << (-Right_step_now)) == 0)\
                                                                        &&((Display_temp_win2_backup[0][roll_step - 1] & Tetris_All_Shape[Tetris_Shape_Num][15 - 1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值