CLS SCREEN 12 CLS DIM a$(90) DIM y(6000), x(6000) DIM u(6000), i(6000) zoom = 8 wl = 2: wr = 2: cl = 14: clip1 = 0: clip2 = 1 spx = 1: fx = 100: fy = 100 rf = 1: lim = 50 z = 4: sp = 40: bgr = 8 wlc = 1: rlc = 1 lv = 3: lvo = lv cl1 = 3: ncl1 = cl: ncl2 = cl1 it$ = "3" zeit = 0 wl$ = "2" trn = 1: ix = 1: iy = 1: pl = 0 le$ = "NONE": pl$(3) = "-1-": pl$(4) = "" pl$(1) = " -1- ": pl$(2) = " -2- " FOR f = 1 TO 26 a$(f) = CHR$(f + 96) PRINT a$(f); NEXT GOSUB ras GOSUB options raster: px = 161: py = 101 ux = 300: uy = 150 lx = -zoom: ly = 0 rx = zoom: ry = 0 GOSUB ras GOSUB punkte DO g$ = INKEY$ pz = pz + 1 IF pz < sp GOTO po pz = 0 fcl = fcl + 1: IF fcl > 15 THEN fcl = 5 IF fcl = bgr THEN fcl = fcl + 1 IF spx THEN PAINT (fx, fy), fcl, bgr x(wlc) = px: px = px + rx IF pl = 2 OR pl = 0 THEN IF px > 624 THEN IF clip1 THEN px = 17 ELSE lose = 1: GOTO weck IF px < zoom THEN IF clip1 THEN px = 623 ELSE lose = 1: GOTO weck y(wlc) = py: py = py + ry IF py > 465 THEN IF clip1 THEN py = 17 ELSE lose = 1: GOTO weck IF py < zoom THEN IF clip1 THEN py = 457 ELSE lose = 1: GOTO weck END IF u(rlc) = ux: ux = ux + lx IF pl = 2 OR pl = 1 THEN IF ux > 620 THEN IF clip2 THEN ux = 17 ELSE lose = 1: GOTO weck IF ux < zoom * 2 THEN IF clip2 THEN ux = 623 ELSE lose = 1: GOTO weck i(rlc) = uy: uy = uy + ly IF uy > 460 THEN IF clip2 THEN uy = 17 ELSE lose = 1: GOTO weck IF uy < zoom * 2 THEN IF clip2 THEN uy = 465 ELSE lose = 1: GOTO weck END IF wlc = wlc + 1 IF wlc > 5000 THEN wlc = 1 IF wlc < wl THEN wlo = 5000 - wl + wlc + 1 ELSE wlo = wlc - wl - 1 IF wlo < 1 THEN wlo = 1 rlc = rlc + 1 IF rlc > 5000 THEN rlc = 1 IF rlc < wr THEN rlo = 5000 - wr + rlc + 1 ELSE rlo = rlc - wr - 1 IF rlo < 1 THEN rlo = 1 cur1 = POINT(px, py) cur2 = POINT(ux, uy) SELECT CASE cur1 CASE cl: lose = 1: GOTO weck CASE cl1: lose = 1: GOTO weck CASE ncl1: lose = 1: GOTO weck CASE ncl2: lose = 1: GOTO weck END SELECT SELECT CASE cur2 CASE cl: lose = 2: GOTO weck CASE cl1: lose = 2: GOTO weck CASE ncl1: lose = 2: GOTO weck CASE ncl2: lose = 2: GOTO weck END SELECT IF pl = 2 OR pl = 0 AND POINT(px, py) <> 0 THEN SELECT CASE POINT(px, py) CASE 1 cl = 1: GOSUB punkte CASE 2 wl = wl + 10: pnt(1) = pnt(1) + 20 cl = 2: GOSUB punkte CASE 3: wl = wl + 2: pnt(1) = pnt(1) + 30 cl = 3: GOSUB punkte CASE 4: ' wl = wl + 4: pnt(1) = pnt(1) + 20 cl = 4: GOSUB punkte CASE 5: wl = wl + 3: pnt(1) = pnt(1) + 15: cl = 5: GOSUB punkte CASE 6: pnt(1) = pnt(1) + 4 cl = 6: GOSUB punkte CASE 7: wl = wl + 5: pnt(1) = pnt(1) + 25: cl = 7: GOSUB punkte CASE 8: wl = wl + 5: pnt(1) = pnt(1) + 2 cl = 8: GOSUB punkte CASE 9: wl = wl + 5: pnt(1) = pnt(1) + 5 cl = 9: GOSUB punkte CASE 10: wl = wl + 10: pnt(1) = pnt(1) + 4 cl = 10: GOSUB punkte CASE 11: wl = wl + 10: pnt(1) = pnt(1) + 20: cl = 11: GOSUB punkte CASE 12: wl = wl + 2: pnt(1) = pnt(1) + 2 cl = 12: GOSUB punkte CASE 13: wl = wl + 10: pnt(1) = pnt(1) + 20: cl = 13: GOSUB punkte CASE 14: wl = wl + 2: pnt(1) = pnt(1) + 3 cl = 14: GOSUB punkte CASE 15 clip1 = 1: pnt(1) = pnt(1) + 50 cl = 15: GOSUB punkte END SELECT IF wl >= lim THEN win = 1: GOTO weck END IF IF pl = 2 OR pl = 1 AND POINT(ux, uy) <> 0 THEN SELECT CASE POINT(ux, uy) CASE 1 cl1 = 1: GOSUB punkte CASE 2 wr = wr + 10: pnt(2) = pnt(2) + 20 cl1 = 2: GOSUB punkte CASE 3: wr = wr + 2: pnt(2) = pnt(2) + 30 cl1 = 3: GOSUB punkte CASE 4: ' wr = wr + 4: pnt(2) = pnt(2) + 20 cl1 = 4: GOSUB punkte CASE 5: wr = wr + 3: pnt(2) = pnt(2) + 15: cl1 = 5: GOSUB punkte CASE 6: pnt(2) = pnt(2) + 4 cl1 = 6: GOSUB punkte CASE 7: wr = wr + 5: pnt(2) = pnt(2) + 25: cl1 = 7: GOSUB punkte CASE 8: wr = wr + 5: pnt(2) = pnt(2) + 2 cl1 = 8: GOSUB punkte CASE 9: pnt(2) = pnt(2) + 5 cl1 = 9: GOSUB punkte CASE 10: wr = wr + 10: pnt(2) = pnt(2) + 4 cl1 = 10: GOSUB punkte CASE 11: wr = wr + 10: pnt(2) = pnt(2) + 20: cl1 = 11: GOSUB punkte CASE 12: wr = wr + 2: pnt(2) = pnt(2) + 2 cl1 = 12: GOSUB punkte CASE 13: wr = wr + 10: pnt(2) = pnt(2) + 20: cl1 = 13: GOSUB punkte CASE 14: wr = wr + 2: pnt(2) = pnt(2) + 3 cl1 = 14: GOSUB punkte CASE 15: clip2 = 1: pnt(2) = pnt(2) + 50 cl1 = 15: GOSUB punkte END SELECT IF wr >= lim THEN win = 2: GOTO weck END IF po: SELECT CASE g$ CASE "y" IF lx = 0 THEN lx = -zoom: ly = 0 CASE "c" IF lx = 0 THEN lx = zoom: ly = 0 CASE "x" IF ly = 0 THEN ly = zoom: lx = 0 CASE "d" IF ly = 0 THEN ly = -zoom: lx = 0 END SELECT SELECT CASE RIGHT$(g$, 1) CASE "o" GOSUB options: GOTO raster CASE "K" IF rx = 0 THEN rx = -zoom: ry = 0 CASE "M" IF rx = 0 THEN rx = zoom: ry = 0 CASE "P" IF ry = 0 THEN ry = zoom: rx = 0 CASE "H" IF ry = 0 THEN ry = -zoom: rx = 0 CASE ELSE END SELECT rf = INT(RND(1) * 20000) SELECT CASE rf CASE 1000 TO 1001 spx = 0 CASE 2000 TO 2001 clip1 = 0 CASE 2003 TO 2004 clip2 = 0 CASE 8000 TO 8050 fx = INT(RND(1) * 400 + 20): fy = INT(RND(1) * 350 + 50) spx = 1 CASE 8000 TO 8015 vx = INT(RND(1) * 400 + 20): vy = INT(RND(1) * 350 + 50) IF vx = fx AND vy = fy THEN vx = vx + zoom rcl = INT(RND(1) * 16) IF rcl = cl OR rcl = cl1 OR rcl = bgr THEN rcl = 0 PAINT (vx, vy), rcl, bgr: IF rcl <> 0 THEN ocl = rcl END SELECT IF pl = 0 OR pl = 2 THEN IF clip1 THEN PAINT (x(wlc - 1), y(wlc - 1)), cl, bgr: PAINT (px, py), fcl, bgr ELSE PAINT (px, py), cl, bgr IF trn THEN PAINT (x(wlo), y(wlo)), 0, bgr END IF IF pl = 2 OR pl = 1 THEN IF clip2 THEN PAINT (u(rlc - 1), i(rlc - 1)), cl1, bgr: PAINT (ux, uy), fcl, bgr ELSE PAINT (ux, uy), cl1, bgr IF trn = 1 THEN PAINT (u(rlo), i(rlo)), 0, bgr END IF LOOP UNTIL g$ = CHR$(27) GOTO ende ras: CLS FOR f = 16 TO 624 STEP zoom LINE (f, 16)-(f, 464), bgr NEXT FOR f = 16 TO 464 STEP zoom LINE (16, f)-(624, f), bgr NEXT RETURN reini: FOR f = 0 TO 50 x(f) = 161: y(f) = 101 NEXT RETURN options: LINE (160, 160)-(480, 320), 3, B PAINT (170, 170), 0, 3 LINE (160, 160)-(480, 320), bgr, B sp$ = STR$(sp): ip$ = STR$(cl) qwahl: i$ = "": COLOR 7 LOCATE 12, 30: PRINT "SNAKY / TRON OPTIONEN" LOCATE 20, 30: PRINT "ESC-Taste zum Beenden" IF ix = 3 AND iy = 1 THEN COLOR 15 LOCATE 16, 22: PRINT "Geschwindikeit:"; sp; " " COLOR 7: IF ix = 4 AND iy = 1 THEN COLOR 15 LOCATE 17, 22: PRINT "Raster:"; zoom; SELECT CASE zoom CASE 16 PRINT "(29x39)" CASE 8 PRINT "(58x78)" CASE 4 PRINT "(116x156)" CASE 2 PRINT "(232x312)" END SELECT COLOR 7: IF ix = 1 AND iy = 2 THEN COLOR 15 LOCATE 14, 44: PRINT "Leben:"; lv COLOR 7: IF ix = 1 AND iy = 1 THEN COLOR 15 LOCATE 14, 22: PRINT "Name : "; RIGHT$(pl$(3), 13) COLOR 7: IF ix = 2 AND iy = 1 THEN COLOR 15 LOCATE 15, 22: PRINT "Name : "; pl$(4) COLOR 7: IF ix = 2 AND iy = 2 THEN COLOR 15 LOCATE 15, 44: PRINT "Modus: "; : IF trn = 1 THEN PRINT "SNAKY" ELSE PRINT "TRON " COLOR 7: IF ix = 3 AND iy = 2 THEN COLOR 15 LOCATE 16, 44: PRINT "Limit:"; lim; " " COLOR 7: IF ix = 4 AND iy = 2 THEN COLOR 15 LOCATE 17, 44: PRINT "LEVEL:"; le$ COLOR 7: IF ix = 5 THEN COLOR 15 LOCATE 18, 22: PRINT "START IT UP" COLOR 7 DO UNTIL i$ <> "" i$ = INKEY$ LOOP IF i$ <> RIGHT$(i$, 1) THEN SELECT CASE RIGHT$(i$, 1) CASE "H" ix = ix - 1: IF ix < 1 THEN ix = 5: iy = iy - 1: IF iy < 1 THEN iy = 2 CASE "K" iy = iy - 1: IF iy < 1 THEN iy = 1 CASE "M" iy = iy + 1: IF iy > 2 THEN iy = 2 CASE "P" ix = ix + 1: IF ix > 5 THEN ix = 1: iy = 1 CASE ELSE END SELECT END IF IF i$ = CHR$(27) GOTO ende IF ASC(i$) = 13 AND ix = 5 THEN GOSUB ras: GOSUB reini: RETURN IF ASC(i$) = 13 AND ix = 2 AND iy = 2 THEN trn = trn + 1: IF trn > 1 THEN trn = 0 IF ASC(i$) = 13 AND ix = 4 AND iy = 1 THEN zoom = zoom * 2: IF zoom > 16 THEN zoom = 2 GOSUB ras: GOTO options END IF IF ix = 3 AND iy = 1 THEN IF ASC(i$) > 47 AND ASC(i$) < 59 THEN sp$ = sp$ + i$: sp = VAL(sp$): IF LEN(sp$) > 3 THEN sp$ = i$: sp = VAL(sp$) END IF IF ix = 1 AND iy = 1 THEN LOCATE 14, 29: PRINT RIGHT$(pl$(3), 13); IF ASC(i$) > 31 THEN pl$(3) = pl$(3) + i$ IF ASC(i$) = 8 THEN IF pl$(3) <> "" THEN pl$(3) = LEFT$(pl$(3), LEN(pl$(3)) - 1) END IF LOCATE 14, 29: PRINT RIGHT$(pl$(3), 13); " " IF pl$(4) = "" AND pl$(3) <> "" THEN pl = 0 END IF IF ix = 2 AND iy = 1 THEN LOCATE 15, 29: PRINT RIGHT$(pl$(4), 13); IF ASC(i$) > 31 THEN pl$(4) = pl$(4) + i$ IF ASC(i$) = 8 THEN IF pl$(4) <> "" THEN pl$(4) = LEFT$(pl$(4), LEN(pl$(4)) - 1) END IF LOCATE 15, 29: PRINT RIGHT$(pl$(4), 13); " " IF pl$(4) <> "" AND pl$(3) = "" THEN pl = 1 IF pl$(4) <> "" AND pl$(3) <> "" THEN pl = 2 END IF IF ix = 3 AND iy = 2 THEN IF ASC(i$) > 47 AND ASC(i$) < 59 THEN lim$ = lim$ + i$: lim = VAL(lim$): IF LEN(lim$) > 3 THEN lim$ = i$: lim = VAL(lim$) END IF IF ix = 1 AND iy = 2 THEN IF i$ = CHR$(13) THEN pl = pl + 1: IF pl > 2 THEN pl = 1 END IF IF ix = 4 AND iy = 1 THEN IF ASC(i$) > 47 AND ASC(i$) < 59 THEN ip$ = ip$ + i$ IF VAL(ip$) > 15 THEN ip$ = i$ cl = VAL(ip$) IF ASC(i$) = 13 THEN cl = cl + 1 IF cl > 15 THEN cl = 1 IF cl = bgr THEN cl = 9 ip$ = STR$(cl) END IF IF ix = 5 AND iy = 1 THEN IF ASC(i$) > 47 AND ASC(i$) < 59 THEN it$ = it$ + i$ IF VAL(it$) > 15 THEN it$ = i$ cl1 = VAL(it$) IF ASC(i$) = 13 THEN cl1 = cl1 + 1 IF cl1 > 15 THEN cl1 = 1 IF cl1 = bgr THEN cl1 = 9 it$ = STR$(cl1) END IF IF ix = 1 AND iy = 2 THEN IF ASC(i$) > 47 AND ASC(i$) < 59 THEN lv = VAL(i$) IF ASC(i$) = 45 THEN lv = -1 lvo = lv END IF GOTO qwahl punkte: LOCATE 1, 3: PRINT pl$(3); pnt(1); "/"; wl LOCATE 1, 33: PRINT "Limit:"; lim LOCATE 1, 77 - LEN(pl$(4) + STR$(pnt(1)) + STR$(wl)) PRINT pl$(4); STR$(pnt(1)); " /"; STR$(wl); LINE (360, 3)-(370, 10), bgr, B LINE (375, 3)-(385, 10), bgr, B LINE (390, 3)-(400, 10), bgr, B LINE (405, 3)-(415, 10), bgr, B PAINT (362, 5), cl, bgr PAINT (377, 5), cl1, bgr PAINT (391, 5), ncl1, bgr PAINT (406, 5), ncl2, bgr RETURN weck: LOCATE 15, 35 IF win <> 0 THEN PRINT pl$(2 + win); " hat gewonnen !" IF win = 0 THEN PRINT pl$(2 + lose); " stirbt !" wl = 2: wr = 2 LINE (272, 224)-(624, 240), bgr, B pry = INT((py + 10) / 16) prx = INT((px + 10) / 8) IF pry < 1 THEN pry = 1 IF prx < 1 THEN prx = 1 IF pry > 29 THEN pry = 29 IF prx > 78 THEN prx = 78 g$ = INPUT$(1) IF lv = -1 THEN GOTO raster lv = lv - 1: IF lv > 0 THEN GOTO raster lv = lvo GOSUB options: GOTO raster ende: SYSTEM |