上方就是三菱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网,欢迎收藏本网址,收藏不迷路哦!
添加新评论