QB问题到那里去问,那里有几个QB高手
http://www.kele520.com/bbs/list.asp?boardid=144

解决方案 »

  1.   

    潘正伯,车克健写的《quick basic 程序设计》很好,我有quick basic程序如果需要,白送。
      

  2.   

    谭浩强老师的书可以。技巧与基础并重!用于理论学习不错。
    另外我记得台湾的一些QB站点上有比较专业的原代码,比如用QB写的打蜜蜂等一些程序,非常适合进阶使用。
      

  3.   

    同意flashboy的
    谭浩强的很好
    包括了所有初级中级的内容
    (QB的高级编程最好不学,因为几乎没什么用)
      

  4.   

    潭版的QB不推荐你用,因为那只是简单把BASIC的教材改成QB的,并没有真正发挥QB的特色。不过目前也没有很好的QB书籍,所以只好在这里提醒你一些注意的地方:1、SCREEN N(0<N<12情况下)、WHILE……WEND、GOTO,这些语句不要在QB里用,因为它们在QB中已经被新的语句代替或者没有实际意义。2、尽量用DIM语句申明变量类型,而不要简单用变量申明符号(如%、$、#、&、!)。3、不是需要,尽量不用默认的类型(Single)。而是根据需要定义类型。4、尽量使用Type定义自己的自定义结构类型,并作为Function和Sub的参数传递。5、多熟悉Binary方式操作文件,而少用Random和顺序文件。6、以下命令和函数多加注意,懂得这些命令和函数将使你在竞赛里具有绝对优势:
    OUT语句
    INP函数
    POKE语句
    PEEK函数
    VARPTR函数
    VARSEG函数
    BLOAD语句
    BSAVE语句
    DEF SEG语句
    INKEY$函数
    On Key(n) Gosub陷阱
    On Timer(n) Gosub陷阱
    SCREEN语句(尤其注意SCREEN 12和SCREEN 13模式)
    PALETTE函数如果有需要,我会贴上来一些有趣的程序给你参考。
      

  5.   

    OUT语句   写硬件I/O端口
    INP函数   读硬件I/O端口
    WAIT语句  等待端口数据。
    硬件I/O端口的语句总共有三个,别落下了DEF SEG语句 设置段地址
    POKE语句    写内存
    PEEK函数    读内存
    VARSEG函数  取得变量的段地址
    VARPTR函数  取得变量的偏移地址(类似VB的VarPtr)
    SADD函数    取得编程字符串的偏移地址(类似VB的StrPtr)
    BLOAD语句   从文件读取数据到内存
    BSAVE语句   把内存数据写到文件INKEY$函数  可监测按键On Key(n) Gosub 行/标号   键盘陷阱
    On Timer(n) Gosub 行/标号 时间陷阱
    On Error GoTo 行/标号     错误陷阱
    ERR函数                   返回错误号
    ERL函数                   返回出错的行号SCREEN语句(尤其注意SCREEN 12和SCREEN 13模式)
    SCREEN 12和SCREEN 13 分别对应 VGA标准的 VGA12h、VGA13h 模式
    VGA12h分辨率较高(640*480),但按位面方式映射显存,直接写屏操作复杂
    VGA13h分辨率较低(320*200),但它支持256种调色版。而且由于所占显存64000字节,小于65535字节,可以放入&HA000~&HAFFF这一段显存映射地址,不采用位平面,每一个字节对应一个像素。所以很多DOS游戏(如 仙剑奇侠传、轩辕剑外传-枫之舞、……、命令与征服(一代)、魔兽争霸2、……)都用这种方式PALETTE函数   设置调色版
      

  6.   

    这些是QB4.0新增命令,QBasic中没有$INCLUDE  包含头文件,如“'$INCLUDE: 'QB.BI'”。必须前面有一个“'”Interrupt 调用BIOS中断,必须要包含QB.BI(QB7.1中是QBX.BI),并以“/L”方式启动QB。使用 PALETTE函数 设置调色板 没有 直接读写端口快
    SUB CSet (Index%, R%, G%, B%)
      OUT &H3C8, Index%
      OUT &H3C9, R%
      OUT &H3C9, G%
      OUT &H3C9, B%
    END SUB
      

  7.   

    'VGA13h下直接写屏示例DIM I AS INTEGER, J AS INTEGER, AddC AS INTEGER
    DIM TempLng AS LONGSCREEN 13
    DEF SEG = &HA000DO
        IF INKEY$ = CHR$(27) THEN EXIT DO '按Esc退出    TempLng = 0
        FOR I = 0 TO 199
            FOR J = 0 TO 319
                'PSET (j, i), (J + addc) AND &HFF '
                POKE TempLng, (J + AddC) AND &HFF '左右移动
                'POKE TempLng, (I + AddC) AND &HFF '上下移动            TempLng = TempLng + 1        NEXT J    NEXT I
        AddC = (AddC + 1) AND &HFFLOOPSCREEN 0
    WIDTH 80, 25END