REM ********************************************** REM More Qbasic Software at the Software Page. REM http://www.euronet.nl/users/rkohm/ REM Any questions? E-mail to: REM rkohm@euronet.nl REM ********************************************** ' If you don't know the rules of this game, just send me an e-mail. DECLARE SUB check () DECLARE SUB pause (howlong!) DECLARE SUB board () DIM SHARED colomn1(7), colomn2(7), colomn3(7), colomn4(7), colomn5(7) DIM SHARED colomn6(7), colomn7(7) COMMON SHARED win SCREEN 12: RANDOMIZE TIMER ON KEY(10) GOSUB endofgame KEY(10) ON CLS INPUT "What is your name, player 1: ", name1$ name2: INPUT "What is your name, player 2: ", name2$ name1$ = MID$(name1$, 1, 10) name2$ = MID$(name2$, 1, 10) IF name1$ = "" THEN name1$ = "Player 1" IF name2$ = "" THEN name2$ = "Player 2" IF name1$ = name2$ THEN BEEP: GOTO name2 DO: rand = FIX(RND * 100 + 1): LOOP UNTIL rand > 0 AND rand <= 100 IF rand < 50 THEN turn = 1: COLOR 4: PRINT name1$; " starts with red." IF rand >= 50 THEN turn = 2: COLOR 14: PRINT name2$; " starts with yellow." DO: LOOP UNTIL INKEY$ <> "" CLS : board IF turn = 1 THEN COLOR 4: LOCATE 1, 1: PRINT name1$ IF turn = 2 THEN COLOR 14: LOCATE 1, 65: PRINT name2$ DO again: DO: whichcolomn$ = INKEY$: LOOP UNTIL whichcolomn$ <> "" IF turn = 1 THEN clor = 4 IF turn = 2 THEN clor = 14 number = 130: DRAW "bm0,0" SELECT CASE whichcolomn$ CASE "1" FOR counter = 1 TO 7 IF counter = 7 THEN colomn1(6) = turn: EXIT FOR IF colomn1(1) <> 0 THEN BEEP: GOTO again IF colomn1(counter) <> 0 THEN colomn1(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (140, number), clor, 1: number = number + 60 NEXT CASE "2" FOR counter = 1 TO 7 IF counter = 7 THEN colomn2(6) = turn: EXIT FOR IF colomn2(1) <> 0 THEN BEEP: GOTO again IF colomn2(counter) <> 0 THEN colomn2(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (200, number), clor, 1: number = number + 60 NEXT CASE "3" FOR counter = 1 TO 7 IF counter = 7 THEN colomn3(6) = turn: EXIT FOR IF colomn3(1) <> 0 THEN BEEP: GOTO again IF colomn3(counter) <> 0 THEN colomn3(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (260, number), clor, 1: number = number + 60 NEXT CASE "4" FOR counter = 1 TO 7 IF counter = 7 THEN colomn4(6) = turn: EXIT FOR IF colomn4(1) <> 0 THEN BEEP: GOTO again IF colomn4(counter) <> 0 THEN colomn4(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (320, number), clor, 1: number = number + 60 NEXT CASE "5" FOR counter = 1 TO 7 IF counter = 7 THEN colomn5(6) = turn: EXIT FOR IF colomn5(1) <> 0 THEN BEEP: GOTO again IF colomn5(counter) <> 0 THEN colomn5(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (380, number), clor, 1: number = number + 60 NEXT CASE "6" FOR counter = 1 TO 7 IF counter = 7 THEN colomn6(6) = turn: EXIT FOR IF colomn6(1) <> 0 THEN BEEP: GOTO again IF colomn6(counter) <> 0 THEN colomn6(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (440, number), clor, 1: number = number + 60 NEXT CASE "7" FOR counter = 1 TO 7 IF counter = 7 THEN colomn7(6) = turn: EXIT FOR IF colomn7(1) <> 0 THEN BEEP: GOTO again IF colomn7(counter) <> 0 THEN colomn7(counter - 1) = turn: EXIT FOR pause .1: DRAW "p0,1": PAINT (500, number), clor, 1: number = number + 60 NEXT CASE ELSE GOTO again END SELECT IF turn = 1 THEN LOCATE 1, 1: PRINT STRING$(10, " ") LOCATE 1, 65: COLOR 14: PRINT name2$: turn = 2 ELSEIF turn = 2 THEN LOCATE 1, 65: PRINT STRING$(10, " ") LOCATE 1, 1: COLOR 4: PRINT name1$: turn = 1 END IF check IF win = 1 THEN COLOR 4: PRINT name1$; " wins this game!": END IF win = 2 THEN COLOR 14: PRINT name2$; " wins this game!": END LOOP PRINT "Something's going wrong!!!!!" END endofgame: END SUB board DRAW "c1 bm110,100 d360 l90 d15 r600 u15 l90 u360 l420" tmp = 140: DO: CIRCLE (tmp, 130), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 tmp = 140: DO: CIRCLE (tmp, 190), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 tmp = 140: DO: CIRCLE (tmp, 250), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 tmp = 140: DO: CIRCLE (tmp, 310), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 tmp = 140: DO: CIRCLE (tmp, 370), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 tmp = 140: DO: CIRCLE (tmp, 430), 25, 1: tmp = tmp + 60: LOOP UNTIL tmp = 560 DRAW "bm320,221 p1,1" END SUB SUB check FOR te = 1 TO 6 IF colomn1(te) = colomn2(te) AND colomn2(te) = colomn3(te) AND colomn3(te) = colomn4(te) AND colomn1(te) <> 0 THEN win = colomn1(te): EXIT SUB IF colomn2(te) = colomn3(te) AND colomn3(te) = colomn4(te) AND colomn4(te) = colomn5(te) AND colomn2(te) <> 0 THEN win = colomn2(te): EXIT SUB IF colomn3(te) = colomn4(te) AND colomn4(te) = colomn5(te) AND colomn5(te) = colomn6(te) AND colomn3(te) <> 0 THEN win = colomn3(te): EXIT SUB IF colomn4(te) = colomn5(te) AND colomn5(te) = colomn6(te) AND colomn6(te) = colomn7(te) AND colomn4(te) <> 0 THEN win = colomn4(te): EXIT SUB NEXT FOR te = 1 TO 3 IF colomn1(te) = colomn1(te + 1) AND colomn1(te + 1) = colomn1(te + 2) AND colomn1(te + 2) = colomn1(te + 3) AND colomn1(te) <> 0 THEN win = colomn1(te): EXIT SUB IF colomn2(te) = colomn2(te + 1) AND colomn2(te + 1) = colomn2(te + 2) AND colomn2(te + 2) = colomn2(te + 3) AND colomn2(te) <> 0 THEN win = colomn2(te): EXIT SUB IF colomn3(te) = colomn3(te + 1) AND colomn3(te + 1) = colomn3(te + 2) AND colomn3(te + 2) = colomn3(te + 3) AND colomn3(te) <> 0 THEN win = colomn3(te): EXIT SUB IF colomn4(te) = colomn4(te + 1) AND colomn4(te + 1) = colomn4(te + 2) AND colomn4(te + 2) = colomn4(te + 3) AND colomn4(te) <> 0 THEN win = colomn4(te): EXIT SUB IF colomn5(te) = colomn5(te + 1) AND colomn5(te + 1) = colomn5(te + 2) AND colomn5(te + 2) = colomn5(te + 3) AND colomn5(te) <> 0 THEN win = colomn5(te): EXIT SUB IF colomn6(te) = colomn6(te + 1) AND colomn6(te + 1) = colomn6(te + 2) AND colomn6(te + 2) = colomn6(te + 3) AND colomn6(te) <> 0 THEN win = colomn6(te): EXIT SUB IF colomn7(te) = colomn7(te + 1) AND colomn7(te + 1) = colomn7(te + 2) AND colomn7(te + 2) = colomn7(te + 3) AND colomn7(te) <> 0 THEN win = colomn7(te): EXIT SUB IF colomn1(te) = colomn2(te + 1) AND colomn2(te + 1) = colomn3(te + 2) AND colomn3(te + 2) = colomn4(te + 3) AND colomn1(te) <> 0 THEN win = colomn1(te): EXIT SUB IF colomn2(te) = colomn3(te + 1) AND colomn3(te + 1) = colomn4(te + 2) AND colomn4(te + 2) = colomn5(te + 3) AND colomn2(te) <> 0 THEN win = colomn2(te): EXIT SUB IF colomn3(te) = colomn4(te + 1) AND colomn4(te + 1) = colomn5(te + 2) AND colomn5(te + 2) = colomn6(te + 3) AND colomn3(te) <> 0 THEN win = colomn3(te): EXIT SUB IF colomn4(te) = colomn5(te + 1) AND colomn5(te + 1) = colomn6(te + 2) AND colomn6(te + 2) = colomn7(te + 3) AND colomn4(te) <> 0 THEN win = colomn4(te): EXIT SUB IF colomn1(te + 3) = colomn2(te + 2) AND colomn2(te + 2) = colomn3(te + 1) AND colomn3(te + 1) = colomn4(te) AND colomn1(te + 3) <> 0 THEN win = colomn1(te + 3): EXIT SUB IF colomn2(te + 3) = colomn3(te + 2) AND colomn3(te + 2) = colomn4(te + 1) AND colomn4(te + 1) = colomn5(te) AND colomn2(te + 3) <> 0 THEN win = colomn2(te + 3): EXIT SUB IF colomn3(te + 3) = colomn4(te + 2) AND colomn4(te + 2) = colomn5(te + 1) AND colomn5(te + 1) = colomn6(te) AND colomn3(te + 3) <> 0 THEN win = colomn3(te + 3): EXIT SUB IF colomn4(te + 3) = colomn5(te + 2) AND colomn5(te + 2) = colomn6(te + 1) AND colomn6(te + 1) = colomn7(te) AND colomn4(te + 3) <> 0 THEN win = colomn4(te + 3): EXIT SUB NEXT END SUB SUB pause (howlong) thetime = TIMER DO: LOOP UNTIL TIMER >= thetime + howlong END SUB