俄罗斯方块 PLC 编程指南 (俄罗斯方块拼图)

上方就是三菱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左移ONAND左移;

右移P:=NOT右移ONAND右移;

进行P:=进行ANDNOT进行ON;

变形P:=变形ANDNOT变形ON;

左移ON:=左移;

右移ON:=右移;

进行ON:=进行;

变形ON:=变形;

可消行数据:=0;

消弭数据[1]:=0;

消弭数据[2]:=0;

消弭数据[3]:=0;

消弭数据[4]:=0;

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

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

撞后保留检测:=FALSE;

准许降低:=TRUE;

准许左移:=TRUE;

准许右移:=TRUE;

图形可变:=FALSE;

IF进行PTHEN

Gameover:=FALSE;

IFNOT进行THEN(*中止清零*)

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

Gameover:=FALSE;

FORi_tra:=24TO1BY-1DO

FORJ_tra:=16TO1BY-1DO

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

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

预判[i_tra,J_tra]:=FALSE;

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

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

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

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

ELSIF进行POR实时后景数据图Type=0THEN

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

IFGen_实时后景数据图ANDNOTGameoverTHEN

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

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

IF实时后景数据图Type>0AND实时前景数据图Type=0ANDNOTGameoverTHEN(*NEXT上行NOW*)

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

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

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

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

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

FORi_tra:=1TO4DO

FORJ_tra:=1TO4DO

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CASE实时前景数据图TypeOF

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

Init_X:=8;

Init_Y:=24;

IFGX>1ANDGX<15ANDNOT预判[GY,GX-1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]ANDNOT预判[GY,GX+2]THEN

XX1:=GX-1;

XX3:=GX+1;

XX4:=GX+2;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGY<24ANDGY>2ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY-1,GX]ANDNOT预判[GY-2,GX]THEN

YY1:=GY+1;

YY3:=GY-1;

YY4:=GY-2;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGY>1ANDGY<24ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY-1,GX]ANDNOT预判[GY-1,GX+1]THEN

YY1:=GY+1;

YY3:=GY-1;

XX4:=GX+1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGX<16ANDGY<24ANDNOT预判[GY,GX-1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]ANDNOT预判[GY+1,GX+1]THEN

XX1:=GX-1;

XX3:=GX+1;

XX4:=GX+1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGY<24ANDGY>1ANDNOT预判[GY-1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY+1,GX]ANDNOT预判[GY+1,GX-1]THEN

YY1:=GY-1;

YY3:=GY+1;

XX4:=GX-1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGX>1ANDGY>1ANDNOT预判[GY,GX+1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX-1]ANDNOT预判[GY-1,GX-1]THEN

XX1:=GX+1;

XX3:=GX-1;

XX4:=GX-1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGY>1ANDGY<24ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY-1,GX]ANDNOT预判[GY-1,GX-1]THEN

YY1:=GY+1;

YY3:=GY-1;

XX4:=GX-1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGX<16ANDGY>1ANDNOT预判[GY,GX-1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]ANDNOT预判[GY-1,GX+1]THEN

XX1:=GX-1;

XX3:=GX+1;

XX4:=GX+1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGY<24ANDGY>1ANDNOT预判[GY-1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY+1,GX]ANDNOT预判[GY+1,GX+1]THEN

YY1:=GY-1;

YY3:=GY+1;

XX4:=GX+1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGX<16ANDGY<24ANDNOT预判[GY,GX+1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX-1]ANDNOT预判[GY+1,GX-1]THEN

XX1:=GX+1;

XX3:=GX-1;

XX4:=GX-1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGX>1ANDGY<24ANDNOT预判[GY,GX-1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]ANDNOT预判[GY+1,GX]THEN

XX1:=GX-1;

XX3:=GX+1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGY<24ANDGY>1ANDNOT预判[GY-1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX-1]THEN

YY1:=GY-1;

YY3:=GY+1;

XX4:=GX-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=24;

IFGX<16ANDGX>1ANDGY>1ANDNOT预判[GY,GX+1]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX-1]ANDNOT预判[GY-1,GX]THEN

XX1:=GX+1;

XX3:=GX-1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGY>1ANDGY<24ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY-1,GX]ANDNOT预判[GY,GX+1]THEN

YY1:=GY+1;

YY3:=GY-1;

XX4:=GX+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGX<16ANDGY<24ANDNOT预判[GY,GX-1]ANDNOT预判[GY,GX]ANDNOT预判[GY+1,GX]ANDNOT预判[GY+1,GX+1]THEN

XX1:=GX-1;

YY3:=GY+1;

XX4:=GX+1;

YY4:=GY+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGY>1ANDGY<24ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]ANDNOT预判[GY-1,GX+1]THEN

YY1:=GY+1;

XX3:=GX+1;

XX4:=GX+1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX>1ANDGX<16ANDGY<24ANDNOT预判[GY+1,GX-1]ANDNOT预判[GY+1,GX]ANDNOT预判[GY,GX]ANDNOT预判[GY,GX+1]THEN

XX1:=GX-1;

YY1:=GY+1;

YY2:=GY+1;

XX4:=GX+1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=23;

IFGX<16ANDGY>1ANDGY<24ANDNOT预判[GY+1,GX+1]ANDNOT预判[GY,GX+1]ANDNOT预判[GY,GX]ANDNOT预判[GY-1,GX]THEN

XX1:=GX+1;

YY1:=GY+1;

XX2:=GX+1;

YY4:=GY-1;

图形可变:=TRUE;

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

Init_X:=8;

Init_Y:=24;

XX2:=GX+1;

YY3:=GY-1;

XX4:=GX+1;

YY4:=GY-1;

图形可变:=TRUE;

IFGen_实时前景数据图THEN

GX:=Init_X;

GY:=Init_Y;

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

IF(XX1>1)THEN

IF预判[YY1,XX1-1]THEN

准许左移:=FALSE;

IF(XX2>1)THEN

IF预判[YY2,XX2-1]THEN

准许左移:=FALSE;

IF(XX3>1)THEN

IF预判[YY3,XX3-1]THEN

准许左移:=FALSE;

IF(XX4>1)THEN

IF预判[YY4,XX4-1]THEN

准许左移:=FALSE;

IF(XX1<16)THEN

IF预判[YY1,XX1+1]THEN

准许右移:=FALSE;

IF(XX2<16)THEN

IF预判[YY2,XX2+1]THEN

准许右移:=FALSE;

IF(XX3<16)THEN

IF预判[YY3,XX3+1]THEN

准许右移:=FALSE;

IF(XX4<16)THEN

IF预判[YY4,XX4+1]THEN

准许右移:=FALSE;

IFXX1=1ORXX2=1ORXX3=1ORXX4=1THEN

准许左移:=FALSE;

IFXX1=16ORXX2=16ORXX3=16ORXX4=16THEN

准许右移:=FALSE;

IF(YY1>1)THEN

IF预判[YY1-1,XX1]=TRUETHEN

准许降低:=FALSE;

IF(YY2>1)THEN

IF预判[YY2-1,XX2]=TRUETHEN

准许降低:=FALSE;

IF(YY3>1)THEN

IF预判[YY3-1,XX3]=TRUETHEN

准许降低:=FALSE;

IF(YY4>1)THEN

IF预判[YY4-1,XX4]=TRUETHEN

准许降低:=FALSE;

IFYY1=1ORYY2=1ORYY3=1ORYY4=1THEN

准许降低:=FALSE;

IF准许降低AND(秒POR降低)AND进行ANDNOT暂停THEN

IF准许左移AND左移PAND进行ANDNOT暂停THEN

IF准许右移AND右移PAND进行ANDNOT暂停THEN

IF变形PAND进行ANDNOT暂停THEN

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

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

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

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

IFNOT图形可变THEN

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

IFNOT准许降低THEN

IF秒PANDNOT暂停THEN

Cnt:=Cnt+1;

IFCnt>2THEN

撞后保留检测:=TRUE;

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

FORi_tra:=24TO1BY-1DO

FORJ_tra:=16TO1BY-1DO

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

IF进行THEN

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

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

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

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

FORi_tra:=24TO1BY-1DO

FORJ_tra:=16TO1BY-1DO

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

IF撞后保留检测THEN

IFYY1=24ORYY2=24ORYY3=24ORYY4=24ANDNOT准许降低THEN(*碰撞后检测能否完结*)

Gameover:=TRUE;

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

FORi_tra:=24TO1BY-1DO(*碰撞后检测能否消行*)

可消行:=TRUE;

FORJ_tra:=16TO1BY-1DO

IFNOT显示图像[i_tra,J_tra]THEN

可消行:=FALSE;

IF可消行THEN

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

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

FORk_tra:=1TO4DO

IF消弭数据[k_tra]>0THEN

FORi_tra:=消弭数据[k_tra]TO23DO

FORJ_tra:=1TO16DO

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

FORi_tra:=24TO1BY-1DO

FORJ_tra:=16TO1BY-1DO

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

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论