hello everyone, i'm pretty new at programming (only 16 here) and i'm in my 2nd year in QBasic class in high school. my class is verrry boring and i tend to go ahead of my class a little. Anyways, this is a program that i've been messing around with, (it's obviously not done) and i was wondering if you guys could give me some tips or feedback or anything would be appreciated. i'm not familiar with any real graphics techniques, such as storing graphics in separate files or anything like that, but i just thought some of you guys might get a kick out of it, so here it is, try it out, tell me what you think. thanks alot =) -Mike (mpaone@mediaone.net)
DEFINT A-Z
COMMON SHARED z, scol, zshot, yshot, shot, radius, x, y, speed, sc, counter2
COMMON SHARED bc
DECLARE SUB fire ()
RANDOMIZE TIMER
SCREEN 12: CLS
shot = 0: bc = 1: radius = 5: speed = 5: boardshot = 0: sc = 1
DO
y = INT(RND * 400) + 1
r = INT(RND * 3) + 1
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF 'board thing
SOUND 5000, 1
FOR x = 0 TO 650 STEP r
LOCATE 1, 10: PRINT "Speed ="; speed
LOCATE 2, 10: PRINT "bc ="; bc
LOCATE 3, 10: PRINT "yshot ="; yshot
mcol = INT(RND * 9) + 6
IF starcount < 100 THEN
xstar = INT(RND * 640)
ystar = INT(RND * 480) 'makes stars
chance = INT(RND * 10)
IF chance = 5 THEN
PSET (xstar, ystar), 1
starcount = starcount + 1
ELSE PSET (xstar, ystar), 0
END IF
END IF
counter = counter + 1
IF counter < 62 THEN
PALETTE 1, sc * 256 ^ 2 + sc * 256 + sc
sc = sc + 1
ELSE
PALETTE 1, sc * 256 ^ 2 + sc * 256 + sc
sc = sc - 1
END IF
IF counter > 123 THEN
counter = 0
sc = 1
END IF
LINE (x, y)-(x, y), 14 'missle thing
CIRCLE (x, y), 3, mcol
CIRCLE (x - r, y), 3, 0
FOR t = 1 TO 20000: NEXT t
FOR t = 1 TO 20000: NEXT t
key$ = INKEY$
IF key$ = CHR$(0) + CHR$(77) THEN
LINE (z + 320, 460)-(z + 20 + 320, 463), 0, BF
z = z + 10
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF
ELSEIF key$ = CHR$(0) + CHR$(75) THEN
LINE (z + 320, 460)-(z + 20 + 320, 463), 0, BF
z = z - 10
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF
ELSEIF key$ = "x" THEN
IF speed = 10 THEN speed = speed ELSE speed = speed + 1
ELSEIF key$ = "z" THEN
IF speed = 5 THEN speed = speed ELSE speed = speed - 1
ELSEIF shot = 0 THEN
IF key$ = CHR$(32) THEN
snd = INT(RND * 1000) + 400
SOUND snd, .5
shot = 1
boardshot = 1
END IF
END IF
IF shot = 1 THEN CALL fire
IF yshot > 440 THEN GOSUB shotsetback
LINE (0, y)-(x, y), 14 'redraw missle
NEXT x
LINE (0, y)-(x, y), 0 'erase missle
LOOP
shotsetback:
yshot = 0: shot = 0: zshot = 0: boardshot = 0
RETURN
'LOCATE 1, 50: PRINT "x ="; x
'LOCATE 2, 50: PRINT "r ="; r
'LOCATE 3, 50: PRINT "z ="; z
'LOCATE 4, 50: PRINT "shot ="; shot
'LOCATE 5, 50: PRINT "zshot ="; zshot
'LOCATE 6, 50: PRINT "yshot ="; yshot
'LOCATE 7, 50: PRINT "y ="; y
'LOCATE 8, 50: PRINT "480 - y ="; 480 - y
SUB fire
IF zshot = 0 THEN
zshot = z + 10 + 320
END IF
scol = 15
counter2 = counter2 + 1
IF counter2 < 62 THEN
PALETTE 12, 0 * 256 + 0 * 256 ^ 2 + bc
bc = bc + 1
ELSE
PALETTE 12, 0 * 256 + 0 * 256 ^ 2 + bc
bc = bc - 1
END IF
IF counter2 > 123 THEN
counter2 = 0
bc = 1
END IF
LINE (zshot - 5, 430 - yshot)-(zshot, 420 - yshot), 8
LINE (zshot, 420 - yshot)-(zshot + 5, 430 - yshot), 8
LINE (zshot + 5, 430 - yshot)-(zshot - 5, 430 - yshot), 8
PAINT (zshot, 422 - yshot), 15, 8
LINE (zshot - 5, 430 - yshot + speed)-(zshot, 420 - yshot + speed), 0
LINE (zshot, 420 - yshot + speed)-(zshot + 5, 430 - yshot + speed), 0
LINE (zshot + 5, 430 - yshot + speed)-(zshot - 5, 430 - yshot + speed), 0
PAINT (zshot, 422 - yshot + speed), 0, 0
radius = radius + 1
IF radius > 5 THEN radius = 1
yshot = yshot + speed
IF yshot + 40 < (480 - y) AND yshot + 50 > (480 - y) THEN
IF zshot > x - 10 AND zshot < x + 15 THEN
FOR q# = 1 TO 20 STEP .1
CIRCLE (x, y), q#, 12
NEXT q#
END IF
END IF
END SUB
DEFINT A-Z
COMMON SHARED z, scol, zshot, yshot, shot, radius, x, y, speed, sc, counter2
COMMON SHARED bc
DECLARE SUB fire ()
RANDOMIZE TIMER
SCREEN 12: CLS
shot = 0: bc = 1: radius = 5: speed = 5: boardshot = 0: sc = 1
DO
y = INT(RND * 400) + 1
r = INT(RND * 3) + 1
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF 'board thing
SOUND 5000, 1
FOR x = 0 TO 650 STEP r
LOCATE 1, 10: PRINT "Speed ="; speed
LOCATE 2, 10: PRINT "bc ="; bc
LOCATE 3, 10: PRINT "yshot ="; yshot
mcol = INT(RND * 9) + 6
IF starcount < 100 THEN
xstar = INT(RND * 640)
ystar = INT(RND * 480) 'makes stars
chance = INT(RND * 10)
IF chance = 5 THEN
PSET (xstar, ystar), 1
starcount = starcount + 1
ELSE PSET (xstar, ystar), 0
END IF
END IF
counter = counter + 1
IF counter < 62 THEN
PALETTE 1, sc * 256 ^ 2 + sc * 256 + sc
sc = sc + 1
ELSE
PALETTE 1, sc * 256 ^ 2 + sc * 256 + sc
sc = sc - 1
END IF
IF counter > 123 THEN
counter = 0
sc = 1
END IF
LINE (x, y)-(x, y), 14 'missle thing
CIRCLE (x, y), 3, mcol
CIRCLE (x - r, y), 3, 0
FOR t = 1 TO 20000: NEXT t
FOR t = 1 TO 20000: NEXT t
key$ = INKEY$
IF key$ = CHR$(0) + CHR$(77) THEN
LINE (z + 320, 460)-(z + 20 + 320, 463), 0, BF
z = z + 10
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF
ELSEIF key$ = CHR$(0) + CHR$(75) THEN
LINE (z + 320, 460)-(z + 20 + 320, 463), 0, BF
z = z - 10
LINE (z + 320, 460)-(z + 20 + 320, 463), 12, BF
ELSEIF key$ = "x" THEN
IF speed = 10 THEN speed = speed ELSE speed = speed + 1
ELSEIF key$ = "z" THEN
IF speed = 5 THEN speed = speed ELSE speed = speed - 1
ELSEIF shot = 0 THEN
IF key$ = CHR$(32) THEN
snd = INT(RND * 1000) + 400
SOUND snd, .5
shot = 1
boardshot = 1
END IF
END IF
IF shot = 1 THEN CALL fire
IF yshot > 440 THEN GOSUB shotsetback
LINE (0, y)-(x, y), 14 'redraw missle
NEXT x
LINE (0, y)-(x, y), 0 'erase missle
LOOP
shotsetback:
yshot = 0: shot = 0: zshot = 0: boardshot = 0
RETURN
'LOCATE 1, 50: PRINT "x ="; x
'LOCATE 2, 50: PRINT "r ="; r
'LOCATE 3, 50: PRINT "z ="; z
'LOCATE 4, 50: PRINT "shot ="; shot
'LOCATE 5, 50: PRINT "zshot ="; zshot
'LOCATE 6, 50: PRINT "yshot ="; yshot
'LOCATE 7, 50: PRINT "y ="; y
'LOCATE 8, 50: PRINT "480 - y ="; 480 - y
SUB fire
IF zshot = 0 THEN
zshot = z + 10 + 320
END IF
scol = 15
counter2 = counter2 + 1
IF counter2 < 62 THEN
PALETTE 12, 0 * 256 + 0 * 256 ^ 2 + bc
bc = bc + 1
ELSE
PALETTE 12, 0 * 256 + 0 * 256 ^ 2 + bc
bc = bc - 1
END IF
IF counter2 > 123 THEN
counter2 = 0
bc = 1
END IF
LINE (zshot - 5, 430 - yshot)-(zshot, 420 - yshot), 8
LINE (zshot, 420 - yshot)-(zshot + 5, 430 - yshot), 8
LINE (zshot + 5, 430 - yshot)-(zshot - 5, 430 - yshot), 8
PAINT (zshot, 422 - yshot), 15, 8
LINE (zshot - 5, 430 - yshot + speed)-(zshot, 420 - yshot + speed), 0
LINE (zshot, 420 - yshot + speed)-(zshot + 5, 430 - yshot + speed), 0
LINE (zshot + 5, 430 - yshot + speed)-(zshot - 5, 430 - yshot + speed), 0
PAINT (zshot, 422 - yshot + speed), 0, 0
radius = radius + 1
IF radius > 5 THEN radius = 1
yshot = yshot + speed
IF yshot + 40 < (480 - y) AND yshot + 50 > (480 - y) THEN
IF zshot > x - 10 AND zshot < x + 15 THEN
FOR q# = 1 TO 20 STEP .1
CIRCLE (x, y), q#, 12
NEXT q#
END IF
END IF
END SUB