mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-04 11:10:15 +00:00
6e01fc8dce
Added new _STRCMP and _STRICMP commands for quick string comparisons. Cleaned up QB64 to finish removing the QUI (quick user insert) code and folders. Altered UCASE and LCASE routines to be faster in some situations for us.
238 lines
No EOL
5.2 KiB
QBasic
238 lines
No EOL
5.2 KiB
QBasic
RANDOMIZE TIMER
|
|
DIM playerbd(0 TO 9, 0 TO 9) AS STRING
|
|
DIM compbd(0 TO 9, 0 TO 9) AS STRING
|
|
DIM comphits(0 TO 9, 0 TO 9) AS STRING
|
|
PRINT "Co-ordinates range from 0 to 9"
|
|
PRINT "* represents part of ship"
|
|
PRINT "+ represents hit part of ship."
|
|
PRINT "------------------------------"
|
|
PRINT "PLACE SHIP [LENGTH 2]"
|
|
INPUT "X CO-ORDINATE [0-9]:", x
|
|
INPUT "Y CO-ORDINATE [0-9]:", y
|
|
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
|
playerbd(x, y) = "*"
|
|
IF LCASE$(DIRECTION$) = "w" THEN
|
|
playerbd(x - 1, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "e" THEN
|
|
playerbd(x + 1, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "s" THEN
|
|
playerbd(x, y + 1) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "n" THEN
|
|
playerbd(x, y - 1) = "*"
|
|
END IF
|
|
PRINT "PLACE SHIP [LENGTH 3]"
|
|
INPUT "X CO-ORDINATE [0-9]:", x
|
|
INPUT "Y CO-ORDINATE [0-9]:", y
|
|
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
|
playerbd(x, y) = "*"
|
|
IF LCASE$(DIRECTION$) = "w" THEN
|
|
playerbd(x - 1, y) = "*"
|
|
playerbd(x - 2, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "e" THEN
|
|
playerbd(x + 1, y) = "*"
|
|
playerbd(x + 2, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "s" THEN
|
|
playerbd(x, y + 1) = "*"
|
|
playerbd(x, y + 2) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "n" THEN
|
|
playerbd(x, y - 1) = "*"
|
|
playerbd(x, y - 2) = "*"
|
|
END IF
|
|
PRINT "PLACE SHIP [LENGTH 3]"
|
|
INPUT "X CO-ORDINATE [0-9]:", x
|
|
INPUT "Y CO-ORDINATE [0-9]:", y
|
|
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
|
playerbd(x, y) = "*"
|
|
IF LCASE$(DIRECTION$) = "w" THEN
|
|
playerbd(x - 1, y) = "*"
|
|
playerbd(x - 2, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "e" THEN
|
|
playerbd(x + 1, y) = "*"
|
|
playerbd(x + 2, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "s" THEN
|
|
playerbd(x, y + 1) = "*"
|
|
playerbd(x, y + 2) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "n" THEN
|
|
playerbd(x, y - 1) = "*"
|
|
playerbd(x, y - 2) = "*"
|
|
END IF
|
|
PRINT "PLACE SHIP [LENGTH 4]"
|
|
INPUT "X CO-ORDINATE [0-9]:", x
|
|
INPUT "Y CO-ORDINATE [0-9]:", y
|
|
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
|
playerbd(x, y) = "*"
|
|
IF LCASE$(DIRECTION$) = "W" THEN
|
|
playerbd(x - 1, y) = "*"
|
|
playerbd(x - 2, y) = "*"
|
|
playerbd(x - 3, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "E" THEN
|
|
playerbd(x + 1, y) = "*"
|
|
playerbd(x + 2, y) = "*"
|
|
playerbd(x + 3, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "S" THEN
|
|
playerbd(x, y + 1) = "*"
|
|
playerbd(x, y + 2) = "*"
|
|
playerbd(x, y + 3) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "N" THEN
|
|
playerbd(x, y - 1) = "*"
|
|
playerbd(x, y - 2) = "*"
|
|
playerbd(x, y - 3) = "*"
|
|
END IF
|
|
PRINT "PLACE SHIP [LENGTH 5]"
|
|
INPUT "X CO-ORDINATE [0-9]:", x
|
|
INPUT "Y CO-ORDINATE [0-9]:", y
|
|
INPUT "DIRECTION [N,S,E,W]:", DIRECTION$
|
|
playerbd(x, y) = "*"
|
|
IF LCASE$(DIRECTION$) = "w" THEN
|
|
playerbd(x - 1, y) = "*"
|
|
playerbd(x - 2, y) = "*"
|
|
playerbd(x - 3, y) = "*"
|
|
playerbd(x - 4, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "e" THEN
|
|
playerbd(x + 1, y) = "*"
|
|
playerbd(x + 2, y) = "*"
|
|
playerbd(x + 3, y) = "*"
|
|
playerbd(x + 4, y) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "s" THEN
|
|
playerbd(x, y + 1) = "*"
|
|
playerbd(x, y + 2) = "*"
|
|
playerbd(x, y + 3) = "*"
|
|
playerbd(x, y + 4) = "*"
|
|
END IF
|
|
IF LCASE$(DIRECTION$) = "n" THEN
|
|
playerbd(x, y - 1) = "*"
|
|
playerbd(x, y - 2) = "*"
|
|
playerbd(x, y - 3) = "*"
|
|
playerbd(x, y - 4) = "*"
|
|
END IF
|
|
a = INT(RND(1) * 10)
|
|
b = INT(RND(1) * 10)
|
|
FOR c = 1 TO 4
|
|
compbd(a, b) = "*"
|
|
DO
|
|
x = INT(RND(1) * 4)
|
|
IF x = 0 AND a - c >= 0 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a - c, b) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 1 AND a + c <= 9 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a + c, b) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 2 AND b - c >= 0 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a, b - c) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 3 AND b + c <= 9 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a, b + c) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
LOOP
|
|
NEXT
|
|
c = 2
|
|
compbd(a, b) = "*"
|
|
DO
|
|
x = INT(RND(1) * 4)
|
|
IF x = 0 AND a - c >= 0 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a - c, b) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 1 AND a + c <= 9 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a + c, b) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 2 AND b - c >= 0 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a, b - c) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
IF x = 3 AND b + c <= 9 THEN
|
|
FOR d = 1 TO c
|
|
compbd(a, b + c) = "*"
|
|
NEXT
|
|
EXIT DO
|
|
END IF
|
|
LOOP
|
|
DO
|
|
PRINT " 0123456789"
|
|
FOR a = 0 TO 9
|
|
PRINT a;
|
|
FOR b = 0 TO 9
|
|
IF b < 9 AND playerbd(b, a) = "*" THEN PRINT "*";
|
|
IF b < 9 AND playerbd(b, a) = "+" THEN PRINT "+";
|
|
IF b < 9 AND playerbd(b, a) = "" THEN PRINT " ";
|
|
IF b = 9 AND playerbd(b, a) = "*" THEN PRINT "*"
|
|
IF b = 9 AND playerbd(b, a) = "" THEN PRINT " "
|
|
IF b = 9 AND playerbd(b, a) = "+" THEN PRINT "+"
|
|
NEXT
|
|
NEXT
|
|
PRINT "-----------"
|
|
PRINT " 0123456789"
|
|
FOR a = 0 TO 9
|
|
PRINT a,
|
|
FOR b = 0 TO 9
|
|
IF b < 9 AND comphits(b, a) = "+" THEN PRINT "+";
|
|
IF b < 9 AND comphits(b, a) = "" THEN PRINT " ";
|
|
IF b = 9 AND comphits(b, a) = "" THEN PRINT " "
|
|
IF b = 9 AND comphits(b, a) = "+" THEN PRINT "+"
|
|
NEXT
|
|
NEXT
|
|
INPUT "FIRE X CO-ORDINATE [0-9]:", x
|
|
INPUT "FIRE Y CO-ORDINATE [0-9]:", y
|
|
IF compbd(x, y) = "*" THEN
|
|
compbd(x, y) = "+"
|
|
comphits(x, y) = "+"
|
|
END IF
|
|
a = INT(RND(1) * 10)
|
|
b = INT(RND(1) * 10)
|
|
IF playerbd(a, b) = "*" THEN
|
|
playerbd(a, b) = "+"
|
|
END IF
|
|
countera = 0
|
|
counterb = 0
|
|
FOR a = 0 TO 9
|
|
FOR b = 0 TO 9
|
|
IF compbd(a, b) = "*" THEN countera = countera + 1
|
|
NEXT
|
|
NEXT
|
|
IF countera = 0 THEN
|
|
PRINT "YOU WIN"
|
|
EXIT DO
|
|
END IF
|
|
FOR a = 0 TO 9
|
|
FOR b = 0 TO 9
|
|
IF playerbd(a, b) = "*" THEN counterb = counterb + 1
|
|
NEXT
|
|
NEXT
|
|
IF counterb = 0 THEN
|
|
PRINT "YOU LOSE"
|
|
EXIT DO
|
|
END IF
|
|
LOOP |