Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Simple games in 1 hour...
#51
I don't think I'll be including red_marvin's entry... :lol:
Reply
#52
Mango, yeah but it would be darn too hard. ;*(


here added aesthetics in 10 mins.

Code:
'/////Bubble Fight!!!!///////
'June 2,2003
'Another stupid creation of Relsoft
'Coded in exactly 2 hours
'cuz the one-hour version's GFX sucked BIG.
'OBJECTIVE
'Stay away from mines and stay alive as long as you can
'CONTROLS:
'CTRL=Move left
'ALT=Move Right
'Right Shift= Add Height
'Left Shift=Toggle Vsynch

DECLARE SUB DrawSpikes ()
DECLARE SUB GFX (Size%, x1%, y1%, x2%, y2%)
DECLARE SUB ReInit ()
DECLARE SUB AF.Print (Xpos%, Ypos%, Text$, col%)
DECLARE FUNCTION DoCollision% ()
DECLARE FUNCTION Collide% (Frame%)
DECLARE SUB DoMines ()
DECLARE SUB AddMine ()
DECLARE SUB GenMask (Array%(), ArrayIndex%(), Mask%())
DECLARE SUB InitImageData (FileName$, ImageArray%())
DECLARE SUB MakeImageIndex (ImageArray%(), IndexArray%())
DECLARE SUB DoStars ()
DECLARE SUB INIT ()
DECLARE SUB SetVideoSeg (Segment%)
DEFINT A-Z
'$DYNAMIC

TYPE MineType
    X       AS SINGLE
    y       AS SINGLE
    xv      AS SINGLE
    yv      AS SINGLE
    cx      AS INTEGER
    cy      AS INTEGER
    Hei     AS INTEGER
    Wid     AS INTEGER
    id      AS INTEGER
    angle   AS INTEGER
    Active  AS INTEGER
    Counter AS INTEGER
    Frame   AS INTEGER
END TYPE

TYPE BubbleType
    X       AS SINGLE
    y       AS SINGLE
    xv      AS SINGLE
    yv      AS SINGLE
    Frame   AS INTEGER
END TYPE

TYPE StarType
    X       AS SINGLE
    y       AS SINGLE
    xv      AS SINGLE
    yv      AS SINGLE
    c       AS INTEGER
END TYPE


CONST FALSE = 0, TRUE = NOT FALSE
CONST VIDEO = &HA000
CONST PI = 3.14151693#
CONST MAXMINES = 50
CONST MAXSTARS = 50
CONST xFRICTION = .008
CONST yFRICTION = .008
CONST GRAVITY = .012
CONST ACCEL = .02
                  

DIM SHARED Mine(MAXMINES) AS MineType
DIM SHARED Stars(MAXSTARS) AS StarType
DIM SHARED LutCOS(359) AS SINGLE
DIM SHARED LutSIN(359) AS SINGLE
DIM SHARED VPAGE(32009)  AS INTEGER       'SetVideoSeg Buffer
REDIM SHARED BubbleSpr(1 TO 1) AS INTEGER
REDIM SHARED BubbleIdx(1 TO 1) AS INTEGER
REDIM SHARED BubbleMask(1 TO 1) AS INTEGER
REDIM SHARED MineSpr(1 TO 1) AS INTEGER
REDIM SHARED MineIdx(1 TO 1) AS INTEGER
REDIM SHARED MineMask(1 TO 1) AS INTEGER
REDIM SHARED SpikeSpr(1 TO 1) AS INTEGER


DIM SHARED Bubble AS BubbleType
DIM SHARED LAYER AS INTEGER
DIM SHARED Score&
DIM SHARED Lives

CLS
SCREEN 13
RANDOMIZE TIMER
INIT
WaitON = TRUE

DO
FINISHED = FALSE
ReInit
DO
    Anicount = (Anicount AND 7) + 1
    MineCount = (MineCount AND 63) + 1
    IF MineCount = 1 THEN
        AddMine
    END IF
    DEF SEG = 0
    IF PEEK(1047) AND 4 THEN        'CTRL
        Bubble.xv = Bubble.xv - ACCEL
    END IF
    IF PEEK(1047) AND 8 THEN        'ALT
        Bubble.xv = Bubble.xv + ACCEL
    END IF
    IF PEEK(1047) AND 2 THEN        'LShift
        WaitON = NOT WaitON
    END IF
    IF (PEEK(1047) AND 1) THEN      'RShift
        Bubble.yv = Bubble.yv - ((ACCEL * 255) * yFRICTION)
    END IF
    IF Anicount = 1 THEN
        Bubble.Frame = (Bubble.Frame AND 1) + 1
    END IF

    Bubble.xv = Bubble.xv - Bubble.xv * xFRICTION
    Bubble.yv = Bubble.yv + GRAVITY
    Bubble.yv = Bubble.yv - (Bubble.yv * yFRICTION)

    Bubble.X = Bubble.X + Bubble.xv

    Bubble.y = Bubble.y + Bubble.yv

    IF Bubble.X < 16 THEN
        Bubble.X = 16
        Bubble.xv = 0
    ELSEIF Bubble.X > 283 THEN
        Bubble.X = 283
        Bubble.xv = 0
    END IF

    IF Bubble.y < 8 THEN
        Bubble.y = 8
        Bubble.yv = 0
    ELSEIF Bubble.y > 171 THEN
        Bubble.y = 171
        FINISHED = TRUE
        Lives = Lives - 1
    END IF
    cx% = Bubble.X
    cy% = Bubble.y
    cf% = Bubble.Frame

    SetVideoSeg LAYER
    LINE (0, 0)-(319, 199), 0, BF
    DoStars
    DrawSpikes

    DoMines

    IF DoCollision THEN
        FINISHED = TRUE
        Lives = Lives - 1
    END IF


    PUT (cx%, cy%), BubbleMask(BubbleIdx(cf%)), AND
    PUT (cx%, cy%), BubbleSpr(BubbleIdx(cf%)), OR

    'Erase stuff
    LINE (0, 0)-(15, 199), 0, BF     'Left
    LINE (0, 0)-(319, 8), 0, BF     'top
    LINE (304, 0)-(319, 199), 0, BF 'right
    AF.Print 0, 0, "Score:" + LTRIM$(STR$(Score&)), 35
    AF.Print 0, 10, "Lives:" + LTRIM$(STR$(Lives)), 67

    'Calc FPS
    FPS = FPS + 1
    IF StartTime& + 1 < TIMER THEN
     FPS2 = FPS
     FPS = 0
     StartTime& = TIMER
    END IF
    AF.Print 0, 20, "FPS:" + STR$(FPS2), 23

    SetVideoSeg VIDEO
    IF WaitON THEN
        WAIT &H3DA, 8
    END IF

    PUT (0, 0), VPAGE(6), PSET
    IF INKEY$ = CHR$(27) THEN END

LOOP UNTIL FINISHED
    SetVideoSeg LAYER
    FOR I = 0 TO 199 STEP 10
    AF.Print 30, I + 0, "*****Y-O-U  S-U-C-K !!!!!*****", 67
    NEXT I
    SetVideoSeg VIDEO
    PUT (0, 0), VPAGE(6), PSET
    c$ = INPUT$(1)
    SetVideoSeg VIDEO
    FOR I = 2 TO 9
        GFX I + 0, 0, 0, 319, 199
        WAIT &H3DA, 8
    NEXT I
LOOP WHILE Lives >= 0



DEF SEG
CLS
SCREEN 0
WIDTH 80

LOCATE 1, 1
PRINT "Final Score:" + STR$(Score&)
PRINT "Relsoft 2003"

END



BUBBLEDATA:
DATA 404
DATA 160,20,0,4352,5395,6166,6425,6425,5656,4885,17,0,0,5393,6424,5656,5397,5397,6166,6169
DATA 4373,0,4352,5909,5398,4627,5395,4371,4881,5653,5399,17,5393,5399,4369,5907,6938,4889,0,4352
DATA 5909,4373,6163,4374,5649,7451,6427,4888,0,0,5649,4888,6421,21,6931,7198,4630,4370,0,0
DATA 5376,5401,6166,4371,7447,5660,17,0,0,0,4864,5656,5656,4881,6938,4374,0,0,0,0
DATA 4352,6166,5401,5905,5915,17,0,0,0,0,0,6421,5401,6418,5403,0,0,0,0,0
DATA 0,6421,5401,5649,4888,0,0,0,0,0,0,6421,5401,4352,4370,0,0,0,0,4625
DATA 17,6421,5656,17,4352,4370,0,0,4352,6166,4371,6166,6166,19,4608,5398,17,0,5393,6425
DATA 4883,5656,6421,21,4352,5909,4373,0,5650,4886,5393,5401,6163,4374,0,5393,4630,0,4625,17
DATA 5649,4888,5393,5399,17,4352,4370,0,0,4352,5909,4373,4352,5909,5398,4371,0,0,4881,5653
DATA 5399,17,0,5393,6424,5656,5397,5397,6166,6169,4373,0,0,4352,5395,6166,6425,6425,5656,4885
DATA 17,0,160,20,0,0,0,4881,5397,5397,4371,0,0,0,0,0,4881,6166,6425,6425
DATA 5656,4371,0,0,0,4881,6166,5656,5397,5397,6166,5656,4371,0,0,6419,5657,5397,4885,17
DATA 4881,6422,4889,0,4352,6422,5399,6935,6685,19,0,5649,5657,17,4864,5656,6677,7709,6685,19
DATA 0,4352,6166,19,5649,5400,7447,7198,4887,17,0,0,6163,4374,6163,5398,7707,5660,17,0
DATA 0,0,5649,4888,6421,5397,7196,4374,0,0,0,0,5376,5401,6421,4885,5656,17,0,0
DATA 0,0,5376,5401,6421,4373,4370,0,0,0,0,4625,5393,5401,6421,21,4352,4370,0,0
DATA 0,5907,5395,5401,6163,4374,4608,5398,17,0,4352,6166,5653,4888,5649,4888,4352,5909,4373,0
DATA 0,5656,6165,4374,4864,5656,17,5393,4630,4352,0,5376,6166,19,4352,6422,4374,4352,4370,4608
DATA 0,5910,5657,17,0,6419,5657,4371,0,4352,5909,6423,4889,0,0,4881,6166,5656,5397,5397
DATA 6166,5656,4371,0,0,0,4881,6166,6425,6425,5656,4371,0,0,0,0,0,4881,5397,5397
DATA 4371,0,0,0


MINEDATA:
DATA 68
DATA 64,8,23808,12032,47,93,93,22297,6487,23808,6400,6426,6681,25,22365,23833,6495,23895,22365,24345
DATA 6493,23895,6400,6426,6681,25,93,22297,6487,23808,23808,12032,47,93,64,8,12032,26368,103,47
DATA 47,10047,16167,12032,16128,11831,14126,63,10087,16174,11833,26407,10087,14638,11839,26407,16128,11831,14126,63
DATA 47,10047,16167,12032,12032,26368,103,47

SPIKEDATA:
DATA 130
DATA 128,16,0,5120,0,0,0,5120,0,0,0,6164,20,0,0,6164,20,0,0,6679
DATA 23,0,0,6679,23,0,0,7193,25,0,0,7193,25,0,0,7687,7,0,0,7687
DATA 7,0,0,22031,15,0,0,22031,15,0,5376,7708,5404,0,5376,7708,5404,0,5888,7452
DATA 5916,0,5888,7452,5916,0,6400,7452,6428,0,6400,7452,6428,0,1792,7453,1821,0,1792,7453
DATA 1821,0,3840,16203,3915,0,3840,16203,3915,0,7189,7453,7197,21,7189,7453,7197,21,7191,7453
DATA 7197,23,7191,7453,7197,23,7449,22045,7453,25,7449,22045,7453,25,7450,19229,7453,26,7450,19229
DATA 7453,26,6679,22043,6683,23,6679,22043,6683,23

REM $STATIC
SUB AddMine

'id
'0=Static
'1=verical
'2=Horz
'3=Circular


FOR I = 0 TO MAXMINES
    IF NOT Mine(I).Active THEN
        Mine(I).id = INT(RND * 5)
        Mine(I).X = 344
        Mine(I).y = INT(RND * 184)
        Mine(I).xv = .12 + (RND * 2) / 5
        Mine(I).yv = .12 + (RND * 2) / 5
        Mine(I).Hei = 10 + (Int20)
        Mine(I).Wid = 10 + (20)
        Mine(I).angle = INT(RND * 359)
        Mine(I).Active = TRUE
        Mine(I).Counter = 0
        Mine(I).Frame = 1

        SELECT CASE Mine(I).id
            CASE 0
                Score& = Score& + 10
            CASE 1
                Score& = Score& + 20
            CASE 2
                Score& = Score& + 30
            CASE 3
                Score& = Score& + 70
            CASE 4
                Score& = Score& + 100
            CASE ELSE
        END SELECT
        EXIT FOR
    END IF
NEXT I
END SUB

SUB AF.Print (Xpos%, Ypos%, Text$, col%)
'Prints the standard 8*8 CGA font
'Paramenters:
'Segment=the Layer to print to
'Xpos,Ypos=the coordinates of the text
'Text$=the string to print
'col= is the color to print(gradient)

X% = Xpos%
y% = Ypos%
Spacing% = 8
  FOR I% = 0 TO LEN(Text$) - 1
    X% = X% + Spacing%
    Offset% = 8 * ASC(MID$(Text$, I% + 1, 1)) + 14
    FOR J% = 0 TO 7
      DEF SEG = &HFFA6
      Bit% = PEEK(Offset% + J%)
      IF Bit% AND 1 THEN PSET (X%, y% + J%), col% + J%
      IF Bit% AND 2 THEN PSET (X% - 1, y% + J%), col% + J%
      IF Bit% AND 4 THEN PSET (X% - 2, y% + J%), col% + J%
      IF Bit% AND 8 THEN PSET (X% - 3, y% + J%), col% + J%
      IF Bit% AND 16 THEN PSET (X% - 4, y% + J%), col% + J%
      IF Bit% AND 32 THEN PSET (X% - 5, y% + J%), col% + J%
      IF Bit% AND 64 THEN PSET (X% - 6, y% + J%), col% + J%
      IF Bit% AND 128 THEN PSET (X% - 7, y% + J%), col% + J%
    NEXT J%
  NEXT I%
DEF SEG

END SUB

FUNCTION DoCollision

DoCollision = FALSE
bx% = Bubble.X
by% = Bubble.y
BR% = 9 * 9
db! = SQR(BR%)
bcx% = bx% + 10
bcy% = by% + 10
    FOR I = 0 TO MAXMINES
        IF Mine(I).Active THEN
            cx% = Mine(I).cx + 4
            cy% = Mine(I).cy + 4
            IF cx% < bcx% + db! THEN
                IF cx% > bcx% - db! THEN
                    IF cy% < bcy% + db! THEN
                        IF cy% > bcy% - db! THEN
                            DoCollision = TRUE
                            EXIT FOR
                        END IF
                    END IF
                END IF
            END IF
        END IF
    NEXT I
END FUNCTION

SUB DoMines

Anicount = (Anicount AND 63) + 1
FOR I = 0 TO MAXMINES
    IF Mine(I).Active THEN
        GOSUB Checkid
        IF cx% >= 0 AND cy% >= 0 AND cx% < 305 AND cy% < 184 THEN
            IF Anicount = 1 THEN
                Mine(I).Frame = (Mine(I).Frame AND 1) + 1
                cf% = Mine(I).Frame
            END IF
            PUT (cx%, cy%), MineMask(MineIdx(cf%)), AND
            PUT (cx%, cy%), MineSpr(MineIdx(cf%)), OR
        END IF

        IF Mine(I).X < 0 THEN
            Mine(I).Active = FALSE
        END IF
    END IF
NEXT I

EXIT SUB

Checkid:
    'id
    '0=Static
    '1=vert
    '2=Horz
    '3=Circular

    id = Mine(I).id
    SELECT CASE id
        CASE 0
            Mine(I).X = Mine(I).X - Mine(I).xv
            cx% = Mine(I).X
            cy% = Mine(I).y
            Mine(I).cx = cx%
            Mine(I).cy = cy%
        CASE 1
            Mine(I).X = Mine(I).X - .55
            Mine(I).angle = Mine(I).angle - 1
            IF Mine(I).angle < 0 THEN Mine(I).angle = 360 + Mine(I).angle
            Mine(I).yv = LutSIN(Mine(I).angle) * 50
            cx% = Mine(I).X
            cy% = Mine(I).y + Mine(I).yv
            Mine(I).cx = cx%
            Mine(I).cy = cy%
        CASE 2
            Mine(I).X = Mine(I).X - .55
            Mine(I).angle = Mine(I).angle - 1
            IF Mine(I).angle < 0 THEN Mine(I).angle = 360 + Mine(I).angle
            Mine(I).xv = LutSIN(Mine(I).angle) * 50
            cx% = Mine(I).X + Mine(I).xv
            cy% = Mine(I).y
            Mine(I).cx = cx%
            Mine(I).cy = cy%
        CASE 3
            Mine(I).X = Mine(I).X - .55
            Mine(I).angle = Mine(I).angle - 1
            IF Mine(I).angle < 0 THEN Mine(I).angle = 360 + Mine(I).angle
            Mine(I).xv = LutCOS(Mine(I).angle) * 50
            Mine(I).yv = LutSIN(Mine(I).angle) * 50
            cx% = Mine(I).X + Mine(I).xv
            cy% = Mine(I).y + Mine(I).yv
            Mine(I).cx = cx%
            Mine(I).cy = cy%
        CASE 4
            Mine(I).X = Mine(I).X - .55
            Mine(I).angle = (Mine(I).angle + 1) MOD 360
            Mine(I).xv = LutCOS(Mine(I).angle) * 50
            Mine(I).yv = LutSIN(Mine(I).angle) * 50
            cx% = Mine(I).X + Mine(I).xv
            cy% = Mine(I).y + Mine(I).yv
            Mine(I).cx = cx%
            Mine(I).cy = cy%
        CASE ELSE
    END SELECT
RETURN

END SUB

SUB DoStars
FOR S% = 0 TO MAXSTARS
    Stars(S%).X = Stars(S%).X + Stars(S%).xv
    Stars(S%).y = Stars(S%).y + Stars(S%).yv
    IF Stars(S%).X < 0 OR Stars(S%).y > 180 THEN
        Stars(S%).X = INT(RND * 520)
        Stars(S%).y = 0
        Stars(S%).xv = -(.001 + (RND * 1))
        Stars(S%).yv = (.001 + (RND * 1))
        Stars(S%).c = 16 + INT(RND * 16)
    END IF
    PSET (Stars(S%).X, Stars(S%).y), Stars(S%).c
NEXT S%

END SUB

SUB DrawSpikes STATIC
ScrollCount = (ScrollCount AND 3) + 1
IF ScrollCount = 1 THEN
    Offset = (Offset - 1) AND 15
END IF
FOR X = 0 TO 18
    PUT (X * 16 + Offset, 184), SpikeSpr(1), PSET
NEXT X
END SUB

SUB GenMask (Array(), ArrayIndex(), Mask())
'Creats masks for our sprites as we ain't using a LIB
'so we have to make use od masks for transparency

REDIM Mask(1 TO UBOUND(Array))

FOR I = 1 TO UBOUND(Array)              'Recopy values
    Mask(I) = Array(I)
NEXT I

FOR I = 1 TO UBOUND(ArrayIndex)         'mask em. ;*)
    W% = Array(ArrayIndex(I)) \ 8
    H% = Array(ArrayIndex(I) + 1)
    foo& = 0
    FOR y = 0 TO H% - 1
    FOR X = 0 TO W% - 1
        DEF SEG = VARSEG(Array(1))
        c% = PEEK(VARPTR(Array(ArrayIndex(I) + 2)) + foo&)
        IF c <> 0 THEN
            DEF SEG = VARSEG(Mask(1))
            POKE VARPTR(Mask(ArrayIndex(I) + 2)) + foo&, 0
        ELSE
            DEF SEG = VARSEG(Mask(1))
            POKE VARPTR(Mask(ArrayIndex(I) + 2)) + foo&, 255
        END IF
        foo& = foo& + 1
    NEXT X
    NEXT y

NEXT I
DEF SEG

END SUB

SUB GFX (Size%, x1, y1, x2, y2)

FOR Xsize = x1 TO x2 STEP Size%
FOR Ysize = y1 TO y2 STEP Size%
  P = POINT(Xsize, Ysize)
    LINE (Xsize - 1, Ysize - 1)-(Xsize + Size% - 1, Ysize + Size% - 1), P, BF
NEXT Ysize
NEXT Xsize


END SUB

SUB INIT

FOR A% = 0 TO 359
    LutCOS(A%) = COS(A% * PI / 180)
    LutSIN(A%) = SIN(A% * PI / 180)
NEXT A%

FOR S% = 0 TO MAXSTARS
    Stars(S%).X = INT(RND * 520)
    Stars(S%).y = INT(RND * 180)
    Stars(S%).xv = -(.01 + (RND * 1))
    Stars(S%).yv = (.01 + (RND * 1))
    Stars(S%).c = 16 + INT(RND * 16)
NEXT S%

RESTORE BUBBLEDATA
InitImageData "", BubbleSpr()
MakeImageIndex BubbleSpr(), BubbleIdx()
GenMask BubbleSpr(), BubbleIdx(), BubbleMask()

RESTORE MINEDATA
InitImageData "", MineSpr()
MakeImageIndex MineSpr(), MineIdx()
GenMask MineSpr(), MineIdx(), MineMask()

RESTORE SPIKEDATA
InitImageData "", SpikeSpr()




VPAGE(6) = 2560                      'Width 320*8
VPAGE(7) = 200                       'Height
LAYER = VARSEG(VPAGE(0)) + 1         'Buffer Seg(Ask Plasma)

'======
Bubble.X = 150
Bubble.y = 90
Bubble.xv = 0
Bubble.yv = 0
Bubble.Frame = 1

Score& = 0
Lives = 2
      
END SUB

SUB InitImageData (FileName$, ImageArray())

    IF FileName$ <> "" THEN
        '***** Read image data from file *****

        'Establish size of integer array required.
        FileNo = FREEFILE
        OPEN FileName$ FOR BINARY AS #FileNo
        Ints = (LOF(FileNo) - 7) \ 2
        CLOSE #FileNo
        REDIM ImageArray(1 TO Ints)

        'Load image data directly into array memory.
        DEF SEG = VARSEG(ImageArray(1))
        BLOAD FileName$, 0
        DEF SEG
    ELSE
        '***** Read image data from DATA statements *****

        'Establish size of integer array required.
        READ IntCount
        REDIM ImageArray(1 TO IntCount)

        'READ image DATA into array.
        FOR n = 1 TO IntCount
            READ X
            ImageArray(n) = X
        NEXT n
    END IF

END SUB

SUB MakeImageIndex (ImageArray(), IndexArray())

    'The index will initially be built in a temporary array, allowing
    'for the maximum 1000 images per file.
    DIM Temp(1 TO 1000)
    ptr& = 1: IndexNo = 1: LastInt = UBOUND(ImageArray)
    DO
        Temp(IndexNo) = ptr&
        IndexNo = IndexNo + 1

        'Evaluate descriptor of currently referenced image to
        'calculate the beginning of the next image.
        X& = (ImageArray(ptr&) \ 8) * (ImageArray(ptr& + 1)) + 4
        IF X& MOD 2 THEN X& = X& + 1
        ptr& = ptr& + (X& \ 2)
    LOOP WHILE ptr& < LastInt

    LastImage = IndexNo - 1

    'Copy the image index values into the actual index array.
    REDIM IndexArray(1 TO LastImage)
    FOR n = 1 TO LastImage
        IndexArray(n) = Temp(n)
    NEXT n

END SUB

SUB ReInit

Bubble.X = 150
Bubble.y = 90
Bubble.xv = 0
Bubble.yv = 0
Bubble.Frame = 1

FOR I = 0 TO MAXMINES
        Mine(I).id = 0
        Mine(I).X = 0
        Mine(I).y = 0
        Mine(I).cx = 0
        Mine(I).cy = 0
        Mine(I).xv = 0
        Mine(I).yv = 0
        Mine(I).Hei = 0
        Mine(I).Wid = 0
        Mine(I).angle = 0
        Mine(I).Active = FALSE
        Mine(I).Counter = 0
        Mine(I).Frame = 0
NEXT I

END SUB

SUB SetVideoSeg (Segment) STATIC

DEF SEG

IF VideoAddrOff& = 0 THEN ' First time the sub is called

' We need to find the location of b$AddrC, which holds the graphics
' offset (b$OffC) and segment (b$SegC). Since b$AddrC is in the default
' segment, we can find it by setting it to a certain value, and then
' searching for that value.

SCREEN 13 ' Set b$SegC to A000 (00A0 in memory)
PSET (160, 100), 0 ' Set b$OffC to 7DA0 (not needed in the IDE)

FOR Offset& = 0 TO 32764 ' Search for b$AddrC, which is
IF PEEK(Offset&) = &HA0 THEN ' in the default segment and
IF PEEK(Offset& + 1) = &H7D THEN ' should have a value of
IF PEEK(Offset& + 2) = &H0 THEN ' A0 7D 00 A0.
IF PEEK(Offset& + 3) = &HA0 THEN
VideoAddrOff& = Offset& + 2 ' If we found it, record the
EXIT FOR ' offset of b$SegC and quit
END IF ' looking. (Oddly, changing
END IF ' the b$OffC doesn't seem to
END IF ' do anything, so this is why
END IF ' this sub only changes b$SegC)
NEXT

END IF

' Change b$SegC to the specified Segment

POKE VideoAddrOff&, Segment AND &HFF
POKE VideoAddrOff& + 1, (Segment AND &HFF00&) \ &H100




END SUB
y smiley is 24 bit.
[Image: anya2.jpg]

Genso's Junkyard:
http://rel.betterwebber.com/
Reply
#53
Hey Oracle. does the game i programmed using smurf
count? oh and on the snake game yes your supposed to be able to go thru the walls, i figured it would add a lil extra twist to the game, and ty for the compliment on it.
very F***ing song remains the same
To everyone who sucks-up for the fame
Out of strength you know we speak the truth
Every trend that dies is living proof

MasterMinds Software
Reply
#54
I'm not really judging, na_th is controlling the polling for the voting (which he says he'll do today).

The snake game... you're supposed to go through the walls? That's like my brother's cell phone game, snake II (in snake I you couldn't go through the walls). Could you do a modified version where you die if you hit the walls? And also, the snake seems to move downwards much faster than across, is that possible to fix? (Just ideas before I put it on QBNZ, you don't have to do them).
Reply
#55
I know somebody already posted a boxes game. I stole these levels from the TI-calculator version of the same game.

*peace*

Meg

Code:
DECLARE SUB CheckWin ()
DECLARE SUB MoveGuy ()
DECLARE SUB Program.DrawBlock ()
DECLARE SUB Proram.DrawBlock ()
DECLARE SUB Program.DrawMaze ()
DECLARE SUB Program ()
DECLARE SUB Initialize ()
DECLARE SUB LoadMaze ()

COMMON SHARED YY, XX, Y, X, XC, YC, Win, Level
DIM SHARED Maze(23, 30)

CALL Initialize
CALL Program
END

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,0,2,2,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,0,2,0,1,0,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,1,0,1,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,0,0,0,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 9,8

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,0,5,0,2,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,0,4,4,1,0,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,4,4,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 10,9

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,5,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,4,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,4,4,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 10,8

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,5,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,4,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,4,2,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,4,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 10,8

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,0,0,4,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,1,0,2,0,2,1,4,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,1,0,0,3,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,0,4,1,2,0,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,0,1,1,1,4,0,0,0,0,5,1,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 20,12

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,2,0,2,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,0,2,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,4,4,4,4,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 17,9

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,4,0,2,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,4,4,2,0,2,0,0,5,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,4,4,0,2,0,2,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 17,12

DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,2,0,1,1,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,1,0,1,4,4,4,1,0,1,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,1,0,1,4,4,4,1,0,1,1,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,0,2,0,0,2,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,5,1,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 19,13

DATA 9999

SUB CheckWin
    Win = 1
    FOR YY = 1 TO 23
    FOR XX = 1 TO 30
        IF Maze(YY, XX) = 2 THEN
            Win = 0
        END IF
    NEXT XX
    NEXT YY
END SUB

SUB Initialize
    SCREEN 1
    CLS
    RANDOMIZE TIMER
    Level = 1
END SUB

SUB LoadMaze
    FOR YY = 1 TO 23
    FOR XX = 1 TO 30
        READ Maze(YY, XX)
        IF Maze(YY, XX) = 9999 THEN
          CLS
          PRINT "CONGRATULATIONS.  YOU HAVE BEATEN THE GAME."
          WHILE INKEY = "": WEND
         SYSTEM
        END IF
    NEXT XX
    NEXT YY

    READ X
    READ Y
END SUB

SUB MoveGuy
    SELECT CASE Maze(Y + YC, X + XC)
        CASE 0
            IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
            YY = Y: XX = X: CALL Program.DrawBlock
            Y = Y + YC
            X = X + XC
            Maze(Y, X) = 5
            YY = Y: XX = X: CALL Program.DrawBlock
        CASE 1
        CASE 2
            SELECT CASE Maze(Y + 2 * YC, X + 2 * XC)
                CASE 0
                    IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Y = Y + YC
                    X = X + XC
                    Maze(Y, X) = 5
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Maze(Y + YC, X + XC) = 2
                    YY = Y + YC: XX = X + XC: CALL Program.DrawBlock
                CASE 4
                    IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Y = Y + YC
                    X = X + XC
                    Maze(Y, X) = 5
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Maze(Y + YC, X + XC) = 3
                    YY = Y + YC: XX = X + XC: CALL Program.DrawBlock
                    CALL CheckWin
            END SELECT
        CASE 3
            SELECT CASE Maze(Y + 2 * YC, X + 2 * XC)
                CASE 0
                    IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Y = Y + YC
                    X = X + XC
                    Maze(Y, X) = 6
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Maze(Y + YC, X + XC) = 2
                    YY = Y + YC: XX = X + XC: CALL Program.DrawBlock
                CASE 4
                    IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Y = Y + YC
                    X = X + XC
                    Maze(Y, X) = 6
                    YY = Y: XX = X: CALL Program.DrawBlock
                    Maze(Y + YC, X + XC) = 3
                    YY = Y + YC: XX = X + XC: CALL Program.DrawBlock
            END SELECT
        CASE 4
            IF Maze(Y, X) = 5 THEN Maze(Y, X) = 0 ELSE Maze(Y, X) = 4
            YY = Y: XX = X: CALL Program.DrawBlock
            Y = Y + YC
            X = X + XC
            Maze(Y, X) = 6
            YY = Y: XX = X: CALL Program.DrawBlock
        CASE 5
        CASE 6
    END SELECT
END SUB

SUB Program
     DO
          Win = 0
          CALL LoadMaze
          CALL Program.DrawMaze
          DO
               XC = 0
               YC = 0
               DO
                    C$ = UCASE$(INKEY$)
               LOOP UNTIL C$ <> ""
                
               SELECT CASE C$
                    CASE CHR$(0) + "M"
                         YC = 0
                         XC = 1
                    CASE CHR$(0) + "K"
                         YC = 0
                         XC = -1
                    CASE CHR$(0) + "H"
                         XC = 0
                         YC = -1
                    CASE CHR$(0) + "P"
                         XC = 0
                         YC = 1
                    CASE "~"
                         Win = 1
               END SELECT
               CALL MoveGuy
          LOOP UNTIL C$ = "Q" OR Win = 1
          
          IF Win = 1 THEN
               Level = Level + 1
          END IF
     LOOP UNTIL C$ = "Q"
END SUB

SUB Program.DrawBlock
    LOCATE YY, XX
    SELECT CASE Maze(YY, XX)
        CASE 0
            PRINT " "
        CASE 1
            PRINT "Û"
        CASE 2
            PRINT "°"
        CASE 3
            PRINT "²"
        CASE 4
            PRINT "þ"
        CASE 5
            PRINT "+"
        CASE 6
            PRINT "+"
    END SELECT
END SUB

SUB Program.DrawMaze
    FOR YY = 1 TO 23
    FOR XX = 1 TO 30
        CALL Program.DrawBlock
    NEXT XX
    NEXT YY
END SUB
Reply
#56
That is one badass game, Meg.
am an asshole. Get used to it.
Reply
#57
Except for this line:

Code:
say "CONGRATULATIONS.  YOU HAVE BEATEN THE GAME.": PRINT

I changed the word "say" to PRINT. It just makes it to be in the competition, eh na_th? (Wink wink, put up the poll now please :lolSmile
Reply
#58
Well i fixed it so you die when u hit the walls but i can't think of a good fix for the up/down movement speed it's due to the 80x25 screen res. i've tried using 80x50 but it flickers for some reason, any1 have a idea?

DEFINT A-Z

TYPE SnakeData
X AS INTEGER
Y AS INTEGER
END TYPE

DIM Snake(3744) AS SnakeData

Tail = 10
Delay = 3

FOR I = 0 TO Tail - 1
Snake(I).X = 40
Snake(I).Y = 11
NEXT

Xa(1) = 1
Xa(2) = -1
Ya(3) = 1
Ya(4) = -1

SCREEN 0, 0, 1, 0

FOR I = 0 TO 15
PALETTE I, I
OUT 968, I
OUT 969, 0
OUT 969, I * 4
OUT 969, 0
NEXT

DO
RANDOMIZE TIMER + (Gx + Gy)
Gx = INT(RND * 20) + 2
Gy = INT(RND * 15) + 2
LOOP UNTIL Gx <> 5 AND Gy <> 5

Snke$ = "Programmed_By_BinaryShocK--"

RANDOMIZE TIMER

DO

M = 1
L = 15
Z = 1

xKey$ = RIGHT$(INKEY$, 1)

IF xKey$ <> "" THEN
SELECT CASE ASC(xKey$)
CASE 77: D = 1
CASE 75: D = 2
CASE 80: D = 3
CASE 72: D = 4
CASE 27: END
END SELECT
END IF

FOR I = Tail - 1 TO 0 STEP -1
SWAP Snake(I), Snake(I + 1)
NEXT

FOR I = 1 TO 80
LOCATE 1, I: PRINT "*"
LOCATE 23, I: PRINT "*"
NEXT

FOR I = 1 TO 23
LOCATE I, 1: PRINT "*"
LOCATE I, 80: PRINT "*"
NEXT

LOCATE Gy, Gx: COLOR 14: PRINT "÷"

Snake(0).X = Snake(1).X + Xa(D)
Snake(0).Y = Snake(1).Y + Ya(D)

IF Snake(0).X = Gx AND Snake(0).Y = Gy THEN
Tail = Tail + 1
Snke$ = Snke$ + STR$(INT(RND * 2))
DO
RANDOMIZE TIMER + (Gx + Gy)
Gx = INT(RND * 78) + 2
Gy = INT(RND * 21) + 2
LOOP UNTIL Gx <> 5 AND Gy <> 5
END IF

FOR I = 1 TO Tail
IF (Snake(I).X = Snake(0).X) AND (Snake(I).Y = Snake(0).Y) AND D THEN
SCREEN 0, 0, 0, 0
CLS
PRINT "Final Score:"; Tail - 10
A$ = INPUT$(1)
END
END IF
NEXT

IF Snake(0).X = 1 THEN Exit Do
IF Snake(0).X = 80 THEN Exit do
IF Snake(0).Y = 1 THEN Exit do
IF Snake(0).Y = 23 THEN Exit do

FOR I = 1 TO Tail - 1
L = L - M
IF (L = 7) OR (L = 15) THEN M = -M
IF Snake(0).X > 0 AND Snake(0).X < 81 AND Snake(0).Y > 0 AND Snake(0).Y < 23 THEN
LOCATE Snake(I).Y, Snake(I).X: COLOR L: PRINT MID$(Snke$, Z, 1)
COLOR 7
END IF
Z = Z + 1
IF Z = LEN(Snke$) + 1 THEN Z = 1
NEXT

LOCATE 23, 2: PRINT (Tail - 10)
LOCATE Snake(0).Y, Snake(0).X: COLOR 15: PRINT CHR$(1)

PCOPY 1, 0
CLS

FOR I = 0 TO Delay - 1
WAIT 986, 8
WAIT 986, 8, 8
NEXT

LOOP

SCREEN 0, 0, 0, 0
CLS
PRINT "Final Score:"; Tail - 10
A$ = INPUT$(1)
END
very F***ing song remains the same
To everyone who sucks-up for the fame
Out of strength you know we speak the truth
Every trend that dies is living proof

MasterMinds Software
Reply
#59
Thanks for the fixed version. Though just as a hint, you might like to enclose all your code in the appropriate
Code:
and
tags, that will get rid of the stupid smiley Wink
Reply
#60
Ah crap i always forget about the code tags heh sorry Tongue
Btw i finally visited qbnz last night and it looks like a pretty nice site keep up the work.
very F***ing song remains the same
To everyone who sucks-up for the fame
Out of strength you know we speak the truth
Every trend that dies is living proof

MasterMinds Software
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)