好久没写GVB了,都快忘记了,
上一段时间抽空写了个俄罗斯方块的GVB程序,
发来给大家看看。
第一遍写完后,慢的无法忍受。
已经优化过两次算法,但还是很慢,权当一个样品吧。
使用了键盘映射,是NC1020的,NC系列应该差不多。
以下内容为程序代码:
1 : REM 作者:梁飞,网名:o_o,代码虫子
10 CLEAR:GRAPH:LOCATE 3,6:PRINT "loading...":DIM A(22,12),P(6,3,3),Q(6,3,3):RESTORE
20 FOR I=0 TO 6:FOR J=0 TO 3:FOR L=1 TO 3:READ P(I,J,L):READ Q(I,J,L):NEXT:NEXT:NEXT
30 FOR I=0 TO 10:A(21,I)=1:A(I,0)=1:A(I+11,0)=1:A(I,11)=1:A(I+11,11)=1:NEXT
40 V=0:U=1:D=21:LVL=0:SPD=9:SCR=0:CLS:LOCATE 3,1:PRINT "level:0","speed:9","score:0";
50 LINE 111,0,111,80:LINE 152,0,152,80:LINE 159,0,159,80:BOX 88,0,111,23
100 GOSUB 4400:GOSUB 4350:GOSUB 4100:S$="ready":GOSUB 4300:GOSUB 4600
500 B=0:S=NS:T=NT:GOSUB 4100:BOX 92,4,107,19,1,0
510 SWAP S,NS:SWAP T,NT:O=1:R=3:C=-3:GOSUB 4010:SWAP S,NS:SWAP T,NT
520 O=1:R=1:C=5:GOSUB 4010
1100 TT=T:RR=R:CC=C:K=PEEK(199):IF K=141 OR K=148 OR K=160 OR K=157 THEN POKE 199,0
1200 IF K<>141 THEN 1300 ELSE S$="pause":GOSUB 4300:GOSUB 4600
1300 IF K=157 THEN 10
2000 IF K=148 THEN TT=T+U:TT=TT+(TT<0)*4-(TT>3)*4:GOSUB 4200:IF Z>0 THEN 1100
2100 I=PEEK(188):I=(I=247)-(I=127)
2110 IF I<>0 THEN CC=C+I:GOSUB 4200:IF Z>0 THEN POKE 188,255:1100
2300 IF K=160 THEN Z=0:WHILE Z=0:RR=RR+1:GOSUB 4200:WEND:RR=RR-1:GOSUB 4000:GOTO 2500
2400 B=B+1:IF B>=9-SPD THEN B=0:RR=R+1 ELSE RR=R+(PEEK(192)=247)
2410 IF RR=R THEN 3000 ELSE GOSUB 4200:IF Z=0 THEN 3000
2420 TT=T:CC=C:GOSUB 4200:IF Z=0 THEN 3000 ELSE RR=R
2500 RL=0:FOR I=0 TO 3:A(R+P(S,T,I),C+Q(S,T,I))=1:NEXT
2505 IF D>R+P(S,T,3)THEN D=R+P(S,T,3):GOSUB 4450
2510 FOR I=R+P(S,T,1)TO R+P(S,T,3)STEP-1:IF I>20 THEN 2550
2520 J=1:WHILE J<11 AND A(I,J):J=J+1:WEND:IF J=11 THEN RL=RL+1:2550
2530 IF RL=0 THEN 2550
2540 FOR J=1 TO 10 :A(I+RL,J)=A(I,J):NEXT
2550 NEXT:IF RL=0 THEN 2590
2555 FOR I=R+P(S,T,3)-1 TO D STEP-1:FOR J=1 TO 10:A(I+RL,J)=A(I,J):NEXT:NEXT
2560 BOX 112,D*4-4,151,(D+RL)*4-5,1,0
2565 FOR I=D+RL TO R+P(S,T,1):FOR J=1 TO 10:O=A(I,J):NR=I:NC=J:GOSUB 4050:NEXT:NEXT
2570 FOR I=D TO D+RL-1:FOR J=1 TO 10:A(I,J)=0:NEXT:NEXT:D=D+RL:GOSUB 4450
2580 SCR=SCR+(RL=1)+(RL=2)*3+(RL=3)*7+(RL=4)*13:GOSUB 4330:V=+1:IF V=20 THEN V=0:GOSUB 4310
2590 IF D>1 THEN 500
2600 FOR I=1 TO 4:BOX 112,0,151,79,1,2:FOR J=1 TO 800:NEXT:NEXT
2610 POKE 199,0:S$="over!":GOSUB 4300:GOSUB 4500:GOTO 10
3000 IF TT<>T OR RR<>R OR CC<>C THEN GOSUB 4000
3100 GOTO 1100
4000 O=0:GOSUB 4010:T=TT:R=RR:C=CC:O=1:GOSUB 4010:RETURN
4010 FOR I=0 TO 3:NC=C+Q(S,T,I):NR=R+P(S,T,I):GOSUB 4050:NEXT:RETURN
4020 IF A(I+RL,J)<>A(I,J)THEN A(I+RL,J)=A(I,J):O=A(I,J):NR=I+RL:NC=J
4050 X=NC*4+108:Y=NR*4-4:IF Y>=0 AND Y<80 THEN BOX X,Y,X+3,Y+3,0,O:LINE X+1,Y+1,X+2,Y+2,O
4060 RETURN
4100 I=RND(1)*7:NS=(I>1)+(I>2)+(I>3)+(I>4)+(I>5)+(I>6):I=RND(1)*4:NT=(I>1)+(I>2)+(I>3)
4110 RETURN
4200 Z=0:FOR I=0 TO 3:NC=CC+Q(S,TT,I):NR=RR+P(S,TT,I):Z=Z+A(NR,NC):NEXT:RETURN
4300 GOSUB 4350 :LOCATE 1,2:PRINT S$:GOSUB 4350
4305 FOR I=1 TO 4:FOR J=1 TO 800:NEXT:GOSUB 4350 :NEXT:RETURN
4310 LVL=LVL+(LVL<9):SPD=SPD+(SPD>0):GOSUB 4350:LOCATE 3,7:PRINT LVL:GOSUB 4350
4320 GOSUB 4350:LOCATE 4,7:PRINT SPD:GOSUB 4350:RETURN
4330 GOSUB 4350:LOCATE 5,7:PRINT SCR;:GOSUB 4350:RETURN
4350 BOX 1,0,55,16:BOX 3,2,53,14,1,2:RETURN
4400 BOX 92,26,108,44,1,0:CIRCLE 100,38,8:BOX 100+U*2,30,100+U*8,40,1,0
4410 LINE 100-U*2,26,100+U*2,30:LINE 100-U*2,34,100+U*2,30:RETURN
4450 BOX 154,0,157,80,1,0:BOX 154,D*4-4*(D>0),157,80,1,1:RETURN
4500 POKE 199,0:Z=ASC(INKEY$):IF Z=27 THEN POKE 199,155 ELSE IF Z=29 THEN 10
4510 RETURN
4600 GOSUB 4500:IF Z=20 THEN U=-U:GOSUB 4400
4610 IF Z=22 OR Z=23 THEN SPD=SPD+(Z=22)*(SPD<9)-(Z=23)*(SPD>0):GOSUB 4320
4620 IF S$<>"ready" OR(Z=19)*(D>11)+(Z=14)*(D<21)=0 THEN 4640
4630 D=D-(Z=19):L=(INT(D/2)=D/2):J=L:FOR I=1 TO 10:J=(J=0)*(Z=19):A(D,I)=J:O=J
4635 NR=D:NC=I:GOSUB 4050:NEXT:D=D+(Z=14):GOSUB 4450
4640 IF Z<>13 THEN 4600
4650 S$="start":GOSUB 4300:RETURN
5000 DATA 0,2,0,1,0,-1,2,0,1,0,-1,0,0,2,0,1,0,-1,2,0,1,0,-1,0
5010 DATA 1,0,0,1,0,-1,1,0,0,-1,-1,0,0,1,0,-1,-1,0,1,0,0,1,-1,0
5020 DATA 1,1,1,0,-1,0,1,-1,0,1,0,-1,1,0,-1,0,-1,-1,0,1,0,-1,-1,1
5030 DATA 1,0,1,-1,-1,0,0,1,0,-1,-1,-1,1,0,-1,0,-1,1,1,1,0,1,0,-1
5040 DATA 1,1,1,0,0,-1,1,-1,0,-1,-1,0,1,1,1,0,0,-1,1,-1,0,-1,-1,0
5050 DATA 1,0,1,-1,0,1,1,1,0,1,-1,0,1,0,1,-1,0,1,1,1,0,1,-1,0
5060 DATA 1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1
分享到:
相关推荐
在GVB-MP2的原型理论中,GVB-MP2不能正确退化回相应的单参考态微扰(SR-MP2)极限。通过在H0中恰当引入有限数目的单双激发之间的耦合项,使在趋于极限情况下,保证了 GVB-MP2具有正确的收敛行为,改正了原有的理论框架中...
对于GVB-GD和CDAN-GD培训说明在README.md在和分别。 引文 如果您使用此代码进行研究,请考虑引用: @inproceedings{cui2020gvb, title={Gradually Vanishing Bridge for Adversarial Domain Adaptation}, author=...
Vertretungsplan GVB 这只是一个小脚本,可以从柏林Gabriele-von-Bülow-Gymnasium的替代计划中获取最新数据,并发送电子邮件报告。 由于他们使用进行替代计划,因此该项目也可以在其他网站上使用。 安装 在您的...
液晶显示屏的学习,对于电子爱好者是一个不错的选择。
string是字符串,在内存中占4个字节,最多可以存2^31个字符长的字符串 integer是整形,在内存中占4个字节; double是双精度浮点数,占8个字节;
flutter_web_browser 一个flutter插件,可使用和打开网页。 此插件正在开发中,API可能会更改。入门安装从pub安装库: dependencies: flutter_web_browser: "^0.14.0"导入库import 'package:flutter_web_browser/...
开发团队的引擎,简化了Kubernetes上基于容器的... OpenDev CI / CD 2018(温哥华)-https: GVB3kKocKi4 目录 为什么? 我为什么要将其 我为什么要使用它 如何适应 为什么还要使用它 快速开始 步骤1:安装 最简
codegen/用于生成GVB代码的软件包 doc/ VM内部文件 doc/bytecode.md GVB的文档,govm的字节码表示 doc/instructions.md VM指令集的文档 examples/用GVA编写的示例程序,govm类似于汇编的IR gvas/ govm汇编器。 从...