ex.hlp (Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
GET and PUT Statements (Graphics) Example
                        Example                Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
' This example uses GET to put a spaceship graphic into an array. The PUT
' statement is then used to display the ship array in different locations
' depending on user input.
 
' To try this example:
' 1. Choose New Project from the File menu
' 2. Copy the code example below to the code window
' 3. Press F5 to run the example
 
 ON ERROR RESUME NEXT
 
 CONST g = .01                   ' Gravity
 CONST vThrust = .005            ' Horizontal thrust
 CONST hThrust = .01             ' Vertical thrust
 
 SCREEN 2
 CLS
 
' Calculate size of array for ship array.
 arraybytes = 4 + INT(((60 - 40 + 1) * 1 + 7) / 8) * 1 * ((60 - 50) + 1)
 DIM ship(arraybytes / 2) AS INTEGER
 
 LINE (50, 50)-(40, 60)              ' Draw ship
 LINE (40, 60)-(60, 60)
 LINE (60, 60)-(50, 50)
 GET (40, 50)-(60, 60), ship         ' Get ship image into array
 CLS
 
 X = 310: Y = 10                     ' Set initial conditions
 vx = 0: vy = 0
 ax = 0: ay = g
 
 PRINT " i"                          ' Print help keys
 PRINT "j k"
 PRINT " m"
 
 LOCATE 25, 1                        ' Print initial conditions
 PRINT "ax="; USING "+#.###    "; ax;
 PRINT "ay="; USING "+#.###    "; ay;
 LINE (0, 190)-(639, 190)
 PUT (X, Y), ship, PSET              ' Draw ship
 
 DO
     vx = vx + ax: vy = vy + ay      ' Calculate velocity
     newx = X + vx: newy = Y + vy    ' Calculate new x and y position
     PUT (X, Y), ship, XOR           ' Erase ship at current position
     PUT (newx, newy), ship, PSET    ' Draw ship at new location
     X = newx: Y = newy
 
     a$ = INKEY$                     ' Check keys
     SELECT CASE LCASE$(a$)
     CASE "m", "i", "j", "k":
         SELECT CASE a$
         CASE "m":                   ' Down key
             ay = ay + vThrust
         CASE "i":                   ' Up key
             ay = ay - vThrust
         CASE "j":                   ' Left key
             ax = ax - hThrust
         CASE "k":                   ' Right key
             ax = ax + hThrust
         END SELECT
 
     LOCATE 25, 1                            ' Print accelerations
     PRINT "ax="; USING "+#.###    "; ax;
     PRINT "ay="; USING "+#.###    "; ay;
     END SELECT
 
     LOCATE 25, 40                           ' Print velocities
     PRINT "vx="; USING "+##.###    "; vx;
     PRINT "vy="; USING "+#.###"; vy;
 LOOP UNTIL Y > 180 OR ERR <> 0              ' Loop until landed or crashed
 
 IF ERR <> 0 OR vy > .2 THEN                 ' Crashed if velocity is greater
     CLS                                     ' than .2 or if ship went off
     LOCATE 12, 33: PRINT "You crashed!"     ' screen
 ELSE
     LOCATE 12, 33: PRINT "You made it!"
 END IF