楼主最近还看过
下面就是三菱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;