'=========================================================================== ' Subject: MEMORY GAME W/MOUSE CONTROL Date: 01-01-97 (00:00) ' Author: Cheng-ning Pu Code: QB, QBasic, PDS ' Origin: pu@carib-link.net Packet: GAMES.ABC '=========================================================================== ' ' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ' º M E M O R Y G A M E -- SHAREWARE v1.0 º ' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ' ' HEAD PROGRAM : Cheng-ning Pu ' ' ASSISTANT PROGRAMMER : John Rodgers ' ' MOUSE CODE : Fido QuickBasic Sub ' ' MUSICs & GRAPHICs DESIGN : Cheng-ning Pu ' ' BACKGROUND IDEA : Cheng-huan Pu ' ' This program is a shareware, please share with your familly & friends ' ' DECLARE SUB PutBack () DECLARE SUB threeDbox (uRow%, uCol%, lRow%, lCol%) DECLARE SUB drawButton (x!, y!, l$) DEF SEG = 0 M.seg& = 256& * PEEK(207) + PEEK(206) M.info% = 256& * PEEK(205) + PEEK(204) + 2 ' see if a Mouse Driver is loaded DEF SEG = M.seg& score1 = 0 score2 = 0 turn = 1 IF (M.seg& OR (M.info% - 2)) AND PEEK(M.info% - 2) = 207 THEN COLOR 0, 7 CLS SCREEN 11 LOCATE 12, 30 PRINT "Mouse Driver Not Found!" LOCATE 14, 28 PRINT " Load the Mouse and re-try" END IF CALL absolute(0, 0, 0, 0, M.info%) 'Set Default SCREEN 9 COLOR 8, 7 CLS CALL absolute(1, 0, 0, 0, M.info%) CALL absolute(4, 0, col% * 8, row% * 8, M.info%) restart: CLS '=====E N D O F M O U S E P A R T==================== 'CARDS: DIM SHARED card(24) FOR i = 1 TO 12 card(i) = i NEXT i count = 1 FOR i = 13 TO 24 card(i) = count count = count + 1 NEXT i FOR j = 1 TO 100 RANDOMIZE TIMER A = INT(RND * 24) + 1 b = INT(RND * 24) + 1 SWAP card(A), card(b) NEXT j PRINT FOR i = 1 TO 12 PRINT card(i); NEXT i PRINT FOR i = 13 TO 24 PRINT card(i); NEXT i DIM SHARED mark(24) AS STRING FOR i = 1 TO 24 mark(i) = CHR$(1) NEXT i count = 1 'ÉÍÍÍ» 'º A º 'ÈÍÍͼ CLS CALL PutBack rows% = 10 'draws a button at x and y with a letter l$ DO CALL absolute(3, mbut%, xpos%, ypos%, M.info%) 'check on mouse 'LOCATE 22, 2 'PRINT " Row"; (ypos% \ 8) + 1; " "; "Col"; (xpos% \ 8) + 1 'LOCATE 23, 10 y = (ypos% \ 8) + 1 x = (xpos% \ 8) + 1 ' LOCATE 22, 23 ' PRINT " Button "; mbut% ' LOCATE 22, 59 ' PRINT " " IF mbut% = 1 THEN found = 0 cardfound = 0 SELECT CASE y CASE 3, 4, 5, 6, 7: cardfound = 0 CASE 12, 13, 14, 15: cardfound = cardfound + 6 CASE 21, 22, 23, 24: cardfound = cardfound + 12 CASE 29, 30, 31, 32, 33: : cardfound = cardfound + 18 CASE ELSE: PLAY "l40": GOTO NotFound END SELECT SELECT CASE x CASE 10, 11, 12, 13, 14: cardfound = cardfound + 1 CASE 20, 21, 22, 23, 24: cardfound = cardfound + 2 CASE 30, 31, 32, 33, 34: cardfound = cardfound + 3 CASE 40, 41, 42, 43, 44: cardfound = cardfound + 4 CASE 50, 51, 52, 53, 54: cardfound = cardfound + 5 CASE 60, 61, 62, 63, 64: cardfound = cardfound + 6 CASE ELSE: PLAY "l10>CCC<": GOTO NotFound END SELECT IF mark(cardfound) = "X" THEN GOTO NotFound PLAY "l20>CC<" IF firstcard = 0 THEN firstcard = cardfound 'LOCATE 1, 1: PRINT "CARD NO : "; cardfound IF mark(cardfound) = "X" THEN GOTO NotFound mark(cardfound) = RTRIM$(LTRIM$(STR$(card(cardfound)))) count = 1 CALL PutBack DO CALL absolute(3, mbut%, xpos%, ypos%, M.info%) 'check on mouse LOOP UNTIL mbut% <> 1 PutBack ELSE IF firstcard = cardfound THEN GOTO NotFound mark(cardfound) = RTRIM$(LTRIM$(STR$(card(cardfound)))) PutBack secondcard = cardfound IF card(firstcard) = card(secondcard) THEN PLAY "l20>CDEFGFEDC<" IF turn = 1 THEN score1 = score1 + 1 ELSE score2 = score2 + 1 mark(firstcard) = "X": mark(secondcard) = "X" IF turn = 1 THEN turn = 2 ELSE turn = 1 ELSE mark(firstcard) = CHR$(1): mark(cardfound) = CHR$(1) END IF IF turn = 1 THEN turn = 2 ELSE turn = 1 DO CALL absolute(3, mbut%, xpos%, ypos%, M.info%) 'check on mouse LOCATE 21, 2: PRINT "press second button to continue....." LOOP UNTIL mbut% = 2 LOCATE 21, 2: PRINT " " PutBack firstcard = 0 secondcard = 0 END IF END IF NotFound: LOCATE 23, 20: PRINT "SCORE 1 : "; score1, "SCORE 2 : "; score2 LOCATE 1, 60: PRINT " TURN :"; turn cardfound = 0 gameover = 0 FOR i = 1 TO 24 IF mark(i) = CHR$(1) THEN gameover = 1 EXIT FOR END IF NEXT i LOOP UNTIL gameover = 0 IF score1 > score2 THEN PRINT "PLAYER 1 WIN!" ELSEIF score2 > score1 THEN PRINT "PLAYER 2 WIN!" ELSE PRINT "PLAY AGAIN YOU WILL SEE WHO IS THE WINNER !" END IF SYSTEM SUB PutBack LOCATE 1, 27: PRINT "M E M O R Y G A M E " count = 1 FOR i = 10 TO 60 STEP 10 IF mark(count) <> "X" THEN LOCATE 2, i: PRINT "ÉÍÍÍ»" LOCATE 3, i: PRINT "º º" LOCATE 4, i: PRINT "ÈÍÍͼ" LOCATE 3, i + 2: PRINT mark(count) ELSE LOCATE 2, i: PRINT " " LOCATE 3, i: PRINT " " LOCATE 4, i: PRINT " " END IF count = count + 1 NEXT i FOR i = 10 TO 60 STEP 10 IF mark(count) <> "X" THEN LOCATE 7, i: PRINT "ÉÍÍÍ»" LOCATE 8, i: PRINT "º º" LOCATE 9, i: PRINT "ÈÍÍͼ" LOCATE 8, i + 2: PRINT mark(count) ELSE LOCATE 7, i: PRINT " " LOCATE 8, i: PRINT " " LOCATE 9, i: PRINT " " END IF count = count + 1 NEXT i FOR i = 10 TO 60 STEP 10 IF mark(count) <> "X" THEN LOCATE 12, i: PRINT "ÉÍÍÍ»" LOCATE 13, i: PRINT "º º" LOCATE 14, i: PRINT "ÈÍÍͼ" LOCATE 13, i + 2: PRINT mark(count) ELSE LOCATE 12, i: PRINT " " LOCATE 13, i: PRINT " " LOCATE 14, i: PRINT " " END IF count = count + 1 NEXT i FOR i = 10 TO 60 STEP 10 IF mark(count) <> "X" THEN LOCATE 17, i: PRINT "ÉÍÍÍ»" LOCATE 18, i: PRINT "º º" LOCATE 19, i: PRINT "ÈÍÍͼ" LOCATE 18, i + 2: PRINT mark(count) ELSE LOCATE 17, i: PRINT " " LOCATE 18, i: PRINT " " LOCATE 19, i: PRINT " " END IF count = count + 1 NEXT i END SUB