回 帖 发 新 帖 刷新版面

主题:QB能编游戏吗?

能编什么有西啊,好期待啊

回复列表 (共18个回复)

11 楼

当然了!只是画图比较麻烦。我的一个同学编了一个与cpu战斗(多个)的程序,可以使用必杀技,也可以用防护罩,用了736行。

12 楼

恩 理论上可以的 要的只是时间
说是游戏嘛 猜数字 这种的么...一小时就搞定了

13 楼

可以编,不过无法专业化而已

14 楼

DEFINT A-Z

CONST TRUE = 1
CONST FALSE = 0
CONST Interrupt = 1             
CONST Normal = 0
CONST Public2Private = 0        
CONST Private2Public = 1
CONST High = 20                 
CONST Wide = 10                 
CONST perSide = 2               
CONST Top = 50                  
CONST Left = 180
CONST HighPixel = 400           
CONST WidePixel = 200           
CONST ToUp = 0                  
CONST ToDown = 2
CONST ToLeft = 1
CONST ToRight = 3
CONST KeyUp = 72                
CONST KeyDown = 80
CONST KeyLeft = 75
CONST KeyRight = 77
CONST KeySpace = 32
CONST KeyEnter = 13
CONST KeyESC = 27
CONST KeyBackSpace = 8
CONST KeyTab = 9
CONST KeyANY = -1
CONST KeyNone = 256
CONST ScanEnter = 28            'ɨÃèÂë
CONST ScanESC = 1
CONST GetNormal = 0             '¶Á¼üÅÌ»º³å·½Ê½
CONST GetLast = 1
CONST FalshDelay = 2000         
CONST LineDelay = 8000          
CONST MoveDelayTime = 3500      
CONST Black = 1                 
CONST Grey = 0
CONST Bright = 2
CONST Dark = 3
CONST Falsh = 4
CONST Red = 4
CONST Green = 5
CONST Blue = 6
CONST Yellow = 7
CONST Pin = 8
CONST Sky = 9
CONST DeepGreen = 10
CONST DeepRed = 11
CONST TypeHigh = 0
CONST TypeLow = 1
CONST TypeNothing = 2
CONST SaveRecord = 0            
CONST SaveHighest = 1
CONST ReadRecord = 2
CONST ReadOther = 3
CONST ReadHighestScore = 4      
CONST ReadHighestLevel = 5      
CONST DeleteRecord = 6
CONST CreateRecord = 7
CONST FindRecord = 8
CONST Must = 1                  
CONST WarnSound = 1000
CONST ErrSound = 1200
CONST MaxDiffcult = 30
CONST NewRecord = 1
CONST UnitMax = 7
CONST ToBlack = 1
CONST CloseScreen = 0

TYPE SPRITE
    Names AS STRING * 4
    Left AS INTEGER
    Top AS INTEGER
    w AS INTEGER
    h AS INTEGER
    c AS INTEGER
    Direction AS INTEGER
    Offset AS INTEGER
    sPoint AS INTEGER
END TYPE

TYPE FileRecord
    Names AS STRING * 6
    Score AS INTEGER
    Level AS INTEGER
END TYPE

15 楼

DIM SHARED perLevel AS INTEGER
DIM SHARED perWide  AS INTEGER
DIM SHARED perHigh  AS INTEGER
DIM SHARED Table(High, Wide) AS INTEGER
DIM SHARED MoveDelay(MaxDiffcult) AS INTEGER
DIM SHARED isTrue AS INTEGER
DIM SHARED PicUnit(UnitMax) AS SPRITE
DIM SHARED BasePic(5000) AS INTEGER
DIM SHARED NowUnit AS SPRITE
DIM SHARED NextUnit AS SPRITE
DIM SHARED TempSprite AS SPRITE
DIM SHARED Diffcult AS INTEGER
DIM SHARED TempRecord AS FileRecord
DIM SHARED PublicValue AS INTEGER
DIM SHARED AttribCustom AS INTEGER
DIM SHARED LevelCustom AS INTEGER
DIM SHARED ScoreCustom AS INTEGER
DIM SHARED NameCustom AS STRING * 6
DIM SHARED NameScore AS STRING * 6
DIM SHARED NameLevel AS STRING * 6
DIM SHARED HighestScore AS INTEGER
DIM SHARED HighestLevel AS INTEGER
DIM SHARED TotleRecord AS INTEGER

DECLARE FUNCTION RefurbishTable% ()                             'Return number of clear lines
DECLARE FUNCTION Delay% (DelayTimes AS INTEGER, InterruptKey AS INTEGER) 'Return weather interrupt or not
DECLARE FUNCTION GetKey% (Way AS INTEGER)                       'Return KeyASCcode
DECLARE FUNCTION GetScan% ()                                    'Return KeySCANcode
DECLARE FUNCTION GetX% (From AS INTEGER, Class AS INTEGER)      'Return X changed
DECLARE FUNCTION GetY% (From AS INTEGER, Class AS INTEGER)      'Return Y changed
DECLARE FUNCTION GetSize% (SizeOf AS INTEGER, sWide AS INTEGER, sHigh AS INTEGER)       'Return a Size to save back
DECLARE FUNCTION GetName$ (Leng AS INTEGER, nX AS INTEGER, nY AS INTEGER, nColor AS INTEGER, nCUE AS STRING, nMinAsc AS INTEGER, nMaxAsc AS INTEGER, nType AS INTEGER) 'Return a String
DECLARE FUNCTION Pause% (ContinueKey AS INTEGER)                'Return a KeyASCcode
DECLARE FUNCTION GetMassage% (mLeft AS INTEGER, mTop AS INTEGER, Massage AS STRING, TxColor AS INTEGER, KeyJump AS INTEGER)        'Send a massage
DECLARE FUNCTION isNext% ()                                     'Return weather can go down or left or right
DECLARE FUNCTION isDirect% ()
DECLARE FUNCTION isHighScore% (Score AS INTEGER)                'Return weather the Score is the Highest
DECLARE FUNCTION isHighLevel% (Level AS INTEGER)                'Return weather the Level is the Highest
DECLARE FUNCTION Record% (rType AS INTEGER)                     'Return the answer of Oprating Record
DECLARE FUNCTION Choose% (cX AS INTEGER, cY AS INTEGER, cMassage AS STRING, cColor AS INTEGER)  'Return Y or N
DECLARE FUNCTION ToLand% ()

DECLARE SUB Initdata ()
DECLARE SUB RefurbishUnit (rX AS INTEGER, rY AS INTEGER, rColor AS INTEGER)
DECLARE SUB RefurbishRect (rX AS INTEGER, rY AS INTEGER, rColor AS INTEGER)
DECLARE SUB RefurbishLine (rLine AS INTEGER, rColor AS INTEGER)
DECLARE SUB RefurbishScreen ()
DECLARE SUB SPRITEDirectionChange ()
DECLARE SUB ShowSPRITE (UnitInfor AS SPRITE, addX AS INTEGER, addY AS INTEGER)
DECLARE SUB CleanSPRITE (UnitInfor AS SPRITE, addX AS INTEGER, addY AS INTEGER)
DECLARE SUB ShowTable (UnitInfor AS SPRITE, addX AS INTEGER, addY AS INTEGER)
DECLARE SUB DrawBox (bLeft AS INTEGER, bTop AS INTEGER, bWide AS INTEGER, bHigh AS INTEGER, bType AS INTEGER)
DECLARE SUB WarnInfo (WarnRecord AS INTEGER)
DECLARE SUB ErrInfo (ErrRecord AS INTEGER)
DECLARE SUB CurInfo (CurRecord AS INTEGER)
DECLARE SUB DialogBox (DialogRecord AS INTEGER)
DECLARE SUB ShowRecord (RecordNumber AS INTEGER)
DECLARE SUB pEnd (UseWay AS INTEGER)
DECLARE SUB Setup ()
DECLARE SUB Manage ()
DECLARE SUB Control ()
DECLARE SUB InitFace ()
DECLARE SUB Help ()


'Name Wide High Color
DATA "Line","Rect","LefN","RigN","Lef7","Rig7","Soil","NNNN"
DATA 1,2,3,3,2,2,3,2
DATA 4,2,2,2,3,3,2,2
DATA 5,6,7,8,9,10,11,12

DATA 1,1,1,1     ,1,1,1,1     ,1,1,1,1     ,1,1,1,1
DATA 1,1,1,1     ,1,1,1,1     ,1,1,1,1     ,1,1,1,1
DATA 1,1,0,0,1,1 ,0,1,1,1,1,0 ,1,1,0,0,1,1 ,0,1,1,1,1,0
DATA 0,1,1,1,1,0 ,1,0,1,1,0,1 ,0,1,1,1,1,0 ,1,0,1,1,0,1
DATA 1,1,0,1,0,1 ,1,1,1,1,0,0 ,1,0,1,0,1,1 ,0,0,1,1,1,1
DATA 1,1,1,0,1,0 ,1,0,0,1,1,1 ,0,1,0,1,1,1 ,1,1,1,0,0,1
DATA 0,1,0,1,1,1 ,0,1,1,1,0,1 ,1,1,1,0,1,0 ,1,0,1,1,1,0
DATA 1,1,0,1     ,1,1,1,0     ,1,0,1,1     ,0,1,1,1

16 楼

SCREEN 12
DIM Temp AS INTEGER
Diffcult = 0
Initdata
isTrue = TRUE
DO
    FOR i = 0 TO High: FOR j = 0 TO Wide: Table(i, j) = 0: NEXT: NEXT
    IF isTrue = TRUE THEN
        Temp = ToLand
        SELECT CASE Temp
        CASE 1: CALL Setup
        CASE 2: CALL Manage
        CASE 3: CALL pEnd(CloseScreen)
        CASE 4: CALL pEnd(ToBlack)
        CASE 5: CLS : END
        CASE 6: CALL Help
        END SELECT
    END IF
    IF Temp = 0 THEN
        InitFace
        Control
    END IF
LOOP
END

FUNCTION Choose% (cX AS INTEGER, cY AS INTEGER, cMassage AS STRING, cColor AS INTEGER)
    DIM Ret AS STRING * 1
    COLOR cColor: LOCATE cY, cX: PRINT cMassage; "(y/n)?"
    Ret = CHR$(Pause(KeyANY))
    IF Ret = "y" OR Ret = "Y" THEN Choose% = TRUE ELSE Choose% = FALSE
    LOCATE cY, cX: PRINT SPACE$(LEN(cMassage)); "      "
END FUNCTION

SUB CleanSPRITE (UnitInfor AS SPRITE, addX AS INTEGER, addY AS INTEGER)
    DIM xTemp AS INTEGER, yTemp AS INTEGER, xPoint AS INTEGER, yPoint AS INTEGER
    TempSprite = UnitInfor
    SPRITEDirectionChange
    xTemp = TempSprite.w: yTemp = TempSprite.h
    FOR i = 0 TO yTemp - 1: FOR j = 0 TO xTemp - 1
        xPoint = addX + (j + TempSprite.Left - 1) * perWide
        yPoint = addY + (i + TempSprite.Top - 1) * perHigh
        IF BasePic(TempSprite.sPoint + i * xTemp + j) = 1 THEN LINE (xPoint, yPoint)-(xPoint + perWide, yPoint + perHigh), Grey, BF
    NEXT: NEXT
END SUB

SUB Control
    DIM Time AS SINGLE
    DIM cDown AS INTEGER, cLeft AS INTEGER, cRight AS INTEGER
    DIM Temp AS INTEGER, ActiveLevel AS INTEGER
    DIM TName AS STRING * 6
    RANDOMIZE TIMER
    
    NowUnit = PicUnit(CINT(RND * UnitMax))
    NextUnit = PicUnit(CINT(RND * UnitMax))
    NowUnit.Left = (Wide - NowUnit.w) / 2
    NowUnit.Top = 1
    NextUnit.Left = 1: NextUnit.Top = 1
    CALL DrawBox(Left + 300 - 2, Top + 20 - 2, NextUnit.w * perWide + 4, NextUnit.h * perHigh + 4, TypeLow)
    CALL ShowSPRITE(NowUnit, Left, Top)
    CALL ShowSPRITE(NextUnit, Left + 300, Top + 20)
    DO

17 楼

Time = 0
        isTrue = FALSE
        DO
            TName = NameCustom
            i = isNext
            IF i >= 4 THEN cLeft = FALSE: i = i - 4 ELSE cLeft = TRUE
            IF i >= 2 THEN cRight = FALSE: i = i - 2 ELSE cRight = TRUE
            IF i = 1 THEN cDown = FALSE ELSE cDown = TRUE
            SELECT CASE GetKey(GetLast)
            CASE KeyUp: CALL CurInfo(2): i = GetMassage(275, 220, "Pause", Red, KeyANY): CALL CurInfo(0)
            CASE KeyDown
                IF cDown = TRUE THEN
                    CALL CleanSPRITE(NowUnit, Left, Top)
                    NowUnit.Top = NowUnit.Top + 1
                    CALL ShowSPRITE(NowUnit, Left, Top)
                END IF
            CASE KeyLeft
                IF cLeft = TRUE THEN
                    CALL CleanSPRITE(NowUnit, Left, Top)
                    NowUnit.Left = NowUnit.Left - 1
                    CALL ShowSPRITE(NowUnit, Left, Top)
                END IF
            CASE KeyRight
                IF cRight = TRUE THEN
                    CALL CleanSPRITE(NowUnit, Left, Top)
                    NowUnit.Left = NowUnit.Left + 1
                    CALL ShowSPRITE(NowUnit, Left, Top)
                END IF
            CASE KeyEnter
                IF isDirect = TRUE THEN
                    CALL CleanSPRITE(NowUnit, Left, Top)
                    NowUnit.Direction = (NowUnit.Direction + 1) MOD 4
                    CALL ShowSPRITE(NowUnit, Left, Top)
                END IF
            CASE ASC("h"): Help
            CASE ASC("H"): Help
            CASE ASC("r"): IF Record%(ReadRecord) <> NewRecord THEN CALL ShowRecord(AttribCustom)
            CASE ASC("R"): IF Record%(ReadRecord) <> NewRecord THEN CALL ShowRecord(AttribCustom)
            CASE ASC("l"): NameCustom = GetName$(6, 55, 17, Red, "Load Name:", 0, 255, Normal): i = Record%(ReadOther): CALL DialogBox(0): IF i <> NewRecord THEN CALL ShowRecord(i)
            CASE ASC("d"): i = Record%(DeleteRecord)
            CASE ASC("D"): i = Record%(DeleteRecord)
            'CASE KeySpace: CLS : END
            CASE KeyESC
                IF Choose(55, 17, "Exit", Red) = TRUE THEN

18 楼

还有下次在发

我来回复

您尚未登录,请登录后再回复。点此登录或注册