Написала простую игрушку на бейсике . кто разберается скопируйте и оцените .текст вот:
SCREEN 12: RANDOMIZE TIMER 'MGF 2007
DIM w(1 TO 9, 1 TO 18, 1 TO 4), b(1 TO 9, 1 TO 6, 1 TO 2), p(1 TO 9, 1 TO 6, 1 TO 2) AS INTEGER
DIM x, y, nrb, nrp, ba, fo, xmax, ymax, neu, ver, ver2, lin, sklc AS INTEGER
DIM del, bx, by, px, py, ri, wa, scr, nr, cr, c, ge, bump AS INTEGER
DIM bl1%(1500), bl2%(1500), bl3%(1500), bl4%(1500), skl1a%(650), skl2a%(650)
DIM skl3a%(650), skl4%(650), skl1b%(650), skl2b%(650), skl3b%(650), kreuz%(290)
DIM speer1%(280), speer2%(280), speer3%(280), speer4%(280), speer5%(280), speer6%(280)
DIM speer7%(280), speer8%(280), kaefer1%(900), kaefer2%(900), kaefer3%(900), kaefer4%(900)
ba = 0: fo = 3: ge = 11: lin = 7: sklc = 15 '>Colors
geduld% = 20: wec% = geduld%: gr% = 4
dauer% = 10: max = 1: be = max / 10: test% = 0
GOSUB plan: GOSUB getall
start:
FOR i% = 1 TO 30: cc$ = INKEY$: NEXT
LOCATE 15, 22: PRINT "SKULL (ARROWS TO NAVIGATE, ESCAPE QUITS)": SLEEP 3
x = 315: y = 280: scr = 7: xspd = 0: yspd = 0: zeitlimit% = 10000: xxx% = 0
scrk% = 6: xk% = 360: yk% = 204: xkspd% = -1
GOSUB neu: startzeit = TIMER
DO '----------------------------------------------
eingabe$ = INKEY$
GOSUB bewegung: GOSUB zeit: GOSUB rand
GOSUB wand: GOSUB blitz: GOSUB speer: GOSUB ziel
GOSUB tier: GOSUB gefahr
GOSUB skull
LOOP '--------------------------------------------
skull:
IF xxx% > 0 THEN
xxx% = xxx% - 1
IF t < dreh% / 4 THEN
IF comp% = 0 THEN PUT (x, y), skl1a%, PSET
IF comp% = 1 THEN PUT (x, y), skl1b%, PSET
ELSEIF t < (dreh% / 4) * 2 THEN
IF comp% = 0 THEN PUT (x, y), skl2a%, PSET
IF comp% = 1 THEN PUT (x, y), skl2b%, PSET
ELSEIF t < (dreh% / 4) * 3 THEN
IF comp% = 0 THEN PUT (x, y), skl3a%, PSET
IF comp% = 1 THEN PUT (x, y), skl3b%, PSET
ELSEIF t < dreh% THEN PUT (x, y), skl4%, PSET
END IF
IF xxx% = 0 AND dreh% < dauer% THEN
dreh% = dreh% + 1: xxx% = dreh% * dauer%: t = dreh% / 2
END IF
ELSE
IF comp% = 0 THEN PUT (x, y), skl2a%, PSET
IF comp% = 1 THEN PUT (x, y), skl2b%, PSET
END IF
RETURN
bewegung:
IF eingabe$ <> "" THEN comp% = 0: wart = 0
IF comp% = 0 THEN
wahl$ = eingabe$
ELSE
zz% = INT(RND * (wec% + 4)) + 1
SELECT CASE zz%
CASE 1: wahl$ = CHR$(0) + "H"
CASE 2: wahl$ = CHR$(0) + "P"
CASE 3: wahl$ = CHR$(0) + "K"
CASE 4: wahl$ = CHR$(0) + "M"
CASE ELSE: wahl$ = ""
END SELECT
END IF
SELECT CASE wahl$
CASE CHR$(0) + "H"
IF yspd > -max THEN
yspd = yspd - be
IF xspd > 0 THEN xspd = xspd - be
IF xspd < 0 THEN xspd = xspd + be
END IF
GOSUB rundung
CASE CHR$(0) + "P"
IF yspd < max THEN
yspd = yspd + be
IF xspd > 0 THEN xspd = xspd - be
IF xspd < 0 THEN xspd = xspd + be
END IF
GOSUB rundung
CASE CHR$(0) + "K"
IF xspd > -max THEN
xspd = xspd - be
IF yspd > 0 THEN yspd = yspd - be
IF yspd < 0 THEN yspd = yspd + be
END IF
GOSUB rundung
CASE CHR$(0) + "M"
IF xspd < max THEN
xspd = xspd + be
IF yspd > 0 THEN yspd = yspd - be
IF yspd < 0 THEN yspd = yspd + be
END IF
GOSUB rundung
CASE ELSE
IF comp% = 0 THEN wart = wart + .01
END SELECT
IF wart > geduld% THEN comp% = 1: wart = 0
y = y + yspd: x = x + xspd
IF test% = 1 THEN
LOCATE 25, 1: PRINT "Speed", ABS(xspd) + ABS(yspd)
LOCATE 26, 1: PRINT "Computer", INT(geduld% - wart)
LOCATE 27, 1: PRINT "Screen", scr
LOCATE 28, 1: PRINT "Position"; INT(x), INT(y)
END IF
RETURN
neu:
nrb = 0
DO: nrb = nrb + 1: LOOP UNTIL b(scr, nrb, 1) + b(scr, nrb, 2) = 0: nrb = nrb - 1
nrp = 0
DO: nrp = nrp + 1: LOOP UNTIL p(scr, nrp, 1) + p(scr, nrp, 2) = 0: nrp = nrp - 1
nrx = 0
DO: nrx = nrx + 1: LOOP UNTIL w(scr, nrx, 1) + w(scr, nrx, 3) = 0: nrx = nrx - 1
CLS
FOR nr = 1 TO nrx
FOR c = 1 TO 4
cr(c) = w(scr, nr, c)
NEXT
x1% = cr(1) * 10: y1% = cr(2) * 10: x2% = cr(3) * 10: y2% = cr(4) * 10
IF x1% = 0 THEN x1% = 1
IF x2% = 640 THEN x2% = 638
IF y1% = 0 THEN y1% = 1
IF y2% = 480 THEN y2% = 478
LINE (x1%, y1%)-(x2%, y2%), fo, BF
IF test% = 1 THEN LINE (x1%, y1%)-(x2%, y2%), 14
NEXT
IF ba > 0 THEN PAINT (0, 0), ba, fo
IF test% = 1 THEN GOSUB gitter
w% = 0: tp% = 0
IF scr = zscr% THEN PUT (zx%, zy%), kreuz%, PSET
RETURN
wand:
wa = 0: ver = 6: ver2 = 1
SELECT CASE fo
CASE POINT(x + xmax, y + ymax / 2), POINT(x + xmax, y + (ymax / 2 - ver)), POINT(x + xmax, y + (ymax / 2 + ver)): wa = 1
CASE POINT(x + xmax / 2, y + ymax), POINT(x + (xmax / 2 - ver), y + ymax), POINT(x + (xmax / 2 + ver), y + ymax): wa = 2
CASE POINT(x - ver2, y + ymax / 2), POINT(x - ver2, y + (ymax / 2 - ver)), POINT(x - ver2, y + (ymax / 2 + ver)): wa = 3
CASE POINT(x + xmax / 2, y - ver2), POINT(x + (xmax / 2 - ver), y - ver2), POINT(x + (xmax / 2 + ver), y - ver2): wa = 4
CASE POINT(x + xmax, y + ymax): wa = 5
CASE POINT(x - ver2, y + ymax): wa = 6
CASE POINT(x - ver2, y - ver2): wa = 7
CASE POINT(x + xmax, y - ver2): wa = 8
END SELECT
IF wa > 0 THEN
bump = 1
IF xspd > 0 AND yspd = 0 THEN
xspd = xspd * -1 + be: x = x - bump: IF wa >= 5 THEN yspd = yspd * -1
ELSEIF xspd < 0 AND yspd = 0 THEN
xspd = xspd * -1 - be: x = x + bump: IF wa >= 5 THEN yspd = yspd * -1
ELSEIF xspd = 0 AND yspd < 0 THEN
yspd = yspd * -1 - be: y = y + bump: IF wa >= 5 THEN xspd = xspd * -1
ELSEIF xspd = 0 AND yspd > 0 THEN
yspd = yspd * -1 + be: y = y - bump: IF wa >= 5 THEN xspd = xspd * -1
ELSEIF xspd > 0 AND yspd < 0 THEN
SELECT CASE wa
CASE 4, 7: yspd = yspd * -1 - be: x = x + bump: y = y + bump
CASE 1, 5: xspd = xspd * -1 + be: x = x - bump: y = y - bump
CASE 8: xspd = xspd * -1
END SELECT
ELSEIF xspd > 0 AND yspd > 0 THEN
SELECT CASE wa
CASE 2, 6: yspd = yspd * -1 + be: x = x + bump: y = y - bump
CASE 1, 8: xspd = xspd * -1 + be: x = x - bump: y = y + bump
CASE 5: xspd = xspd * -1
END SELECT
ELSEIF xspd < 0 AND yspd > 0 THEN
SELECT CASE wa
CASE 2, 5: yspd = yspd * -1 + be: x = x - bump: y = y - bump
CASE 3, 7: xspd = xspd * -1 - be: x = x + bump: y = y + bump
CASE 6: xspd = xspd * -1
END SELECT
ELSEIF xspd < 0 AND yspd < 0 THEN
SELECT CASE wa
CASE 4, 8: yspd = yspd * -1 - be: x = x - bump: y = y + bump
CASE 3, 6: xspd = xspd * -1 - be: x = x + bump: y = y + bump
CASE 7: xspd = xspd * -1
END SELECT
END IF
SOUND 100, .2
dreh% = dauer% - (dauer% / 2) * (2 * (ABS(xspd) + ABS(yspd)))
IF xxx% = 0 THEN xxx% = dreh% * dauer%: t = dreh% / 2
END IF
RETURN
rand:
IF x >= 639 - xmax THEN
scr = scr + 1: x = 2: GOSUB neu
ELSEIF x <= 1 THEN scr = scr - 1: x = 638 - xmax: GOSUB neu
ELSEIF y >= 479 - ymax THEN scr = scr + 3: y = 2: GOSUB neu
ELSEIF y <= 1 THEN scr = scr - 3: y = 478 - ymax: GOSUB neu
END IF
RETURN
rundung:
xspd = xspd * 10: xspd = INT(xspd + .5): xspd = xspd / 10
yspd = yspd * 10: yspd = INT(yspd + .5): yspd = yspd / 10
RETURN
zeit:
zeit% = zeitlimit% - (INT(TIMER - startzeit))
IF eingabe$ = CHR$(27) THEN zeit% = 0
LOCATE 1, 1: PRINT zeit%
IF zeit% <= 0 THEN GOSUB explosion
IF t < dreh% THEN
t = t + .1
ELSE t = 0
END IF
RETURN
tier:
IF scr = scrk% THEN
IF t3% <= 20 THEN
t3% = t3% + 1
ELSE
t3% = 0
END IF
IF t3% = 1 OR t3% = 10 THEN
IF ka% <= 10 THEN
ka% = ka% + 1
ELSE
ka% = 1
END IF
xk% = xk% + xkspd%
IF POINT(xk% + kxmax% + 1, yk% + kymax% / 2) = fo OR xk% = 639 - xkmax% THEN xk% = xk% - 3: xkspd% = -1
IF POINT(xk% - 1, yk% + kymax% / 2) = fo OR xk% = 1 THEN xk% = xk% + 3: xkspd% = 1
IF xkspd% = 1 AND POINT(xk% + kxmax% + 1, yk% + kymax% / 2) = lin THEN
xspd = xspd + .1: SOUND 100, .2
ELSEIF xkspd% = -1 AND POINT(xk% - 1, yk% + kymax% / 2) = lin THEN xspd = xspd - .1: SOUND 100, .2
ELSE
IF POINT(xk% + kxmax%, yk% + kymax% / 2) = sklc THEN GOSUB explosion
IF POINT(xk%, yk% + kymax% / 2) = sklc THEN GOSUB explosion
END IF
SELECT CASE ka%
CASE IS < 5
IF xkspd% > 0 THEN PUT (xk%, yk%), kaefer1%, PSET
IF xkspd% < 0 THEN PUT (xk%, yk%), kaefer3%, PSET
CASE ELSE
IF xkspd% > 0 THEN PUT (xk%, yk%), kaefer2%, PSET
IF xkspd% < 0 THEN PUT (xk%, yk%), kaefer4%, PSET
END SELECT
END IF
END IF
RETURN
speer:
tp% = tp% + 1
FOR nr = 1 TO nrp
FOR c = 1 TO 2
cr(c) = p(scr, nr, c)
NEXT
px = (cr(1) * 10) + 5: py = (cr(2) * 10) - 8
SELECT CASE tp% / 20
CASE 1: PUT (px, py), speer7%, PSET
CASE 4: PUT (px, py), speer6%, PSET
CASE 5: PUT (px, py), speer5%, PSET
CASE 6: PUT (px, py), speer4%, PSET
CASE 7: PUT (px, py), speer3%, PSET
CASE 8: PUT (px, py), speer2%, PSET
CASE 9: PUT (px, py), speer1%, PSET
CASE 10: PUT (px, py), speer8%, PSET
CASE 11: tp% = 0
END SELECT
NEXT
RETURN
blitz:
t2 = t2 + 1
IF t2 = 15 THEN t2 = 0
IF t2 = 1 THEN
w% = w% + 1
FOR nr = 1 TO nrb
FOR c = 1 TO 2
cr(c) = b(scr, nr, c)
NEXT
bx = (cr(1) * 10) + 5: by = (cr(2) * 10) - 8
SELECT CASE w%
CASE 1, 4, 7: PUT (bx, by), bl1%, PSET
CASE 2, 5, 8: PUT (bx, by), bl2%, PSET
CASE 3, 6, 9: PUT (bx, by), bl3%, PSET
CASE 10: PUT (bx, by), bl4%, PSET
CASE 16: w% = 0
END SELECT
NEXT
END IF
RETURN
gefahr:
wa = 1
SELECT CASE ge
CASE POINT(x + xmax, y + ymax / 2), POINT(x + xmax / 2, y + ymax), POINT(x - 1, y + ymax)
CASE POINT(x + xmax / 2, y - 1), POINT(x + xmax, y + ymax), POINT(x - 1, y + ymax)
CASE POINT(x - 1, y - 1), POINT(x + xmax, y - 1), POINT(x + xmax / 2, y + ymax / 2)
CASE ELSE: wa = 0
END SELECT
IF wa = 1 THEN GOSUB explosion
RETURN
ziel:
IF scr = zscr% THEN
wa = 1
SELECT CASE 9
CASE POINT(x + 21, y + 10), POINT(x + 10, y + 21), POINT(x - 1, y + 10)
CASE POINT(x + 10, y - 1), POINT(x + 21, y + 21), POINT(x - 1, y + 21)
CASE POINT(x - 1, y - 1), POINT(x + 21, y - 1)
CASE ELSE: wa = 0
END SELECT
IF wa = 1 THEN
PLAY "o1l26cedgabfd 2, y + ymax / 2), rad2%, l% / 10
NEXT
SOUND col%, .1
NEXT
ende:
LOCATE 15, 36: PRINT "GAME OVER.Dj Morgan freemen inc.": SLEEP 3
IF eingabe$ <> CHR$(27) THEN GOSUB start
[700x525]