Goodie goodie, look what I found on my old PC from 1991
Few years ago, I was bored on vacation and all other electronic devices were used by other family members, so I wrote this little gem in QBasic which needs serious refactoring:
CLS
DIM a, b, i, n, s AS INTEGER
DIM button AS STRING
DIM direction AS STRING
DIM x(100) AS INTEGER
DIM y(100) AS INTEGER
s = 0
n = 1
direction = ""
x(1) = 12 '25 max
y(1) = 40 '80 max
RANDOMIZE 1
a = INT(RND * 20) + 3
b = INT(RND * 77) + 2
COLOR 9
PRINT "Welcome to Aurioch's ASCII Snake"
COLOR 3
PRINT CHR$(201); STRING$(78, 205); CHR$(187)
FOR i = 1 TO 20
PRINT CHR$(186); STRING$(78, " "); CHR$(186)
NEXT i
PRINT CHR$(200); STRING$(78, 205); CHR$(188)
LOCATE 1, 60
COLOR 12
PRINT "Score:"; S
DO
FOR i = 1 TO n
LOCATE x(i), y(i)
COLOR 10
IF i = 1 THEN
PRINT CHR$(2)
ELSE
PRINT CHR$(254)
END IF
NEXT i
LOCATE a, b
COLOR 14
PRINT CHR$(42)
FOR i = 1 TO 5000 'delay
NEXT i
button = INKEY$
FOR i = 1 TO n
LOCATE x(i), y(i)
PRINT " "
NEXT i
IF button = "w" THEN direction = "up"
IF button = "s" THEN direction = "down"
IF button = "a" THEN direction = "left"
IF button = "d" THEN direction = "right"
IF (direction = "up") AND (x(1) > 3) THEN
IF n > 1 THEN
FOR i = n TO 2 STEP -1
x(i) = x(i - 1)
y(i) = y(i - 1)
NEXT i
END IF
x(1) = x(1) - 1
END IF
IF (direction = "right") AND (y(1) < 79) THEN
IF n > 1 THEN
FOR i = n TO 2 STEP -1
x(i) = x(i - 1)
y(i) = y(i - 1)
NEXT i
END IF
y(1) = y(1) + 1
END IF
IF (direction = "down") AND (x(1) < 22) THEN
IF n > 1 THEN
FOR i = n TO 2 STEP -1
x(i) = x(i - 1)
y(i) = y(i - 1)
NEXT i
END IF
x(1) = x(1) + 1
END IF
IF (direction = "left") AND (y(1) > 2) THEN
IF n > 1 THEN
FOR i = n TO 2 STEP -1
x(i) = x(i - 1)
y(i) = y(i - 1)
NEXT i
END IF
y(1) = y(1) + 1
END IF
IF (x(1) = a) AND (y(1) = b) THEN
a = INT(RND * 20) + 3
b = INT(RND * 77) + 2
s = s + n
n = n + 1
IF direction = "up" THEN
x(n) = x(1) + 1
y(n) = y(1)
END IF
IF direction = "down" THEN
x(n) = x(1) - 1
y(n) = y(1)
END IF
IF direction = "left" THEN
x(n) = x(1)
y(n) = y(1) + 1
END IF
IF direction = "right" THEN
x(n) = x(1)
y(n) = y(1) - 1
END IF
LOCATE 1, 66
PRINT s
END IF
LOOP UNTIL button = CHR$(27)
COLOR 7
END
Yesterday, I was rewriting it on my laptop and noticed that I made game loop without knowing about it at all XD