gvbasic吧 关注:94贴子:679

【教程】文曲星GVBasic使用指南v1.0[官方版]

只看楼主收藏回复

作者:金远见公司      http://www.ggv.com.cn   

目录:
    
1.BASIC语言的发展与文曲星GVBASIC 
1.1 序言---关于本手册的说明 
1.2 BASIC语言的历史及发展 
1.3 什么是GVBASIC语言 
1.4 GVBASIC语言和其它BASIC语言的异同 
1.3.1 GVBASIC与其它BASIC语言相同之处 
1.3.2 GVBASIC与其它BASIC语言不同之处 
1.3.3 GVBASIC与其它BASIC语言同名函数在使用中的差异 
2.GVBASIC语言知识要点 
2.1 文曲星屏幕显示特点 
2.2 GVBASIC中的符号定义 
2.3 GVBASIC中定义了几种数据类型 
2.4 GVBASIC中的一些其它规定 
2.5 变量及数组定义方法 
例: 随机产生10个二位数,并放入数组,后打印出最大,小数 
2.6 流程控制 
例: 将24小时制转为12小时制 
2.7 循环结构语句 
例:打印九九乘法表. 
2.8 过程及函数 
2.9 数学运算函数和语句 
2.10 字符串 
2.11 简单输入/输出 
例:产生一个动态的字符 
2.12 图形 
2.13 声音 
2.14 文件 
例: 打开一个数据文件.... 
3.GVBASIC编辑环境介绍 
3.1 GVBASIC编辑环境按键一览表 
3.2 什么是GVBASIC助手 
3.3 GVBASIC出错代码表 
4.GVBASIC指令用法一览及例程 
4.1 GVBASIC指令用法一览表 
变量及数组定义函数 
选择结构流程语句 
循环结构语句 
自定义函数及子过程语句 
数学运算函数 
字符串处理函数 
输入/输出处理函数 
图形及声音处理函数 
文件操作函数 
程序编辑及调试函数 
5. GVBASIC范例程序 
四则运算 
翻牌成对游戏




1楼2006-12-02 15:49回复
    1.4.1.文曲星GVBASIC与其它BASIC语言名称及用法均相同的命令及语句

    命令及函数名 用途 用法 

    与数组定义相关的 

    DATA 与数组有关的 相同 
    READ 与数组有关的 相同 
    RESTORE 与数组有关的 相同 
    DIM 与数组有关的 相同 
     

    流程控制 

    IF...THEN...ELSE 选择结构语句 相同 
    IF..THEN... 选择结构语句 相同 
    WHILE..WEND 循环控制 相同 
    FOR...TO..STEP...NEXT 循环控制 相同 
    DEF FN 定义函数 相同 
    GOSUB...RETURN 分支到当前程序模块中的子程序 相同 


    字符串处理 


    ABS() 返回数的绝对值 相同 
    ATN() 返回用弧度表示的正切值 相同 
    COS() 返回弧度的余弦 相同 
    EXP() 返回e的指定次幂 相同 
    INT() 返回不大于给定数的最大整数 相同 
    LOG() 返回一个数值的自然对数 相同 
    RND() 产生0-1之间的随机数 相同 
    SGN() 返回数的符号值 相同 
    SIN() 返回弧度的下弦 相同 
    SQR() 返回数的平方根 相同 
    TAN() 返回弧度的正切 相同 
    ASC() 返回字符串每一个字符的ASCII码 相同 
    CHR$() 返回指定的ASCII码对应的字符 相同 
    HEX$() 返回十进制数的十六进制的字符串 相同 
    LEFT$() 返回从字符串左边开始的的指定数目的字符 相同 
    LEN() 返回字符的长度 相同 
    MID$() 返回从字符串指定位置开始的指定数目字符 相同 
    RIGHT$() 返回从字符串右端开始的指定数目的字符 相同 
    STR$() 返回把数值数据转换为字符后的字符串 相同 
    INVERSE 反显字符 相同 
    VAL() 把一个数字字符转换为相应的数值 相同 
     输入/输出相关命令 
    CLS 清除屏幕 相同 
    INKEY$ 从键盘读入一个字符 相同 
    INPUT 从键盘读取输入 相同 
    LOCATE 把文件光标定位到指定的行,列 相同 
    SPC() 在PRINT语句中跳过指定个数的空格 相同 
    WRITE 把数据输出到屏幕或文件 相同 
    图形 
    CIRCLE 画圆 相同 
    LINE 画线 相同 
    BOX 画矩形 相同 
    DRAW 画点 不同 
    声音 
    PLAY 演奏指定的音乐 相同 
    BEEP 使扬声器发出一个短促的声音 相同 
     
    文件 
    OPEN 打开文件 
    INPUT# 从顺序文件读取一个字符串 相同 
    GET 从随机和二进制文件读取数据 相同 
    PUT 把数据写入随机或二进制文件 相同 
    LOF 返回随机文件长度 相同 
    CLOSE 关闭文件 相同 
    EOF() 当文件指针位于文件结尾时返回-1 相同 
    其它 
    TRACE 单步跟踪程序执行 相同 
    LET 将变量赋值 
    SWAP 交换两下变量的值 相同 
    SYSTEM 退出BASIC系统 相同


    3楼2006-12-02 15:54
    回复
      1.4.2 在其它版本BASIC语言上存在而在文曲星GVBASIC中没有的语句

      命令及语法 用途 原因 可否用其它命令代替 
       流程控制 
      SELECT CASE...END SELECT 多条件多分支选择语句 未开发 可以有IF...THEN...或者ON .GOTO语句代替 
      DO...LOOP 直到条件为真时结束循环 未开发 可以有WHILE...WEND代替 
      CALL 调用机器语言 考虑系统安全 ------------ 
      CHAIN 把控制转移到另一个程序 未开发 可以用ON..GOSUB代替 
      FUNCTION 定义语言函数 未开发 可用DEF FN 
      CDBL 把数作为双精度值返回 较少使用 
       数组相关 
      LBOUND 返回数组一个维的最小合法下标 可不用 -- 
      UBOUND 返回数组一个维的最大合法下标 可不用 -- 
      OPTION BASE 设置0或者1作为默认最小合法下标 可不用 -- 
       字符串   
      LCASE$() 返回以小写字母组成的字符串 未开发 可自主编程代替 
      LTRIM$() 返回删除字符串左端空格后的字串 较少使用 可自主编程代替 
      UCASE$() 返回以大写字母组成的字符串 未开发 可自主编程代替 
      SPACE$() 返回由指定数目空格字符组成的字串 较少使用 可自主编程代替 
       输入/输出   
      CSRLIN() 返回当前光标所在行 未开发 可用不同名函数POS()代替 
      PRINT USING 按指定格式显示数值 不需要 -- 
      TAB() 指它格式输出 不需要 -- 
      WIDTH 定义屏幕或其它设备的行列数或宽度 不需要 -- 
       图形 
      COLOR 设定前景和背景色 单色不需要 -- 
      SCREEN 设定当前屏幕模式 未开发 -- 
      WINDOW 设定逻辑坐标系统 未开发 -- 
      GET() 把图像从屏幕复制到内存中的数组 未开发 -- 
      PUT() 把图像从内存数组复制到决屏幕 未开发 -- 
       声音 
      SOUND 使扬声器产生指定频率的音调 不需要 -- 
       文件操作 
      LOC() 返回文件的当前位置 较少使用 -- 
      SEEK() 移到文件中的指定位置 未开发 -- 
      LOCK() 为文件或文件中一条记录加锁 不需要 -- 





      --------------------------------------------------------------------------------


      1.4.3GVBASIC和其它版本BASIC同名函数或语句使用的差异.
      1.PRINT语句 用途:向屏幕光标位置显示数值,字符串数据
      由于文曲星屏幕的局限, PRINT 语句在使用中和PC机的BASIC有所不同.
      PRINT 语句中的的逗号在PC机上表示按分区方式显示, 而在GVBASIC中则表示换行输出.
      例如:
      PRINT 1,2,3
      在PC上输出为: 1 2 3
      在文曲星上输出为: 1
       2
       3
      而分号在其它BASIC和GVBASIC中作用相同,即按紧凑格式输出
      例如:
      PRINT 1;2;3
      在PC机上输出为: 123
      在文曲星上输出为: 123 


      2.DRAW语句 用途:画连续直线.
      在GVBASIC中DRAW语句相对简化,单独使用该语句时只能画出一个点.
      而在其它BASIC中DRAW语句相对复杂一些,可以画出各个方向上的的连续的直线.
      例如:
      在其它版本BASIC中: DRAW "BM100,100;F60;L120;E60" 表示画一个三角形.
      而在GVBASIC中上述语句是错误的. 当然在GVBASIC中也可画出三角形, 但要用DRAW语句配合FOR循环语句才可以或者用LINE语句也可,应用起来相对复杂一些


      4楼2006-12-02 15:54
      回复
        三.GVBASIC编辑环境介绍 

        3.1GVBASIC环境下编辑和帮助按键览表

        编辑状态 
        键名称 功 能 
        F1 更改输入模式(插入,覆盖) 
        F2 删除 
        ← → 左右移动光标 
        SHIFT 切换英数中文输入 
        CR(输入) 确认一行程序输入结束 
        AC(退出) 不能退出GVBASIC,可使用BASIC指令SYSTEM退出BASIC 
        HELP(帮助 进入BASIC帮助文件 
        帮助状态 
        HELP(帮助) 切换帮助方式(内容,索引) 
        AC(退出) 退出BASIC帮助到BASIC编辑状态 
        ←↑→↓ 移动光标,浏览内容时为翻屏 
        字母键 在索引帮助状态,可以跳到以相应字母开始的指令索引区,如果已到该字母区,则在该字母区循环移动光标 
        CR(输入) 确认浏览项 
        运行状态 
        AC(跳出) 可以跳出死循环 
         

        3.2 什么是GVBASIC助手
         GVBASIC助手是远见公司为GVBASIC专门开发的辅助工具, 有了它可以使程序的编辑变得更加方便,
        因此强烈推荐各位在编写GVBASIC程序时一定要用GVBASIC助手.例如: 在GVBASIC环境中如果要修改一条语句则必须用EDIT命令逐条去修改,而有了GVBASIC助手您就只需把光标移动到要修改的地方就可以了.
        GVBASIC助手编辑环境下各键使用方法:
        按→ ↑ ← ↓移动光标到输入位置
        按<F1>键 切换插入覆盖模式
        按<F2>键 删除字符
        按<跳出>键到保存菜单


        7楼2006-12-02 15:57
        回复
          ]1220 OPERATOR(BAACKET+2)=6
          ]1299 REM 为计算表达式的值做准备
          ]1300 J=0: I=0 :EXPROI=0
          ]1310 WHILE INT(I+0.5)<INT(NUM+0.5)
          ]1320 IF OPERATOR(J)=5 THEN J=J+1:EPS(EXPROI)=-5:EXPROI=EXPPOI+1
          ]1330 EPS(EXPPOI)=OPERAND(I):EXPROI=EXPPOI+1
          ]1340 ON OPERATOR(J) GOSUB 2000,2100,2200,2300
          ]1350 IF OPERATOR(J)=6 THEN J=J+1:EPS(EXPPOI)=-6:EXPPOI=EXPPOI+1:GOTO 1340
          ]1360 I=I+1:j=J+1
          ]1370 WEND
          ]1390 EPS(EXPPOI)=-7
          ]1499 REM 计算运算式的值
          ]1500 ST1=0: ST2=0: EXPPOI=0
          ]1510 STACK2(ST2)=-7:ST2=ST2+1
          ]1520 CH=EPS(EXPPOI):EXPPOI=EXPPOI+1
          ]1530 WHILE NOT (CH-7 AND STACK2(ST2-1)=-7)
          ]1540 IF CH>0 THEN GOSUB 1570 ELSE GOSUB 1580 
          ]1550 WEND
          ]1560 GOTO 1600
          ]1570 STACK1(ST1)=CH:ST1=ST1+1:CH=EPS(EXPPOI):EXPPOI=EXPPOI+1
          ]1575 RETURN
          ]1580 ON PRIORITY(-STACK2(ST2-1)-1,-CH-1) GOSUB 3100,3200,3300 '注意ON语句的用法
          ]1585 RETURN
          ]1599 REM 判断用户答案是否正确
          ]1600 IF STACK1(ST1-1)<0 THEN GOTO 1020 
          ]1610 ANSWER=STACK1(ST1-1)
          ]1615 CLS
          ]1620 FOR K=0 TO EXPPOI-1
          ]1630 IF EPS(K)>=0 THEN PRINT EPS(K);ELSE ON -EPS(K) GOSUB 2510,2520,2540,2550,2560
          ]1650 NEXT K
          ]1660 PRINT "=";
          ]1670 INPUT REPLY$
          ]1675 IF LEN(REPLY$)>0 AND VAL(REPLY$)>0 AND VAL(REPLY$=0 AND REPLY$<>"0" THEN GOTO 1615
          ]1680 IF ABS(VAL(REPLY$)-ANSWER)<.01 THEN GOSUB 1910 ELSE GOSUB 1930
          ]1690 IF TIMES <> AMOUNT THEN PRINT "按任意键继续...";:GOSUB 3900
          ]1700 NEXT TIMES
          ]1710 PRINT "总共答对:";RIGHT;" 答错:";AMOUNT-RIGHT
          ]1720 PRINT "是否继续(Y/N)";
          ]1730 CON$=INKEY$
          ]1740 IF CON$<>"n" THEN GOTO 1000
          ]1800 GOTO 200
          ]1910 PRINT "太棒了!^_^":PRINT=RIGHT+1
          ]1920 RETURN
          ]1930 PRINT "加油喔!":PRINT "正确答案:";:IF ANSWER<1 THEN PRINT "0";
          ]1940 PRINT INT (ANSWER*1000+0.5)/1000
          ]1950 RETURN
          ]2000 EPS(EXPROI)=-1:EXPPOI=EXPPOI+1
          ]2010 RETURN
          ]2100 EPS(EXPPOI)=-2:EXPPOI=EXPPOI+1
          ]2110 RETURN
          ]2200 EPS(EXPPOI)=-3:EXPPOI=EXPPOI+1
          ]2210 RETURN
          ]2300 EPS(EXPPOI)=-4:EXPPOI=EXPPOI+1
          ]2310 RETURN
          ]2510 PRINT "+";:RETURN
          ]2520 PRINT "-";:RETURN
          ]2530 PRINT "X";:RETURN
          ]2540 PRINT "/";:RETURN
          ]2550 PRINT "(";:RETURN
          ]2560 PRINT ")";:RETURN
          ]3100 STACK2(ST2)=CH:ST2=ST2+1
          ]3310 CH=EPS(EXPPOI):EXPPOI=EXPPOI+1
          ]3120 RETURN
          ]3200 ST2=ST2-1:STACK2(ST2)=0
          ]3210 CH=EPS(EXPPOI):EXPPOI=EXPPOI+1
          ]3220 RETURN
          ]3300 ST2=ST2-1:THETA=STACK(ST2):STACK2(ST2)=0
          ]3310 ST1=ST1-1:NUM2=STACK1(ST1):STACK1(ST1)=0
          ]3320 ST1=ST1-1:NUM1=STACK1(ST1):STACK1(ST1)=0
          ]3330 ON-THETA GOSUB 3500,3600,3700,3810
          ]3340 STACK1(ST1)=ANSWER:ST1=ST1+1
          ]3350 IF THETA=-4 AND ANSWER=9999 THEN GOTO 1020
          ]3360 RETURN
          ]3500 ANSWER=NUM1+NUM2: RETURN
          ]3600 ANSWER=NUM1-NUM2:RETURN
          ]3700 ANSWER=NUM1*NUM2:RETURN
          ]3800 ANSWER=NUM1/NUM2:RETURN
          ]3810 IF NUM2=0 THEN ANSWER=9999 ELSE ANSWER=NUM1/NUM2
          ]3820 RETURN
          ]3900 KEYVAL$=CHR$(255)
          ]3910 WHILE 1
          ]3920 IF KEYVAL$<>INKEY$ THEN GOTO 3940
          ]3930 WEND
          ]3940 RETURN
          ]4001 DATA 3,3,1,1,1,3,3
          ]4002 DATA 3,3,1,1,1,3,3
          ]4003 DATA 3,3,3,3,1,3,3
          ]4004 DATA 3,3,3,3,1,3,3
          ]4005 DATA 1,1,1,1,1,2,0
          ]4006 DATA 3,3,3,3,0,3,3
          ]4007 DATA 1,1,1,1,1,0,2
          ]9999 END


          --------------------------------------------------------------------------------
          


          13楼2006-12-02 15:59
          回复

            ***翻牌成对****

            ]10 GRAPH
            ]20 DIM POSXY$(18),CHARXY%(18,2),OPFLAG%(18),DELFLAG%(18),OPCUNT%(18)
            ]21 DIM NUM$(9),TEMP1$(18)
            ]30 FLAG%=1:TOTAL%=0;SUM%=0:STAY%=10:TIMER=0:CUOCOUNT%=0
            ]31 BLK1X%=2:BLK1Y%=1:BLK2X%=2:BLK2Y%=1
            ]33 GOSUB 1700
            ]40 CLS
            ]50 FOR I=1 TO 18
            ]60 OPFLAG%(I)=0:DELFLAG%(I)=0:OPCOUNT%(I)=0
            ]70 NEXT I
            ]80 GOSUB 900: GOSUB 1000: GOSUB 1600: GOSUB 1500
            ]90 LET X%=1:LET Y%=1:STARTFLAG%=0;TIMER=0
            ]100 IF TOTAL%=18 THEN GOSUB 1900:GOTO 200
            ]110 STAY%=1: GOSUB 1600
            ]111 LOCATE X%,Y%: PRINT " "
            ]112 IF PEEK(199)<128 THEN 173
            ]120 M1$=INKEY$
            ]125 LOCATE X%,Y%:PRINT "■";
            ]130 IF M1$=CHR$(23) THEN GOSUB 300
            ]140 IF M1$=CHR$(22) THEN GOSUB 400
            ]150 IF M1$=CHR$(20) THEN GOSUB 500
            ]160 IF M1$=CHR$(21) THEN GOSUB 600
            ]170 IF M1$=CHR$(13) THEN GOSUB 1100
            ]171 IF M1$=CHR$(27) THEN 190
            ]173 STAY%=1: GOSUB 1600
            ]174 LOCATE X%,Y%: PRINT " ";
            ]180 GOTO 100
            ]190 CLS: LOCATE 2,3: PRINT "退出";
            ]200 CLS
            ]201 END
            ]300 REM SUB OPEN -LEFT *****************<<<<<<<<<<<<<<<<
            ]310 STARTFLAG%=1
            ]320 GOSUB 700
            ]330 IF Y%=1 AND X%=1 THEN Y%=11:X%=3: GOTO 350 
            ]340 IF Y%=1 THEN X%=X%-1:Y%=11 ELSE Y%=Y%-2
            ]350 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
            ]360 IF OPFLAG%(XYSRT1%)=1 OR DELFLAG%(XYSRT1%)=1 THEN GOTO 330
            ]380 OLD$=M1$
            ]390 RETURN
            ]400 REM SUB OPEN -RIGHT ****************<<<<<<<<<<<<<<<<
            ]401 STARTFLAG%=1
            ]410 IF TOTAL%=18 THEN GOTO 490 
            ]420 GOSUB 700
            ]430 IF Y%=11 AND X%=3 THEN Y%=1:X%=1:GOTO 450
            ]440 IF Y%=11 THEN X%=X%+1:Y%=1 ELSE Y%=Y%+2
            ]450 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
            ]460 IF DELFLAG%(XYSRT1%)=1 OR OPFLAG%(XYSRT1%)=1 THEN GOTO 430
            ]480 OLD$=M1$
            ]490 RETURN
            ]500 REM SUB OPEN -UP^^^^^^^^^^^^^^^^^^^^^^
            ]501 STARTFLAG%=1
            ]510 GOSUB 700
            ]520 IF X%=1 THEN X%=3 ELSE X%=X%-1
            ]530 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
            ]540 IF OPFLAG%(XYSRT1%)=1 OR DELFLAG%(XYSRT1%)=1 THEN GOTO 520
            ]580 OLD$=M1$
            ]590 RETURN
            ]600 REM SUB OPEN -DOWN ^^^^^^^^^^^^^^^^^^^^^^^^^^
            ]601 STARTFLAG%=1
            ]610 GOSUB 700
            ]620 IF X%=3 THEN X%=1 ELSE X%=X%+1
            ]630 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
            ]640 IF OPFLAG%(XYSRT1%)=1 OR DELFLAG%(XYSRT1%)=1 THEN GOTO 620
            ]680 RERUTN
            ]700 REM SUB SOPEN -RESTORE ***************************
            ]710 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
            ]720 IF DELFLAG%(XYSRT1%)=1 OR OPFLAG%(XYSRT1%)=1 THEN GOTO 740 
            ]730 LOCATE X%,Y%:PRINT "■";
            ]740 RETURN
            ]800 REM read----Number
            ]820 N=0
            ]830 READ CH$
            ]840 WHILE ASC(CH$)<>48+TMP%
            ]850 READ CH$
            ]855 WEND
            ]856 FOR I=1 TO 9: READ NUM$(I):NEXT I
            ]860 DATA "0","苣","菡","菰","蓣","蓐","葳","蒇","蕨","蕤"
            ]861 DATA "1","睃","眭","睦","瞵","睥","瞍","睢","瞧","睫"
            ]826 DATA "2","呔","嘻","喳","嗒","啖","叨","嗡","
            ]863 DATA "3","蛳","蚊","蜩","螨","蟒","嚏","蜓","蜞","蛴"
            ]864 DATA "4","蹯","蹊","跄","跟","跖","硗","蹂","蹰","踔"
            ]865 DATA "5","疳","疟","癃","瘾","瘼","疠","瘛","疽","痈"
            ]866 DATA "6","宥","寡","褰","蹇","搴","謇","甯","窦","窳"
            ]867 DATA "7","崦","研","岘","嵴","峒","崛","嵝","峋","崾"
            ]868 DATA "8","堞","垅","埒","垤","塥","垭","埚","墒"
            ]869 DATA "9","漭","澌","渫","潆","滠","溽","滹","滤","淠"
            


            14楼2006-12-02 15:59
            回复
              ]890 RETURN
              ]900 REM reNdomIze-XY-POS
              ]930 TMP%=INT(RND(1)*9)
              ]931 IF TMP%=0 THEN 930
              ]932 K=1
              ]935 LOCATE 1,18: PRINT TMP%
              ]938 GOSUB 800
              ]940 FOR I=1 TO 18
              ]941 IF K=10 THEN K=1
              ]942 TEMP1$(I)=NUM$(K)
              ]943 K=K+1
              ]950 NEXT I
              ]960 I=0:K=1
              ]970 FOR I=0 TO 17
              ]971 IF I=17 THEN POSXY$(K)=TEMP1$(1):GOTO 990
              ]980 N=INT(RND(1)=(18-I))
              ]981 IF N=0 THEN GOTO 980
              ]983 POSXY$(K)=TEMP1$(N):K=k+1: TEMP1$(N)=TEMP1$(18-I)
              ]984 NEXT I
              ]990 RETURN
              ]1000 REM PUTCHAR
              ]1010 I=1
              ]1020 FOR POSX=1 TO 3 STEP 1
              ]1030 FOR POSY=1 TO 11 STEP 2
              ]1040 LOCATE POSX,POSY: PRINT POSXY$(I);
              ]1050 CHARXY%(I,0)=POSX:CHARXY%(I,1)=POSY: I=I+1
              ]1060 NEXT POSY
              ]1070 NEXT POSX
              ]1090 RETURN
              ]1100 REM OPEN A CARD
              ]1110 IF STARTFLAG%=0 THEN X%=1: Y%=1
              ]1120 XL1%=X%-1:YL1%=(Y%+1)/2:XYSRT1%=XL1%*6+YL1%
              ]1130 OPFLAG%(XYSRT1%)=1
              ]1140 LOCATE X%,Y%: PRINT " ";
              ]1150 LOCAT CHARXY%(XYSRT1%,0),CHARXY%(XYSRT1%,1): PRINT POSXY$(XYSRT1%);
              ]1154 FLAG%=FLAG%+1:OPCOUNT%(XYSRT1%)=OPCOUNT%(XYSRT1%)+1
              ]1160 IF FLAG%/2-INT(FLAG%/2)<>0 THEN FLAG%=1 ELSE FLAG%=0
              ]1170 IF FLAG%=0 THEN CHAR1$=POSXY$(XYSRT1%): BLK1X%=X%: BLK1Y%=Y%: GOTO 1180 
              ]1171 IF FLAG%=1 THEN CHAR2$=POSXY$(XYSRT1%): BLK2X%=X%: BLK2Y%=Y%: GOSUB 1200 
              ]1180 GOSUB 400
              ]1190 RETURN
              ]1120 REM PEI DUI(Y/N)? rem FLAG%=1--->OPeN: FLAG%=0---->No OPEN
              ]1240 IF CHAR1$=CHAR2$ THEN GOSUB 1300
              ]1250 IF CHAR1$<>CHAR2$ THEN GOSUB 1400
              ]1290 RETURN
              ]1300 REM Pel Dul(Y)->Erase 2 block ''''''''''''''
              ]1310 LOCATE BLK1X%,BLK1Y%: PRINT " ";
              ]1320 LOCATE BLK2X%,BLK2Y%: print " ";
              ]1330 XL1%=BLK1X%-1:YL1%=(BLK1Y%+1)/2:XYSRT1%=XL1%*6+YL1%
              ]1340 XL1%=BLK2X%-1:YL1%=(BLK2Y%+1)/2:XYSRT2%=XL1%*6+YL1%
              ]1350 DELFLAG%(XYSRT1%)=1: DELFLAG%(XYSRT2%)=1
              ]1360 TOTAL%=TOTAL%+2
              ]1370 IF OPCOUNT%(XYSRT1%)=1 AND OPCOUNT%(XYSRT2%) THEN GOTO 1371
              ]1371 SUM%=SUM%+20: GOTO 1380
              ]1374 SUM%=SUM%+10
              ]1380 LOCATE 2,14: PRINT "得分";
              ]1382 LOCATE 2,18: PRINT " ";
              ]1383 LOCATE 2,18: PRINT SUM%;
              ]1384 LOCATE 3,14: PRINT "翻错"
              ]1385 LCOATE 3,18: PRINT " "
              ]1386 LOCATE 3,18: PRINT CUOCOUNT%;
              ]1390 RETURN
              ]1400 REM Pel DuI(N)->Close 2 blk#########################
              ]1410 XL1%=BLKX%-1:YL1%=(BLK1Y%+1)/2:XYSRT1%=XL1%*6+YL1%
              ]1420 XL1%=BLK2X%-1: YL1%=(BLK2Y%+1)/2:XYSRT2%=XL1%*6+YL1%
              ]1422 OPFLAG%(XYSRT1%)=0: OPFLAG%(XYSRT2%)=0:CUOCOUNT%=CUOCOUNT%+1
              ]1425 STAY%=1: GOSUB 1600
              ]1430 LOCATE CHARXY%(XYSRT2%,0),CHARXY%(XYSRT2%,1): PRINT POSXY$(XYSRT2%);
              ]1440 LOCATE BLK2X%,BLK2Y%: PRINT "■";
              ]1450 LOCATE BLK1X%,BLK1Y%: PRINT "■";
              ]1460 IF OPCOUNT%(XYSRT%)>3 OR OPCOUNT%(XYSRT2%)>3 THEN GOSUB 1800
              ]1470 LOCATE 2,14: PRINT "得分";
              ]1472 LOCATE 2,18: PRINT " ";
              ]1473 LOCATE 2,18: PRINT SUM%;
              ]1474 LOCATE 3,14: PRINT "翻错";
              ]1475 LOCATE 3,18: PRINT " ";
              ]1476 LOCATE 3,18: PRINT CUOCOUNT%;
              ]1490 RETURN
              ]1500 REM BLOCK
              ]1510 LOCATE 1,14: PRINT "难度";
              ]1515 LOCATE 1,19: PRINT NAN%;
              ]1520 FOR LINEX=1 TO 3 STEP 1
              ]1530 FOR LINEY=1 TO 11 STEP 2
              ]1540 LOCATE LINEX,LINEY: PRINT "■";
              ]1550 NEXT LINEY
              ]1560 NEXT LINEX
              ]1590 RETURN
              ]1600 REM sub
              ]1610 TM1=PEEK(1131)
              ]1620 TM2=PEEK(1131)
              ]1640 IF TM1=TM2 THEN GOTO 1630
              ]1650 STAY%=STAY%-1
              ]1660 IF TIMER=1 THEN LOCATE 1,18: PRINT " J";:LOCATE 1,18:PRINT STAY%;
              ]1670 TM1=TM2
              ]1680 WEND
              ]1682 LOCATE 1,18: PRINT " ";
              ]1690 RETURN
              ]1700 REM NAN% du
              ]1710 CLS
              ]1720 LOCATE 2,4: PRINT "难度";
              ]1730 locate 3,4: PRINT "请选择(1-9):";
              ]1735 TIMER=1
              ]1741 PLAY "CDEF"
              ]1742 PLAY "DD"
              ]1743 PLAY "L8 AG L2A P2 L8 GFED L2 C L1 D P1"
              ]1760 CMD$=INKEY$
              ]1761 IF CMD$="b" THEN NAN%=1: GOTO 1780
              ]1762 IF CMD4="n" THEN NAN%=2: GOTO 1780
              ]1763 IF CMD$="m" THEN NAN%=3: GOTO 1780
              ]1763 IF CMD$="g" THEN NAN%=4: GOTO 1780
              ]1765 IF CMD$="h" THEN NAN%=5: GOTO 1780
              ]1766 IF CMD$="j" THEN NAN%=6: GOTO 1780
              ]1767 IF CMD$="t" THEN NAN%=7: GOTO 1780
              ]1768 IF CMD$="y" THEN NAN%=8: GOTO 1780
              ]1769 IF CMD$="u" THEN NAN%=9: GOTO 1780
              ]1770 IF CMD$=CHR$(13) THEN NAN%-0: GOTO 1780 ELSE 1760
              ]1775 LOCATE 1,18: PRINT " "
              ]1780 LOCATE 1,18: PRINT NAN%
              ]1790 STAY%=30-NAN%*3
              ]1799 RETRUN
              ]1800 REM SUB SCORE
              ]1810 IF SUM%-5 <0 THEN SUM%-5 <0 THEN SUM%-5 <0 THEN SUM%-0 ELSE SUM%=SUM%-5
              ]1820 RETURN
              ]1900 REM End_sub
              ]1910 CLS: LOCATE 2,6: PRINT "真棒!";
              ]1920 LOCATE 4,2: PRINT "欢迎下次光临!"
              ]1930 STAY%=8: GOSUB 1600
              ]1950 RETURN
              ]1960 RETURN


              15楼2006-12-02 15:59
              回复
                ===========THE END===========


                16楼2006-12-02 16:00
                回复
                  有不懂的,发贴子问吧


                  17楼2006-12-03 11:41
                  回复
                    • 221.225.217.*
                    太感谢了


                    18楼2006-12-31 16:34
                    回复
                      • 222.240.252.*
                      太精彩了


                      19楼2007-01-18 10:46
                      回复
                        • 218.26.209.*
                        真的不错!!!我看得眼都花


                        20楼2007-10-27 13:24
                        回复
                          • 202.107.245.*
                          很不错啊


                          21楼2007-10-28 18:30
                          回复
                            • 219.129.45.*
                            太棒


                            22楼2008-05-15 00:47
                            回复
                              http://zxrobin01.ys168.com/
                              这个链接里面有一些教程,有官方的,还有我自己收集的一些,还有LAVA和汇编的。总之东西也不算太少吧。这是我高中的时候玩文曲星的时候建的,已经两三年不玩了,但是一直坚持登陆,不至于让这个站挂掉。如果有谁需要刻意去看看,认为是广告的就当没看见吧。
                              对文曲星编程仍然很怀恋啊,呵呵


                              IP属地:北京23楼2008-06-21 04:07
                              收起回复