俄罗斯方块的plc程序 点击:981 | 回复:2



凯丶

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2019年6月21日
发表于:2020-03-30 18:48:47
楼主

哪位大神有西门子的俄罗斯方块plc程序



楼主最近还看过



fsjnzhouyan

  • 精华:1帖
  • 求助:7帖
  • 帖子:190帖 | 847回
  • 年度积分:2545
  • 历史总积分:80969
  • 注册:2008年11月05日
发表于:2020-03-31 00:30:35
1楼

下面就是三菱PLC的俄罗斯方块程序。


R_TRIG_1(_CLK:= ONOFF ,Q:=秒P );

TON_E_1(EN:= TRUE ,IN:= NOT 计时启动 ,PT:=  T#1000S ,Q:= 计时启动 ,ET:=扫描周期_us  );        (*产生随机数*)

TIME_TO_DINT_E(TRUE , 扫描周期_us , 扫描周期_D );

DINT_TO_INT_E( TRUE, (扫描周期_D/K100) , 扫描周期_I );

时钟随机数:=扫描周期_I;        





左移P := NOT  左移ON AND  左移;

 右移P := NOT  右移ON AND  右移;

 启动P :=  启动 AND NOT  启动ON;

 变形P :=  变形 AND NOT  变形ON;


 左移ON :=  左移;

 右移ON :=  右移;

 启动ON :=  启动;

 变形ON :=  变形;



 i_tra:= 0;

 J_tra:= 0;

 k_tra := 0;

 可消行数据 := 0;

 消除数据[1] := 0;

 消除数据[2] := 0;

 消除数据[3] := 0;

 消除数据[4] := 0;

 Gen_实时后景数据图 := FALSE;

 Gen_实时前景数据图 := FALSE;

 撞后保存检测 := FALSE;

 允许下降 := TRUE;

 允许左移 := TRUE;

 允许右移 := TRUE;

 图形可变 := FALSE;


IF  启动P THEN

    

   Gameover := FALSE;

END_IF;





IF NOT  启动 THEN          (*停止清零*)

   Gen_实时后景数据图 := FALSE;

   Gameover := FALSE;

   

   FOR  i_tra := 24 TO 1 BY -1 DO

     FOR  J_tra := 16 TO 1 BY -1 DO

       显示图像[ i_tra,  J_tra] := FALSE;

       实时前景数据图[ i_tra,  J_tra] := FALSE;

       预判[ i_tra,  J_tra] := FALSE;

     END_FOR;

   END_FOR;

  

   实时后景数据图Type := 0;

   实时后景数据图Stat := 0;

   实时前景数据图Type := 0;

   实时前景数据图Stat := 0;

ELSIF  启动P OR  实时后景数据图Type = 0 THEN

   Gen_实时后景数据图 := TRUE;

END_IF;


IF  Gen_实时后景数据图  AND NOT Gameover  THEN

   实时后景数据图Type := ( 时钟随机数 MOD 7) + 1;

   实时后景数据图Stat := ( 时钟随机数 MOD 4) + 1;

  

END_IF;





IF  实时后景数据图Type > 0 AND  实时前景数据图Type = 0  AND NOT Gameover THEN        (*NEXT上传NOW*)

   实时前景数据图Type :=  实时后景数据图Type;

   实时前景数据图Stat :=  实时后景数据图Stat;

   Gen_实时前景数据图 := TRUE;

   实时后景数据图Type := 0;

   实时后景数据图Stat := 0;

END_IF;




FOR  i_tra := 1 TO 4 DO

  FOR  J_tra := 1 TO 4 DO

     图形显示Next[ i_tra,  J_tra] := FALSE;

  END_FOR;

END_FOR;





CASE  实时后景数据图Type OF       (*NEXT图形显示*)


  1:   

    IF ( 实时后景数据图Stat = 1 OR  实时后景数据图Stat = 3) THEN

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

       图形显示Next[2, 4] := TRUE;  

    END_IF;

    IF ( 实时后景数据图Stat = 2 OR  实时后景数据图Stat = 4) THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

       图形显示Next[4, 2] := TRUE;

    END_IF;

   

  2:

    IF  实时后景数据图Stat = 1 THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

       图形显示Next[3, 3] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 2 THEN

       图形显示Next[1, 3] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 3 THEN

       图形显示Next[1, 1] := TRUE;

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 4 THEN

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

       图形显示Next[3, 1] := TRUE;

    END_IF;

   

  3:

    IF  实时后景数据图Stat = 1 THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

       图形显示Next[3, 1] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 2 THEN

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

       图形显示Next[3, 3] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 3 THEN 

       图形显示Next[1, 2] := TRUE;

       图形显示Next[1, 3] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;     

    END_IF;

    IF  实时后景数据图Stat = 4 THEN

       图形显示Next[1, 1] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

    END_IF;

    

  4:

    IF  实时后景数据图Stat = 1 THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 2 THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 3 THEN

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

       图形显示Next[3, 2] := TRUE;

    END_IF;

    IF  实时后景数据图Stat = 4 THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;

       图形显示Next[3, 2] := TRUE;

    END_IF;

    

  5:     

    IF ( 实时后景数据图Stat = 1 OR  实时后景数据图Stat = 3) THEN

       图形显示Next[1, 1] := TRUE;

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[2, 3] := TRUE;    

    END_IF;

    IF ( 实时后景数据图Stat = 2 OR  实时后景数据图Stat = 4) THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 1] := TRUE;   

    END_IF;

    

  6: 

    IF ( 实时后景数据图Stat = 1 OR  实时后景数据图Stat = 3) THEN

       图形显示Next[1, 2] := TRUE;

       图形显示Next[1, 3] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;    

    END_IF;

    IF ( 实时后景数据图Stat = 2 OR  实时后景数据图Stat = 4) THEN

       图形显示Next[1, 1] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;

       图形显示Next[3, 2] := TRUE;

    END_IF;

    

  7:

    IF ( 实时后景数据图Stat = 2 OR  实时后景数据图Stat = 4 OR  实时后景数据图Stat = 1 OR  实时后景数据图Stat = 3) THEN

       图形显示Next[1, 1] := TRUE;

       图形显示Next[1, 2] := TRUE;

       图形显示Next[2, 1] := TRUE;

       图形显示Next[2, 2] := TRUE;     

    END_IF;

END_CASE;





CASE  实时前景数据图Type OF

  1:

    IF ( 实时前景数据图Stat = 1 OR  实时前景数据图Stat = 3) THEN

       Init_X := 8;

       Init_Y := 24;

      IF  GX > 1 AND  GX < 15 AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY,  GX + 2] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX + 1;

         YY3 :=  GY;

         XX4 :=  GX + 2;

         YY4 :=  GY;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF ( 实时前景数据图Stat = 2 OR  实时前景数据图Stat = 4) THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GY < 24 AND  GY > 2 AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY - 2,  GX] THEN

         XX1 :=  GX;

         YY1 :=  GY + 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY - 1;

         XX4 :=  GX;

         YY4 :=  GY - 2;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    

    

    

  2:

    

    IF  实时前景数据图Stat = 1 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GY > 1 AND  GY < 24 AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY - 1,  GX + 1] THEN

         XX1 :=  GX;

         YY1 :=  GY + 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY - 1;

         XX4 :=  GX + 1;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 2 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GX < 16 AND  GY < 24 AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY + 1,  GX + 1] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX + 1;

         YY3 :=  GY;

         XX4 :=  GX + 1;

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 3 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GY < 24 AND  GY > 1 AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY + 1,  GX - 1] THEN

         XX1 :=  GX;

         YY1 :=  GY - 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY + 1;

         XX4 :=  GX - 1;

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 4 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GX > 1 AND  GY > 1 AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY - 1,  GX - 1] THEN

         XX1 :=  GX + 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX - 1;

         YY3 :=  GY;

         XX4 :=  GX - 1;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    


  3:

    IF  实时前景数据图Stat = 1 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GY > 1 AND  GY < 24 AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY - 1,  GX - 1] THEN

         XX1 :=  GX;

         YY1 :=  GY + 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY - 1;

         XX4 :=  GX - 1;  

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 2 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GX < 16 AND  GY > 1 AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY - 1,  GX + 1] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX + 1;

         YY3 :=  GY;

         XX4 :=  GX + 1;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 3 THEN 

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GY < 24 AND  GY > 1 AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY + 1,  GX + 1] THEN

         XX1 :=  GX;

         YY1 :=  GY - 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY + 1;

         XX4 :=  GX + 1;

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 4 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GX < 16 AND  GY < 24 AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY + 1,  GX - 1] THEN

         XX1 :=  GX + 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX - 1;

         YY3 :=  GY;

         XX4 :=  GX - 1;

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

  4: 

    IF  实时前景数据图Stat = 1 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GX > 1 AND  GY < 24 AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY + 1,  GX] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX + 1;

         YY3 :=  GY;

         XX4 :=  GX;

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 2 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GY < 24 AND  GY > 1 AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX - 1] THEN

         XX1 :=  GX;

         YY1 :=  GY - 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY + 1;

         XX4 :=  GX - 1;

         YY4 :=  GY;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 3 THEN

       Init_X := 8;

       Init_Y := 24;

      IF  GX < 16 AND  GX > 1 AND  GY > 1 AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY - 1,  GX] THEN

         XX1 :=  GX + 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX - 1;

         YY3 :=  GY;

         XX4 :=  GX;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF  实时前景数据图Stat = 4 THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GY > 1 AND  GY < 24 AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY - 1,  GX] AND NOT  预判[ GY,  GX + 1] THEN

         XX1 :=  GX;

         YY1 :=  GY + 1;

         XX2 :=  GX;

          YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY - 1;

         XX4 :=  GX + 1;

         YY4 :=  GY;

         图形可变 := TRUE;

      END_IF;

    END_IF;

 

  5: 

    IF ( 实时前景数据图Stat = 1 OR  实时前景数据图Stat = 3) THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GX < 16 AND  GY < 24 AND NOT  预判[ GY,  GX - 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY + 1,  GX + 1] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY + 1;

         XX4 :=  GX + 1; 

         YY4 :=  GY + 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF ( 实时前景数据图Stat = 2 OR  实时前景数据图Stat = 4) THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GY > 1 AND  GY < 24 AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY - 1,  GX + 1] THEN

         XX1 :=  GX;

         YY1 :=  GY + 1;

         XX2 :=  GX;

         YY2 :=  GY;

         XX3 :=  GX + 1;

         YY3 :=  GY;

         XX4 :=  GX + 1;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

 

     6:    

    IF ( 实时前景数据图Stat = 1 OR  实时前景数据图Stat = 3) THEN

       Init_X := 8;

       Init_Y := 23;

      IF  GX > 1 AND  GX < 16 AND  GY < 24 AND NOT  预判[ GY + 1,  GX - 1] AND NOT  预判[ GY + 1,  GX] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY,  GX + 1] THEN

         XX1 :=  GX - 1;

         YY1 :=  GY + 1;

         XX2 :=  GX;

         YY2 :=  GY + 1;

         XX3 :=  GX;

         YY3 :=  GY;

         XX4 :=  GX + 1;

         YY4 :=  GY;

         图形可变 := TRUE;

      END_IF;

    END_IF;

    IF ( 实时前景数据图Stat = 2 OR  实时前景数据图Stat = 4) THEN

      

       Init_X := 8;

       Init_Y := 23;

      IF  GX < 16 AND  GY > 1 AND  GY < 24 AND NOT  预判[ GY + 1,  GX + 1] AND NOT  预判[ GY,  GX + 1] AND NOT  预判[ GY,  GX] AND NOT  预判[ GY - 1,  GX] THEN

         XX1 :=  GX + 1;

         YY1 :=  GY + 1;

         XX2 :=  GX + 1;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY;

         XX4 :=  GX;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

    END_IF;

  7:

    IF ( 实时前景数据图Stat = 2 OR  实时前景数据图Stat = 4 OR  实时前景数据图Stat = 1 OR  实时前景数据图Stat = 3) THEN

       Init_X := 8;

       Init_Y := 24;

      IF  GX < 16 AND  GY > 1 THEN

         XX1 :=  GX;

         YY1 :=  GY;

         XX2 :=  GX + 1;

         YY2 :=  GY;

         XX3 :=  GX;

         YY3 :=  GY - 1;

         XX4 :=  GX + 1;

         YY4 :=  GY - 1;

         图形可变 := TRUE;

      END_IF;

      

    END_IF;

 



END_CASE;




IF  Gen_实时前景数据图 THEN

   GX :=  Init_X;

   GY :=  Init_Y;

   预判Stat :=  实时前景数据图Stat;  

END_IF;



IF ( XX1 > 1) THEN

  IF  预判[ YY1,  XX1 - 1] THEN

     允许左移 := FALSE; 

  END_IF;

END_IF;


IF ( XX2 > 1) THEN

  IF  预判[ YY2,  XX2 - 1] THEN

     允许左移 := FALSE;

  END_IF;

END_IF;


IF ( XX3 > 1) THEN

  IF  预判[ YY3,  XX3 - 1] THEN

     允许左移 := FALSE;

  END_IF;

END_IF;


IF ( XX4 > 1) THEN

  IF  预判[ YY4,  XX4 - 1] THEN

     允许左移 := FALSE;

  END_IF;

END_IF;


IF ( XX1 < 16) THEN

  IF  预判[ YY1,  XX1 + 1] THEN

     允许右移 := FALSE;

  END_IF;

END_IF;


IF ( XX2 < 16) THEN

  IF  预判[ YY2,  XX2 + 1] THEN

     允许右移 := FALSE;

  END_IF;

END_IF;


IF ( XX3 < 16) THEN

  IF  预判[ YY3,  XX3 + 1] THEN

     允许右移 := FALSE;

  END_IF;

END_IF;


IF ( XX4 < 16) THEN

  IF  预判[ YY4,  XX4 + 1] THEN

     允许右移 := FALSE;

  END_IF;

END_IF;


IF  XX1 = 1 OR  XX2 = 1 OR  XX3 = 1 OR  XX4 = 1 THEN

   允许左移 := FALSE;

END_IF;

IF  XX1 = 16 OR  XX2 = 16 OR  XX3 = 16 OR  XX4 = 16 THEN

   允许右移 := FALSE;

END_IF;




IF ( YY1 > 1) THEN

  IF  预判[ YY1 - 1,  XX1] = TRUE THEN

     允许下降 := FALSE;

  END_IF;

END_IF;

IF ( YY2 > 1) THEN

  IF  预判[ YY2 - 1,  XX2] = TRUE THEN

     允许下降 := FALSE;

  END_IF;

END_IF;

IF ( YY3 > 1) THEN

  IF  预判[ YY3 - 1,  XX3] = TRUE THEN

     允许下降 := FALSE;

  END_IF;

END_IF;

IF ( YY4 > 1) THEN

  IF  预判[ YY4 - 1,  XX4] = TRUE THEN

     允许下降 := FALSE;

  END_IF;

END_IF;

IF  YY1 = 1 OR  YY2 = 1 OR  YY3 = 1 OR  YY4 = 1 THEN

   允许下降 := FALSE;

END_IF;



IF  允许下降 AND (秒P OR 下降)  AND  启动 AND NOT  暂停 THEN

   GY :=  GY - 1;

END_IF;



IF  允许左移 AND  左移P AND  启动 AND NOT  暂停 THEN

   GX :=  GX - 1;

  

END_IF;



IF  允许右移 AND  右移P AND  启动 AND NOT  暂停 THEN

   GX :=  GX + 1;

END_IF;

IF  变形P AND  启动 AND NOT  暂停 THEN

   预判Stat :=  实时前景数据图Stat;

   实时前景数据图Stat :=  实时前景数据图Stat + 1;

  IF  实时前景数据图Stat > 4 THEN

     实时前景数据图Stat := 1;

  END_IF;

END_IF;

IF NOT  图形可变 THEN

   实时前景数据图Stat :=  预判Stat;

END_IF;



IF NOT  允许下降 THEN

  IF 秒P AND NOT  暂停 THEN

     Cnt :=  Cnt + 1;

  END_IF;

  IF  Cnt > 2 THEN

     撞后保存检测 := TRUE;

     Cnt := 0;

     实时前景数据图Type := 0;

  END_IF;

ELSE

   Cnt := 0;

END_IF;





FOR  i_tra := 24 TO 1 BY -1 DO

  FOR  J_tra := 16 TO 1 BY -1 DO

     实时前景数据图[ i_tra,  J_tra] := FALSE;

  

  END_FOR;

END_FOR;




IF  启动 THEN

   实时前景数据图[ YY1,  XX1] := TRUE;

   实时前景数据图[ YY2,  XX2] := TRUE;

   实时前景数据图[ YY3,  XX3] := TRUE;

   实时前景数据图[ YY4,  XX4] := TRUE;

END_IF;




FOR  i_tra := 24 TO 1 BY -1 DO

  FOR  J_tra := 16 TO 1 BY -1 DO

     显示图像[ i_tra,  J_tra] :=  实时前景数据图[ i_tra,  J_tra] OR  预判[ i_tra,  J_tra];

  END_FOR;

END_FOR;


IF  撞后保存检测 THEN         

  IF  YY1 = 24 OR  YY2 = 24 OR  YY3 = 24 OR  YY4 = 24 AND NOT  允许下降 THEN       (*碰撞后检测是否结束*)

     Gameover := TRUE;

     Gen_实时后景数据图 := FALSE;

  END_IF;

  

  FOR  i_tra := 24 TO 1 BY -1 DO       (*碰撞后检测是否消行*)

     可消行 := TRUE;

     

    FOR  J_tra := 16 TO 1 BY -1 DO

       IF NOT  显示图像[ i_tra,  J_tra] THEN

         可消行 := FALSE;

       END_IF;

    END_FOR;

    

    IF  可消行 THEN

       可消行数据 :=  可消行数据 + 1;

       消除数据[ 可消行数据] :=  i_tra;

    END_IF;

  END_FOR;

  

  FOR  k_tra := 1 TO 4 DO

    IF  消除数据[ k_tra] > 0 THEN

      FOR  i_tra :=  消除数据[ k_tra] TO 23 DO

        FOR  J_tra := 1 TO 16 DO

           显示图像[ i_tra,  J_tra] :=  显示图像[ i_tra + 1,  J_tra];

        END_FOR;

      END_FOR;

    END_IF;

  END_FOR;

  FOR  i_tra := 24 TO 1 BY -1 DO

    FOR  J_tra := 16 TO 1 BY -1 DO

       预判[ i_tra,  J_tra] :=  显示图像[ i_tra,  J_tra];

    END_FOR;

  END_FOR;

END_IF;

















请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8548回
  • 年度积分:24
  • 历史总积分:335295
  • 注册:2011年4月25日
发表于:2020-03-31 09:06:33
2楼


回复内容:

对: fsjnzhouyan 下面就是三菱PLC的俄罗斯方块程序。R_TRIG_1(... 内容的回复!

-------------------------

厉害啊!


热门招聘
相关主题

官方公众号

智造工程师