'=========================================================================== ' Subject: YATZY VERSION 1.4 Date: 02-24-98 (13:26) ' Author: Aaron Andersen Code: QB, QBasic, PDS ' Origin: kc7gza@hotmail.com Packet: GAMES.ABC '=========================================================================== '  Yatzy  ' ' Yatzy vertion 1.4 (ABC Vertion).  ' I Started this game in march of 1997. I didn't know much about Qbasic  ' then but I kind of learned it as I went along. Vertion 1.4 has sound and  ' a better game play the the first. Have fun. ' E-mail me at Kc7gza@hotmail.com  ' DECLARE SUB logo () DIM SHARED xx$(10) DECLARE SUB di (top, bottom) DECLARE SUB finish () DECLARE SUB start () CLS start 'my logo SLEEP a$ = INKEY$ SCREEN 0 CALL di(top, bottom) 334 CLEAR , , 5000 37591 IF gh = 1 THEN FOR xx = 700 TO 6000 STEP 55 SOUND xx, .1 NEXT xx FOR xx = 7000 TO 600 STEP -55 SOUND xx, .1 NEXT xx PLAY "p1" END IF gh = 1 LOCATE 11, 17 COLOR 0 PRINT " " total = top + bottom LOCATE 10, 29 COLOR 3 PRINT " Dice " IF x$ = "1" AND v$ = "1" AND w$ = "1" AND u$ = "1" AND t$ = "1" AND s$ = "1" AND m$ = "1" AND q$ = "1" AND P$ = "1" AND o$ = "1" AND n$ = "1" AND l$ = "1" AND (jf$ = "1" OR jf$ = "2") THEN GOTO 500 COLOR 1 1 RANDOMIZE TIMER x% = INT(RND * 6) + 1 y% = INT(RND * 6) + 1 a% = INT(RND * 6) + 1 b% = INT(RND * 6) + 1 c% = INT(RND * 6) + 1 GOTO 2 2 LOCATE 11, 25 COLOR 9 PRINT " Rolling Dice " PRINT " " PLAY "MS t1000 o2 l8 a a -< b l1 >a" cheat: FOR t = 1 TO 6 IF COMMAND$ = "/ALL" + STR$(t) THEN x% = t y% = t a% = t b% = t c% = t END IF NEXT t IF MID$(COMMAND$, 1, 6) = "/SCORE" THEN bottom = VAL(MID$(COMMAND$, 7, LEN(COMMAND$))) GOTO 500 END IF LOCATE 11, 20: COLOR 15 PRINT " "; x%; ""; y%; ""; a%; ""; b%; ""; c%; " " FOR K = 1 TO 2 COLOR 4 PRINT "Which dice do you want to reroll ?" DIM dice(5) FOR i = 1 TO 5 dice(i) = 8 NEXT i DIM die(5) FOR i = 1 TO 5 die(i) = 1 NEXT i DO LOCATE 13, 38 COLOR dice(5) PRINT "5" LOCATE 13, 35 COLOR dice(4) PRINT "4" LOCATE 13, 32 COLOR dice(3) PRINT "3" LOCATE 13, 29 COLOR dice(2) PRINT "2" LOCATE 13, 26 COLOR dice(1) PRINT "1" dice$ = UCASE$(INKEY$) IF dice$ = "1" THEN SWAP dice(1), die(1) IF dice$ = "2" THEN SWAP dice(2), die(2) IF dice$ = "3" THEN SWAP dice(3), die(3) IF dice$ = "4" THEN SWAP dice(4), die(4) IF dice$ = "5" THEN SWAP dice(5), die(5) IF dice$ = CHR$(27) THEN END LOOP UNTIL dice$ = CHR$(13) COLOR 15 IF dice(1) = 1 THEN RANDOMIZE TIMER x% = INT(RND * 6) + 1 COLOR 14: LOCATE 11, 25: PRINT x% SOUND 200, 3 SOUND 300, 2 SOUND 500, 1 FOR u = 1 TO 20000: NEXT u COLOR 15: LOCATE 11, 25: PRINT x% END IF IF dice(2) = 1 THEN RANDOMIZE TIMER y% = INT(RND * 6) + 1 COLOR 14: LOCATE 11, 28: PRINT y% SOUND 200, 3 SOUND 300, 2 SOUND 500, 1 FOR u = 1 TO 20000: NEXT u COLOR 15: LOCATE 11, 28: PRINT y% END IF IF dice(3) = 1 THEN RANDOMIZE TIMER a% = INT(RND * 6) + 1 COLOR 14: LOCATE 11, 31: PRINT a% SOUND 200, 3 SOUND 300, 2 SOUND 500, 1 FOR u = 1 TO 20000: NEXT u COLOR 15: LOCATE 11, 31: PRINT a% END IF IF dice(4) = 1 THEN RANDOMIZE TIMER b% = INT(RND * 6) + 1 COLOR 14: LOCATE 11, 34: PRINT b% SOUND 200, 3 SOUND 300, 2 SOUND 500, 1 FOR u = 1 TO 20000: NEXT u COLOR 15: LOCATE 11, 34: PRINT b% END IF IF dice(5) = 1 THEN RANDOMIZE TIMER c% = INT(RND * 6) + 1 COLOR 14: LOCATE 11, 37: PRINT c% SOUND 200, 3 SOUND 300, 2 SOUND 500, 1 FOR u = 1 TO 20000: NEXT u COLOR 15: LOCATE 11, 37: PRINT c% END IF IF dice(1) = 8 AND dice(2) = 8 AND dice(3) = 8 AND dice(4) = 8 AND dice(5) = 8 THEN GOTO 14 END IF LOCATE 11, 25: COLOR 9 PRINT " Rolling Dice " PRINT " " 'PLAY "MS t1000 o2 l8 a a-< b l1 >a" LOCATE 11, 20: COLOR 15 PRINT " "; x%; ""; y%; ""; a%; ""; b%; ""; c%; " " NEXT K 14 LOCATE 11, 25: COLOR 15 PRINT ""; x%; ""; y%; ""; a%; ""; b%; ""; c%; "" LOCATE 12, 1 COLOR 16 PRINT " " PRINT " " PRINT " "; "" PRINT " " PRINT " "; "" PRINT " " PRINT " " PRINT " "; "" PRINT " " PRINT " "; "" PRINT " " d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% GOTO 15 '----------------------------------------------------------------------------------- '------------------------------------------------------------------------------ - 15 CALL di(top, bottom) COLOR 9 time = 0 FOR l = 1 TO bonus h% = 36 + time LOCATE 9, h% PRINT "\" time = time + 1 NEXT l LOCATE 7, 16: COLOR 9: IF x$ = "1" THEN PRINT "Aces" LOCATE 7, 22: IF v$ = "1" THEN PRINT "Twos" LOCATE 7, 28: IF w$ = "1" THEN PRINT "Threes" LOCATE 7, 36: IF t$ = "1" THEN PRINT "Fours" LOCATE 7, 43: IF u$ = "1" THEN PRINT "Fives" LOCATE 7, 50: IF s$ = "1" THEN PRINT "Sixes" LOCATE 8, 4: IF m$ = "1" THEN PRINT "3 of a Kind" LOCATE 8, 17: IF q$ = "1" THEN PRINT "4 of a Kind" LOCATE 8, 30: IF P$ = "1" THEN PRINT "Full House" LOCATE 8, 42: IF o$ = "1" THEN PRINT "Sm. Straight" LOCATE 8, 56: IF n$ = "1" THEN PRINT "Lg. Straight" LOCATE 8, 70: IF l$ = "1" THEN PRINT "Chance" LOCATE 9, 29: IF jf$ = "1" OR jf$ = "2" THEN PRINT "Yahtzy " COLOR 15 LOCATE 9, 76 PRINT ""; total GOTO 17 d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% 1115 LOCATE 12, 1 PRINT " used " SOUND 150, 6 SOUND 80, 6 ON TIMER(1) GOSUB 2345 TIMER ON DO LOOP UNTIL INKEY$ <> "" 2345 TIMER OFF GOTO 16 d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% 17 hi = 1 FOR c = 2 TO 5 IF d(1) = d(c) THEN hi = hi + 1 END IF NEXT c IF hi = 5 AND jf$ = "2" THEN LOCATE 12, 13: PRINT "bonus + 100" total = top + bottom bottom = bottom + 100 COLOR 15 LOCATE 9, 76 total = top + bottom PRINT ""; total LOCATE 8, 76 t% = 36 + bonus PRINT ""; bottom FOR u = 36 TO t% COLOR 9: LOCATE 9, u + 5: PRINT "\" NEXT u PLAY "MS t380o4l16abbaabbaabba>abbaabbaabbaabba>abbl4a" bonus = bonus + 1 END IF 16 d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% LOCATE 12, 1 COLOR 15 PRINT "score as " d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% DO respond$ = UCASE$(INKEY$) y$ = respond$ IF respond$ = "E" THEN GOTO 500 IF respond$ = "A" THEN GOTO 20 IF respond$ = "T" THEN GOTO 40 IF respond$ = "H" THEN GOTO 60 IF respond$ = CHR$(27) THEN END IF respond$ = "F" THEN GOTO 80 IF respond$ = "I" THEN GOTO 100 IF respond$ = "S" THEN GOTO 110 IF respond$ = "3" THEN GOTO 200 IF respond$ = "4" THEN GOTO 230 IF respond$ = "U" THEN GOTO 260 IF respond$ = "M" THEN GOTO 300 IF respond$ = "L" THEN GOTO 320 IF respond$ = "C" THEN GOTO 350 IF respond$ = "Y" THEN GOTO 360 IF respond$ = "Q" THEN END LOOP 20 IF x$ = "1" THEN GOTO 1115 x$ = "1" 'ONE FOR n = 1 TO 5 'ONE IF d(n) = 1 THEN top = top + 1 'ONE NEXT n 'ONE 30 COLOR 15 'ONE LOCATE 7, 76 'ONE PRINT ""; top; "" 'ONE total = top + bottom 'ONE LOCATE 9, 76 PRINT ""; total; "" LOCATE 7, 16: COLOR 9 PRINT "Aces" GOTO 37591 40 IF v$ = "1" THEN GOTO 1115 v$ = "1" FOR n = 1 TO 5 'TWO IF d(n) = 2 THEN top = top + 2 'TWO NEXT n 'TWO 'TWO 50 COLOR 15 'TWO LOCATE 7, 76 'TWO PRINT ""; top; "" 'TWO total = top + bottom LOCATE 9, 76 PRINT ""; total; "" COLOR 9: LOCATE 7, 22 IF v$ = "1" THEN PRINT "Twos" GOTO 37591 60 IF w$ = "1" THEN GOTO 1115 w$ = "1" FOR n = 1 TO 5 'THREE IF d(n) = 3 THEN top = top + 3 'THREE NEXT n 'THREE 'THREE 'THREE 70 COLOR 15 'THREE LOCATE 7, 76 'THREE PRINT ""; top; "" 'THREE total = top + bottom 'THREE LOCATE 9, 76 'THREE PRINT ""; total; "" COLOR 9: LOCATE 7, 28 PRINT "Threes" GOTO 37591 80 IF t$ = "1" THEN GOTO 1115 t$ = "1" FOR n = 1 TO 5 'FOUR IF d(n) = 4 THEN top = top + 4 'FOUR NEXT n 'FOUR 'FOUR 90 COLOR 15 'FOUR LOCATE 7, 76 'FOUR PRINT ""; top; "" 'FOUR total = top + bottom 'FOUR LOCATE 9, 76 'FOUR PRINT ""; total; "" COLOR 9: LOCATE 7, 36 PRINT "Fours" GOTO 37591 100 IF u$ = "1" THEN GOTO 1115 u$ = "1" FOR n = 1 TO 5 'FIVE IF d(n) = 5 THEN top = top + 5 'FIVE NEXT n 'FIVE 'FIVE 'FIVE 121 COLOR 15 'FIVE LOCATE 7, 76 'FIVE PRINT ""; top; "" 'FIVE total = top + bottom 'FIVE LOCATE 9, 76 'FIVE PRINT ""; total; "" COLOR 9: LOCATE 7, 43 IF u$ = "1" THEN PRINT "Fives" GOTO 37591 110 IF s$ = "1" THEN GOTO 1115 s$ = "1" IF s$ = "1" THEN r$ = "1" FOR n = 1 TO 5 'SIX IF d(n) = 6 THEN top = top + 6 'SIX NEXT n 'SIX 'SIX 120 COLOR 15 'SIX LOCATE 7, 76 'SIX PRINT ""; top; "" 'SIX total = top + bottom 'SIX LOCATE 9, 76 'SIX PRINT ""; total; "" COLOR 9: LOCATE 7, 50 PRINT "Sixes" GOTO 37591 200 IF m$ = "1" THEN GOTO 1115 m$ = "1" dce = 1 FOR i = 1 TO 3 'THREE OF A KIND FOR j = i + 1 TO 5 'THREE OF A KIND IF d(i) = d(j) THEN dce = dce + 1 'THREE OF A KIND NEXT j 'THREE OF A KIND IF dce > 2 THEN GOTO 220 'THREE OF A KIND dce = 1 'THREE OF A KIND NEXT i 'THREE OF A KIND 220 'THREE OF A KIND COLOR 15 IF dce > 2 THEN bottom = bottom + x% + y% + a% + b% + c% 225 LOCATE 8, 76 PRINT ""; bottom; "" total = top + bottom LOCATE 9, 76 PRINT ""; total; "" LOCATE 8, 4: COLOR 9 PRINT "3 of a Kind" GOTO 37591 230 IF q$ = "1" THEN GOTO 1115 q$ = "1" dce = 1 FOR i = 1 TO 2 'FOUR OF A KIND FOR j = i + 1 TO 5 'FOUR OF A KIND IF d(i) = d(j) THEN dce = dce + 1 'FOUR OF A KIND NEXT j 'FOUR OF A KIND IF dce > 3 THEN GOTO 253 'FOUR OF A KIND dce = 1 'FOUR OF A KIND NEXT i 'FOUR OF A KIND 253 'FOUR OF A KIND COLOR 15 IF dce > 3 THEN bottom = bottom + x% + y% + a% + b% + c% 255 COLOR 15 LOCATE 8, 76 PRINT ""; bottom; "" total = top + bottom LOCATE 9, 76 PRINT ""; total; "" COLOR 9: LOCATE 8, 17 PRINT "4 of a Kind" GOTO 37591 260 IF P$ = "1" THEN GOTO 1115 261 P$ = "1" IF x% = y% THEN GOTO 262 2611 IF x% = a% THEN GOTO 264 2612 IF x% = b% THEN GOTO 266 2613 IF x% = c% THEN GOTO 268 2614 IF y% = a% THEN GOTO 270 2615 IF y% = b% THEN GOTO 272 2616 IF y% = c% THEN GOTO 274 2617 IF a% = b% THEN GOTO 276 2618 IF a% = c% THEN GOTO 278 2619 IF b% = c% THEN GOTO 280 GOTO 290 262 IF a% = b% THEN GOTO 263 GOTO 2611 263 IF b% = c% THEN GOTO 285 GOTO 2611 264 IF y% = b% THEN GOTO 265 GOTO 2612 265 IF b% = c% THEN GOTO 285 GOTO 2612 266 IF y% = a% THEN GOTO 267 GOTO 2613 267 IF a% = c% THEN GOTO 285 GOTO 2613 268 IF y% = a% THEN GOTO 269 GOTO 2614 269 IF a% = b% THEN GOTO 285 GOTO 2614 270 IF x% = b% THEN GOTO 271 GOTO 2615 271 IF b% = c% THEN GOTO 285 GOTO 2615 272 IF x% = a% THEN GOTO 273 GOTO 2616 273 IF a% = c% THEN GOTO 285 GOTO 2616 274 IF x% = a% THEN GOTO 275 GOTO 2617 275 IF a% = b% THEN GOTO 285 GOTO 2617 276 IF x% = y% THEN GOTO 277 GOTO 2618 277 IF y% = c% THEN GOTO 285 GOTO 2618 278 IF x% = y% THEN GOTO 279 GOTO 2619 279 IF y% = b% THEN GOTO 285 GOTO 2619 280 IF x% = y% THEN GOTO 281 GOTO 290 281 IF y% = a% THEN GOTO 285 GOTO 290 285 bottom = bottom + 25 LOCATE 8, 76 PRINT ""; bottom; "" total = top + bottom LOCATE 9, 76 PRINT ""; total; "" GOTO 290 290 LOCATE 8, 30 COLOR 9 PRINT "Full House" GOTO 37591 300 IF o$ = "1" THEN GOTO 1115 IF y$ = "m" THEN o$ = "1" IF y$ = "M" THEN o$ = "1" 310 good = 0 small = 1 FOR i = 2 TO 5 IF dos(i) < dos(small) THEN small = i NEXT i FOR j = 1 TO 5 FOR i = 1 TO 5 IF dos(i) = dos(small) + 1 THEN good = good + 1 small = i END IF NEXT i NEXT j IF good < 3 THEN good = 0 big = 1 FOR i = 2 TO 5 IF dos(i) > dos(big) THEN big = i NEXT i FOR j = 1 TO 5 FOR i = 1 TO 5 IF dos(i) = dos(big) - 1 THEN good = good + 1 big = i END IF NEXT i NEXT j END IF yah = 0 FOR K = 1 TO 5 IF dos(1) = dos(K) THEN yah = yah + 1 NEXT K IF yah = 5 THEN good = 5 IF good > 2 THEN bottom = bottom + 30 END IF LOCATE 8, 76: PRINT ""; bottom; "" total = top + bottom LOCATE 9, 76: PRINT ""; total; "" LOCATE 8, 42: COLOR 9: PRINT "Sm. Straight" GOTO 37591 320 IF n$ = "1" THEN GOTO 1115 325 IF y$ = "L" THEN n$ = "1" IF y$ = "l" THEN n$ = "1" good = 0 small = 1 FOR i = 2 TO 5 IF dos(i) < dos(small) THEN small = i NEXT i FOR j = 1 TO 5 FOR i = 1 TO 5 IF dos(i) = dos(small) + 1 THEN good = good + 1 small = i END IF NEXT i NEXT j yah = 0 FOR K = 1 TO 5 IF dos(1) = dos(K) THEN yah = yah + 1 NEXT K IF yah = 5 THEN good = 5 IF good > 3 THEN bottom = bottom + 40 END IF LOCATE 8, 76: PRINT ""; bottom; "" total = top + bottom: LOCATE 9, 76: PRINT ""; total; "" COLOR 9: LOCATE 8, 56: PRINT "Lg. Straight" GOTO 37591 350 IF l$ = "1" THEN GOTO 1115 351 IF y$ = "C" THEN l$ = "1" IF y$ = "c" THEN l$ = "1" bottom = bottom + x% + y% + a% + b% + c% LOCATE 8, 76: PRINT ""; bottom; "" total = top + bottom: LOCATE 9, 76: PRINT ""; total; "" COLOR 9: LOCATE 8, 70: PRINT "Chance" GOTO 37591 d(1) = x% d(2) = y% d(3) = a% d(4) = b% d(5) = c% 360 IF jf$ = "1" OR jf$ = "2" THEN GOTO 1115 361 jf$ = "1" 362 hi = 1 FOR c = 2 TO 5 IF d(1) = d(c) THEN hi = hi + 1 END IF NEXT c IF hi = 5 THEN jf$ = "2" bottom = bottom + 50 END IF COLOR 9 LOCATE 9, 29 PRINT "Yahtzy" COLOR 15 LOCATE 8, 76: PRINT ""; bottom; "": LOCATE 9, 76: total = top + bottom: PRINT ""; total; "" GOTO 37591 500 PLAY "MB o2 t 500 a a l8 aa-l4a dcl8aa-a>efl8eeel4el4 d- edl8abceddd l8aaal1a l8aaa-l4a " ttl = top + bottom IF top > 62 THEN top = top + 35 PRINT "Bonus + 35" BEEP END IF ttl = top + bottom ON ERROR GOTO 353535 DIM score(11) DIM name$(11) DIM day$(11) score(11) = ttl LOCATE 3, 20: COLOR 3 INPUT "What is your name"; name$(11) day$(11) = DATE$ 1000000 OPEN "dice.dat" FOR INPUT AS #1 FOR i = 1 TO 10 INPUT #1, score(i) INPUT #1, name$(i) INPUT #1, day$(i) NEXT i FOR h = 1 TO 10 FOR i = 2 TO 11 j = i - 1 IF score(i) > score(j) THEN SWAP score(i), score(j) SWAP name$(i), name$(j) SWAP day$(i), day$(j) END IF NEXT i NEXT h finish FOR i = 6 TO 19 LOCATE i, 15 PRINT " " NEXT i COLOR 15 LOCATE 7, 16 PRINT " High Scores" LOCATE 8, 16 PRINT " # Name Score Date" FOR i = 1 TO 10 LOCATE 8 + i, 16 COLOR 15 PRINT i: COLOR 9 LOCATE 8 + i, 22 PRINT name$(i) LOCATE 8 + i, 37: PRINT score(i) LOCATE 8 + i, 52: PRINT day$(i) NEXT i SLEEP CLS CLOSE #1 OPEN "Yatzy.dat" FOR OUTPUT AS #1 FOR i = 1 TO 10 PRINT #1, score(i) PRINT #1, name$(i) PRINT #1, day$(i) NEXT i CLOSE #1 GOTO 23456 353535 CLOSE OPEN "Yatzy.dat" FOR OUTPUT AS #1 FOR i = 1 TO 10 PRINT #1, i * 10 PRINT #1, "Aaron Andersen" PRINT #1, "02-20-1998" NEXT i CLOSE #1 GOTO 1000000 23456 ON ERROR GOTO 121212 LOCATE 12, 1 COLOR 14 PRINT " Your score is "; top + bottom; ". Thank you for plaing." COLOR 5 PRINT " Game Over" PLAY "O2 T 220 MB L8 G G G G F. L16 E L4 E L4 D E.B. A. L8 B C D F G A A G. L16 F L8 F L4 E L1 B" SLEEP END 121212 END SUB di (top, bottom) COLOR 15 LOCATE 6, 1 PRINT " " LOCATE 7, 5 PRINT " Aces Twos Threes Fours Fives Sixes "; top; "" PRINT " 3 of a kind 4 of a kind Full House Sm. Straight Lg. Straight Chance"; bottom; "" PRINT " Yahtzy "; total; "" COLOR 14 LOCATE 6, 28: PRINT " " LOCATE 7, 5: PRINT " A" LOCATE 7, 22: PRINT "T" LOCATE 7, 29: PRINT "h" LOCATE 7, 36: PRINT "F" LOCATE 7, 44: PRINT "i" LOCATE 7, 50: PRINT "S" LOCATE 8, 4: PRINT "3" LOCATE 8, 17: PRINT "4" LOCATE 8, 31: PRINT "u" LOCATE 8, 43: PRINT "m" LOCATE 8, 56: PRINT "L" LOCATE 8, 70: PRINT "C" LOCATE 9, 28: PRINT " Y" END SUB SUB finish CLS FOR r = 1 TO 500 RANDOMIZE TIMER e = INT(RND * 22) + 1 F = INT(RND * 78) + 1 G = INT(RND * 14) + 1 h = INT(RND * 2000) + 40 LOCATE e, F COLOR G PRINT "Yahtzy" NEXT r END SUB SUB start SCREEN 12 COLOR 4 LINE (42, 237)-(109, 26), 4 LINE (111, 25)-(176, 237), 4 LINE (176, 237)-(16, 101), 4 LINE (16, 100)-(207, 100), 4 COLOR 2 LOCATE 11, 21: PRINT "1997" COLOR 3 LOCATE 13, 23: PRINT "Aaron" COLOR 9 LOCATE 15, 26: PRINT "Andersen" END SUB