'===========================================================================
' Subject: TWO PLAYER XO GAME                 Date: 03-25-98 (00:20)       
'  Author: Andrey Berezansky                  Code: QB, QBasic, PDS        
'  Origin: nikol@cs.bgu.ac.il               Packet: GAMES.ABC
'===========================================================================
' Very simple & small X0 game .
' Programed by Berezansky Andrey . Email - nikol@cs.bgu.ac.il
' Date ?/01/98 .

SCREEN 9
CLS
LOCATE 10, 10: PRINT "1   2   3"
LOCATE 12, 9: PRINT "4         6"
LOCATE 14, 10: PRINT "7   8   9"
LINE (100, 142)-(100, 179), 3
LINE (117, 142)-(117, 179), 3
LINE (87, 153)-(130, 153), 3
LINE (87, 166)-(130, 166), 3

DIM a(3, 3)
LOCATE 1, 10: PRINT "Press numbers 1-9"
DO WHILE exitt = 0
  LOCATE 5, 10: PRINT "Player 1": player = 1
  GOSUB selectt
  GOSUB exam
  GOSUB printt
  game = game + 1: IF game = 9 THEN GOTO drow
  LOCATE 5, 10: PRINT "Player 2": player = 2
  GOSUB selectt
  GOSUB exam
  GOSUB printt
  game = game + 1: IF game = 9 THEN GOTO drow
LOOP
END
selectt:
        DO WHILE exit2 = 0
          SELECT CASE INKEY$
            CASE "1"
              IF a(1, 1) = 0 THEN a(1, 1) = player: exit2 = 1
            CASE "2"
              IF a(1, 2) = 0 THEN a(1, 2) = player: exit2 = 1
            CASE "3"
              IF a(1, 3) = 0 THEN a(1, 3) = player: exit2 = 1
            CASE "4"
              IF a(2, 1) = 0 THEN a(2, 1) = player: exit2 = 1
            CASE "5"
              IF a(2, 2) = 0 THEN a(2, 2) = player: exit2 = 1
            CASE "6"
              IF a(2, 3) = 0 THEN a(2, 3) = player: exit2 = 1
            CASE "7"
              IF a(3, 1) = 0 THEN a(3, 1) = player: exit2 = 1
            CASE "8"
              IF a(3, 2) = 0 THEN a(3, 2) = player: exit2 = 1
            CASE "9"
              IF a(3, 3) = 0 THEN a(3, 3) = player: exit2 = 1
          END SELECT
        LOOP
        exit2 = 0
RETURN
exam:           
     FOR i = 1 TO 3
       IF a(i, 1) = player AND a(i, 2) = player AND a(i, 3) = player THEN GOTO win
       IF a(1, i) = player AND a(2, i) = player AND a(3, i) = player THEN GOTO win
     NEXT
     IF a(1, 1) = player AND a(2, 2) = player AND a(3, 3) = player THEN GOTO win
     IF a(1, 3) = player AND a(2, 2) = player AND a(3, 1) = player THEN GOTO win
RETURN
printt:
       FOR i = 1 TO 3
         FOR ii = 1 TO 3
           IF a(i, ii) = 1 THEN LOCATE i + 10, ii * 2 + 10: PRINT "X"
           IF a(i, ii) = 2 THEN LOCATE i + 10, ii * 2 + 10: PRINT "0"
         NEXT
       NEXT
       LINE (100, 142)-(100, 179), 3
       LINE (117, 142)-(117, 179), 3
       LINE (87, 153)-(130, 153), 3
       LINE (87, 166)-(130, 166), 3
RETURN
win:
    GOSUB printt
    LOCATE 8, 10: PRINT "PLAYER "; player; " WINE THE GAME !"
END
drow:
     LOCATE 8, 10: PRINT "DROW !!!"
END
