`
javatar
  • 浏览: 1704602 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

[原创]文曲星GVB - 俄罗斯方块

阅读更多

好久没写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
分享到:
评论

相关推荐

    对多组态微扰理论的一些改进# (2003年)

    在GVB-MP2的原型理论中,GVB-MP2不能正确退化回相应的单参考态微扰(SR-MP2)极限。通过在H0中恰当引入有限数目的单双激发之间的耦合项,使在趋于极限情况下,保证了 GVB-MP2具有正确的收敛行为,改正了原有的理论框架中...

    GVB:对抗域适应渐渐消失的代码(CVPR2020)

    对于GVB-GD和CDAN-GD培训说明在README.md在和分别。 引文 如果您使用此代码进行研究,请考虑引用: @inproceedings{cui2020gvb, title={Gradually Vanishing Bridge for Adversarial Domain Adaptation}, author=...

    vertretungsplan-gvb:从替代计划中获取教师姓名,并在找到条目后发送邮件

    Vertretungsplan GVB 这只是一个小脚本,可以从柏林Gabriele-von-Bülow-Gymnasium的替代计划中获取最新数据,并发送电子邮件报告。 由于他们使用进行替代计划,因此该项目也可以在其他网站上使用。 安装 在您的...

    12864液晶vb编程资料

    【VB编程基础与12864液晶显示器的交互】 在VB编程中,了解基本的数据类型至关重要。`String`类型用于存储字符串,占用4个字节的内存空间,最大可以存储2^31个字符。`Integer`是整型,同样占用4个字节,而`Double`是...

    gaussian09手册

    - **GVB**:组态变分法。 - **HF**:哈特里-福克方法。 - **Huckel**:休克尔方法。 - **INDO**:半经验方法。 - **Integral**:积分计算。 - **IOp**:输入输出选项。 - **IRC**:内在反应坐标。 - **...

    广联达产品新的ID(更新至2018年4月) 包含 GTJ2018 GQI2018

    广联达清标系统GVB3.0 - **产品简介**:用于清标的软件。 - **特点**:支持自动评分,提高清标效率。 ### 45. 广联达电子标书GEB3.0 - **产品简介**:用于制作电子标书的专业软件。 - **特点**:支持多种格式的...

    flutter_web_browser:Flutter插件,可使用Chrome自定义标签和SFSafariViewController打开网页

    flutter_web_browser 一个flutter插件,可使用和打开网页。 此插件正在开发中,API可能会更改。入门安装从pub安装库: dependencies: flutter_web_browser: "^0.14.0"导入库import 'package:flutter_web_browser/...

    k8s-app-engine:适用于k8s的应用程序交付引擎

    开发团队的引擎,简化了Kubernetes上基于容器的... OpenDev CI / CD 2018(温哥华)-https: GVB3kKocKi4 目录 为什么? 我为什么要将其 我为什么要使用它 如何适应 为什么还要使用它 快速开始 步骤1:安装 最简

    AVL_SBBM_Tesla-Model3LR-2018_WP1_GlobalVehicleBenchmarking

    全球车辆基准测试(GVB)作为AVL电池测试的一部分,通过评估多达10个属性来描述车辆行为。针对特斯拉Model 3的测试在2018年2月至5月期间在美国密歇根和俄亥俄州进行,涉及6个主要属性的评估。报告将这些测试数据进行...

    govm:使用Go的运行时的字节码VM

    codegen/用于生成GVB代码的软件包 doc/ VM内部文件 doc/bytecode.md GVB的文档,govm的字节码表示 doc/instructions.md VM指令集的文档 examples/用GVA编写的示例程序,govm类似于汇编的IR gvas/ govm汇编器。 从...

    键盘指法顺口溜(电脑打字)

    - **frt(伏日退)**,**gvb左食指(哥末拨);** - **jyu(鸡已无)**,**hnm右食指(何那么)**? ##### 2.2 解析 - **小指**: 小指负责击打`;`键和`p`键。 - **无名指**: 无名指负责击打`l`键和`o`键。 - **中指**: 中指...

    ORCA软件 修改用的

    4. GVB(Gaussian basis Valence Bond):结合价键理论和基组方法,适合处理多重态问题。 此外,ORCA还提供了诸如几何优化、频率分析、反应路径搜索、电荷分布分析、前线轨道分析、非绝热动力学模拟等功能,这些...

Global site tag (gtag.js) - Google Analytics