Написала простую игрушку на бейсике . кто разберается скопируйте и оцените .текст вот:
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:
Читать далее...