Welcome, Guest. Please login or register.
July 31, 2010, 07:54:29 PM
Home Help Search Login Register
News: Back to Qbasicnews.com | QB Online Help | FAQ | Chat | All Basic Code | QB Knowledge Base

Qbasicnews.com  |  QBasic  |  QB Projects  |  Topic: BOWLING for John « previous next »
Pages: [1] 2 3 4 Print
Author Topic: BOWLING for John  (Read 8989 times)
j2krei08
Guru
**
Posts: 284



WWW
BOWLING for John
« on: January 19, 2005, 05:20:12 PM »

I need help compiling this program I made.  It took me two weeks to finally get it perfect and I want it to be compiled to .EXE so I can give it to "non-QBer's."

Here it is:

Code:
DECLARE SUB BALLCOLOUR (COL%)
SCREEN 0
CLS
Q = 23
PINLIN4% = 1
PINLIN3% = 1
PINLIN2% = 1
HEADPIN% = 1
L1:
  N% = 1
  FOR I% = 1 TO 50!
  LOCATE 2, 37: IF PINLIN4% = 1 THEN PRINT "O O O O" ELSE PRINT "        "
  LOCATE 3, 38: IF PINLIN3% = 1 THEN PRINT "O O O" ELSE PRINT "     "
  LOCATE 4, 39: IF PINLIN2% = 1 THEN PRINT "O O" ELSE PRINT "   "
  LOCATE 5, 40: IF HEADPIN% = 1 THEN PRINT "O" ELSE PRINT " "
  LOCATE Q, 40: PRINT "0"
  NEXT I%
  I% = 0
  Q = Q - 1
  IF Q < 2 THEN GOTO L2
  LOCATE Q + 1, 40: PRINT " "
  IF Q = 5 THEN HEADPIN% = 0
  IF Q = 4 THEN PINLIN2% = 0
  IF Q = 3 THEN PINLIN3% = 0
  IF Q = 2 THEN PINLIN4% = 0
GOTO L1

L2:
  BALLCOLOUR COL%
  SCREEN 0: WIDTH 80, 25
  CLS
  PRINT "BOWLING"
  PRINT "CREATED BY JOHN KREITLOW"
  PRINT "IN ASSOCIATION WITH rADIUM-V"
  LOCATE 1, 12: PRINT COL%
  PRINT
  LOCATE 5, 18: PRINT "BASED ON ACME SOFTWARE'S `BOWLIN' FOR THE TI-83"
  PRINT
  LOCATE 7, 31: PRINT "PRESS SPACE TO START"
  LOCATE 8, 32: PRINT "PRESS ESC TO QUIT"
  LOCATE 9, 32: PRINT "╔═══════════════╗"
  LOCATE 10, 32: PRINT "║ LANE    RULES ║"
  LOCATE 11, 32: PRINT "╚═══════════════╝"
  PRINT
  PRINT "STRIKE = 30 POINTS"
  PRINT "SPARE = 20 POINTS"
  PRINT "HIT `ENTER' AT WANTED SPACE ON THE LANE TO SELECT IT."
  PRINT "SELECT DESIRED STRENGTH,INDICATED NEAR BASE OF POWER METER.  CHOOSE QUICKLY,"
  PRINT "        BECAUSE YOU WILL MISS A TURN IF YOU TAKE TOO MUCH TIME."
  OPEN "BOWLING.HSR" FOR INPUT AS #1
  INPUT #1, SCORE1%
  INPUT #1, NAME$
  PRINT "HI-SCORE:"; SCORE1%; "BY "; NAME$
  FOR I% = 1 TO 50
  N$ = INKEY$
  IF N$ = CHR$(32) THEN GOTO 0
  IF N$ = CHR$(27) THEN GOTO GAMEND
  I% = 1
  NEXT I%

0 SCREEN 7
  SCORE% = 0
  PIN1% = 1
  PIN2% = 1
  PIN3% = 1
  PIN4% = 1
  PIN5% = 1
  PIN6% = 1
  PIN7% = 1
  PIN8% = 1
  PIN9% = 1
  PIN0% = 1

FOR I% = 1 TO 20

TOP:
  N% = 1
  SCREEN 7
  CLS
  IF I% = 1 OR I% = 3 OR I% = 5 OR I% = 7 OR I% = 9 OR I% = 11 OR I% = 13 OR I% = 15 OR I% = 17 OR I% = 19 THEN FRAMEP% = 1
  IF I% = 2 OR I% = 4 OR I% = 6 OR I% = 8 OR I% = 10 OR I% = 12 OR I% = 14 OR I% = 16 OR I% = 18 OR I% = 20 THEN FRAMEP% = 2

  IF FRAMEP% = 1 OR PIN1% = 1 THEN PIN1% = 1: CIRCLE (70, 10), 5 ELSE IF FRAMEP% = 2 AND PIN1% = 0 THEN CIRCLE (70, 10), 5, 0
  IF FRAMEP% = 1 OR PIN2% = 1 THEN PIN2% = 1: CIRCLE (110, 10), 5 ELSE IF FRAMEP% = 2 AND PIN2% = 0 THEN CIRCLE (110, 10), 5, 0
  IF FRAMEP% = 1 OR PIN3% = 1 THEN PIN3% = 1: CIRCLE (150, 10), 5 ELSE IF FRAMEP% = 2 AND PIN3% = 0 THEN CIRCLE (150, 10), 5, 0
  IF FRAMEP% = 1 OR PIN4% = 1 THEN PIN4% = 1: CIRCLE (190, 10), 5 ELSE IF FRAMEP% = 2 AND PIN4% = 0 THEN CIRCLE (190, 10), 5, 0
  IF FRAMEP% = 1 OR PIN5% = 1 THEN PIN5% = 1: CIRCLE (90, 30), 5 ELSE IF FRAMEP% = 2 AND PIN5% = 0 THEN CIRCLE (90, 30), 5, 0
  IF FRAMEP% = 1 OR PIN6% = 1 THEN PIN6% = 1: CIRCLE (130, 30), 5 ELSE IF FRAMEP% = 2 AND PIN6% = 0 THEN CIRCLE (130, 30), 5, 0
  IF FRAMEP% = 1 OR PIN7% = 1 THEN PIN7% = 1: CIRCLE (170, 30), 5 ELSE IF FRAMEP% = 2 AND PIN7% = 0 THEN CIRCLE (170, 30), 5, 0
  IF FRAMEP% = 1 OR PIN8% = 1 THEN PIN8% = 1: CIRCLE (110, 50), 5 ELSE IF FRAMEP% = 2 AND PIN8% = 0 THEN CIRCLE (110, 50), 5, 0
  IF FRAMEP% = 1 OR PIN9% = 1 THEN PIN9% = 1: CIRCLE (150, 50), 5 ELSE IF FRAMEP% = 2 AND PIN9% = 0 THEN CIRCLE (150, 50), 5, 0
  IF FRAMEP% = 1 OR PIN0% = 1 THEN PIN0% = 1: CIRCLE (130, 70), 5 ELSE IF FRAMEP% = 2 AND PIN0% = 0 THEN CIRCLE (130, 70), 5, 0
  LINE (300, 10)-(310, 190), 4, BF
  LINE (28, 10)-(28, 190)
  LINE (222, 10)-(222, 190)
  A = 40
  B = 190
  C = 190
  D = 10
  IF I% = 1 OR I% = 2 THEN FRAME% = 1
  IF I% = 3 OR I% = 4 THEN FRAME% = 2
  IF I% = 5 OR I% = 6 THEN FRAME% = 3
  IF I% = 7 OR I% = 8 THEN FRAME% = 4
  IF I% = 9 OR I% = 10 THEN FRAME% = 5
  IF I% = 11 OR I% = 12 THEN FRAME% = 6
  IF I% = 13 OR I% = 14 THEN FRAME% = 7
  IF I% = 15 OR I% = 16 THEN FRAME% = 8
  IF I% = 17 OR I% = 18 THEN FRAME% = 9
  IF I% = 19 OR I% = 20 THEN FRAME% = 10
  LOCATE 2, 30: PRINT "SCORE:"
  LOCATE 3, 30: PRINT SCORE%
  LOCATE 5, 30: PRINT "FRAME:"
  LOCATE 6, 30: PRINT FRAME%

1 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, COL%
  A = A + 1
  IF A > 210 THEN GOTO 2
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO 3
  IF N$ = CHR$(27) THEN GOTO GAMEND
GOTO 1

2 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, COL%
  A = A - 1
  IF A < 40 THEN GOTO 1
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO 3
  IF N$ = CHR$(27) THEN GOTO GAMEND
GOTO 2

3 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, 0
  IF A > 30 AND A < 70 THEN A = 50
  IF A > 50 AND A < 90 THEN A = 70
  IF A > 70 AND A < 110 THEN A = 90
  IF A > 90 AND A < 130 THEN A = 110
  IF A > 110 AND A < 150 THEN A = 130
  IF A > 130 AND A < 170 THEN A = 150
  IF A > 150 AND A < 190 THEN A = 170
  IF A > 170 AND A < 210 THEN A = 190
  IF A > 190 AND A < 240 THEN A = 210
  CIRCLE (A, B), 10, COL%
  H% = 5
  SOUND 400, .5

4 FOR F% = 1 TO 3
  LINE (300, C)-(310, C), 2, BF
  NEXT F%
  C = C - 1
  D = D + 1
  IF D <= 39 THEN E = 5
  IF D >= 39 AND D <= 76 THEN E = 4
  IF D >= 77 AND D <= 114 THEN E = 3
  IF D >= 115 AND D <= 152 THEN E = 2
  IF D >= 153 THEN E = 1
  LOCATE 23, 35: PRINT E
  IF C = 10 THEN SOUND 400, .5: LINE (300, 10)-(310, 190), 4, BF: C = 190: D = 10: H% = H% - 1
  IF H% = 0 THEN GOTO TIME
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO HIT1
  LOCATE 12, 15: PRINT H%
GOTO 4

HIT1:
  IF D <= 39 THEN E = 5
  IF D >= 39 AND D <= 76 THEN E = 4
  IF D >= 77 AND D <= 114 THEN E = 3
  IF D >= 115 AND D <= 152 THEN E = 2
  IF D >= 153 THEN E = 1

HIT2:
  FOR Z% = 1 TO E
  CIRCLE (A, B), 10, COL%
  CIRCLE (A, B), 10, 0
  NEXT Z%
  B = B - 1
  IF B = -5 THEN GOTO SCORE
GOTO HIT2

SCORE:
  IF A = 70 AND PIN1% = 0 THEN P = 0
  IF A = 70 AND PIN1% = 1 THEN PIN1% = 0: P = 1

  IF A = 90 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN5% = 0: P = 3
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 THEN P = 0
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 1 AND PIN5% = 1 THEN PIN2% = 0: PIN5% = 0: P = 2
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 1 AND PIN2% = 0 AND PIN5% = 1 THEN PIN1% = 0: PIN5% = 0: P = 2
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 1 AND PIN2% = 1 AND PIN5% = 1 THEN PIN1% = 0: PIN2% = 0: PIN5% = 0: P = 3

  IF A = 110 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN3% = 0: PIN5% = 0: PIN6% = 0: PIN8% = 0: P = 6
  IF A = 110 AND FRAMEP% = 2 AND PIN8% = 0 THEN P = 0
  IF A = 110 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 1 AND PIN3% = 1 AND PIN5% = 1 AND PIN6% = 1 AND PIN8% = 1 THEN PIN2% = 0: PIN3% = 0: PIN5% = 0: PIN6% = 0: PIN8% = 0: P = 5
  IF A = 110 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 AND PIN8% = 1 AND PIN6% = 1 AND PIN3% = 1 THEN PIN8% = 0: PIN6% = 0: PIN3% = 0: P = 3
  IF A = 110 AND FRAMEP% = 2 AND PIN9% = 0 THEN PIN1% = 0: PIN5% = 0: PIN8% = 0: P = 3
  IF A = 110 AND FRAMEP% = 2 AND PIN7% = 0 AND PIN9% = 1 THEN PIN8% = 0: PIN1% = 0: PIN2% = 0: PIN5% = 0: PIN6% = 0: P = 5

  IF A = 130 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN3% = 0: PIN4% = 0: PIN5% = 0: PIN6% = 0: PIN7% = 0: PIN8% = 0: PIN9% = 0: PIN0% = 0: I% = I% + 1: P = 30: GOTO STRIKE
  IF A = 130 AND FRAMEP% = 2 THEN SCORE% = SCORE% - P: P = 20: GOTO SPARE

  IF A = 150 AND FRAMEP% = 1 THEN PIN2% = 0: PIN3% = 0: PIN4% = 0: PIN6% = 0: PIN7% = 0: PIN9% = 0: P = 6
  IF A = 150 AND FRAMEP% = 2 AND PIN9% = 0 THEN P = 0
  IF A = 150 AND FRAMEP% = 2 AND PIN4% = 0 AND PIN2% = 1 AND PIN3% = 1 AND PIN7% = 1 AND PIN6% = 1 AND PIN9% = 1 THEN PIN9% = 0: PIN7% = 0: PIN6% = 0: PIN3% = 0: PIN2% = 0: P = 5
  IF A = 150 AND FRAMEP% = 2 AND PIN4% = 0 AND PIN3% = 0 AND PIN7% = 0 AND PIN9% = 1 AND PIN6% = 1 AND PIN2% = 1 THEN PIN9% = 0: PIN6% = 0: PIN2% = 0: P = 3
  IF A = 150 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 THEN PIN3% = 0: PIN4% = 0: PIN6% = 0: PIN7% = 0: PIN9% = 0: P = 5
  IF A = 150 AND FRAMEP% = 2 AND PIN8% = 0 THEN PIN9% = 0: PIN7% = 0: PIN4% = 0: P = 3

  IF A = 170 AND FRAMEP% = 1 THEN PIN3% = 0: PIN4% = 0: PIN7% = 0: P = 3
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 0 THEN P = 0
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 1 AND PIN3% = 1 AND PIN4% = 0 THEN PIN7% = 0: PIN3% = 0: P = 2
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 1 AND PIN3% = 0 AND PIN4% = 1 THEN PIN7% = 0: PIN4% = 0: P = 2

  IF A = 190 AND FRAMEP% = 1 THEN PIN4% = 0: P = 1
  IF A = 190 AND FRAMEP% = 2 AND PIN4% = 0 THEN P = 0
  IF A = 190 AND FRAMEP% = 2 AND PIN4% = 1 THEN PIN4% = 0: P = 1

  IF A > 190 OR A < 70 THEN P = 0

999
  SCORE% = SCORE% + P
  FOR F% = 1 TO 90!
  IF PIN1% = 1 THEN PIN1% = 1: CIRCLE (70, 10), 5 ELSE IF PIN1% = 0 THEN CIRCLE (70, 10), 5, 0
  IF PIN2% = 1 THEN PIN2% = 1: CIRCLE (110, 10), 5 ELSE IF PIN2% = 0 THEN CIRCLE (110, 10), 5, 0
  IF PIN3% = 1 THEN PIN3% = 1: CIRCLE (150, 10), 5 ELSE IF PIN3% = 0 THEN CIRCLE (150, 10), 5, 0
  IF PIN4% = 1 THEN PIN4% = 1: CIRCLE (190, 10), 5 ELSE IF PIN4% = 0 THEN CIRCLE (190, 10), 5, 0
  IF PIN5% = 1 THEN PIN5% = 1: CIRCLE (90, 30), 5 ELSE IF PIN5% = 0 THEN CIRCLE (90, 30), 5, 0
  IF PIN6% = 1 THEN PIN6% = 1: CIRCLE (130, 30), 5 ELSE IF PIN6% = 0 THEN CIRCLE (130, 30), 5, 0
  IF PIN7% = 1 THEN PIN7% = 1: CIRCLE (170, 30), 5 ELSE IF PIN7% = 0 THEN CIRCLE (170, 30), 5, 0
  IF PIN8% = 1 THEN PIN8% = 1: CIRCLE (110, 50), 5 ELSE IF PIN8% = 0 THEN CIRCLE (110, 50), 5, 0
  IF PIN9% = 1 THEN PIN9% = 1: CIRCLE (150, 50), 5 ELSE IF PIN9% = 0 THEN CIRCLE (150, 50), 5, 0
  IF PIN0% = 1 THEN PIN0% = 1: CIRCLE (130, 70), 5 ELSE IF PIN0% = 0 THEN CIRCLE (130, 70), 5, 0
  LOCATE 12, 15: PRINT "+"; P
  NEXT F%
  IF I% = 20 THEN GOTO GAMEOVR
  NEXT I%
END
'-----------------------------------------------------------------------------

SPARE:
  CLS
  Y = 13
  Z = 26
SPARE1:
  SCREEN 7
  O% = 1
  LOCATE 5, 13:  COLOR 7: PRINT "╔════════════╗"
  LOCATE 6, 13: COLOR 7:  PRINT "║   SPARE!   ║"
  LOCATE 7, 13:  COLOR 7: PRINT "╚════════════╝"
  LOCATE 5, Y: COLOR 4: PRINT " ═"; CHR$(15)
  LOCATE 7, Z: COLOR 4: PRINT CHR$(15); "═ "
  LOCATE 9, 13: COLOR 7: PRINT "  PRESS SPACE"
  Y = Y + 1
  Z = Z - 1
  IF Y = 25 THEN Y = 13
  IF Z = 13 THEN Z = 25
  FOR O% = 1 TO 500!
  N$ = INKEY$
  IF N$ = CHR$(32) THEN COLOR 15: CLS : SCREEN 7: GOTO 999
  NEXT O%
GOTO SPARE1

GOTO 999

STRIKE:
  CLS
  Y = 13
  Z = 26
STRIKE1:
  SCREEN 7
  O% = 1
  LOCATE 5, 13:  COLOR 7: PRINT "╔════════════╗"
  LOCATE 6, 13: COLOR 7:  PRINT "║   STRIKE!  ║"
  LOCATE 7, 13:  COLOR 7: PRINT "╚════════════╝"
  LOCATE 5, Y: COLOR 14: PRINT " ═"; CHR$(15)
  LOCATE 7, Z: COLOR 14: PRINT CHR$(15); "═ "
  LOCATE 9, 13: COLOR 7: PRINT "  PRESS SPACE"
  Y = Y + 1
  Z = Z - 1
  IF Y = 25 THEN Y = 13
  IF Z = 13 THEN Z = 25
  FOR O% = 1 TO 500!
  N$ = INKEY$
  IF N$ = CHR$(32) THEN COLOR 15: CLS : SCREEN 7: GOTO 999
  NEXT O%
GOTO STRIKE1

TIME:
  FOR F% = 1 TO 500!
  LOCATE 13, 12: PRINT "TIME'S UP!"
  NEXT F%
GOTO 999
 

GAMEOVR:
  SCREEN 0: WIDTH 80, 25
  IF SCORE% > SCORE1% THEN GOTO HISCORE
  CLS
  PRINT "TOTAL SCORE:"
  PRINT SCORE%
  PRINT
GAMEOVR0:
  PRINT "CREATED BY JOHN KREITLOW"
  PRINT "IN ASSOCIATION WITH RADIUM-V"
  PRINT
  PRINT "PLAY AGAIN?(Y/N)"
GAMEOVR1:
  N$ = INKEY$
  IF N$ = CHR$(89) OR N$ = CHR$(121) THEN GOTO 0
  IF N$ = CHR$(78) OR N$ = CHR$(110) THEN END
GOTO GAMEOVR1

GAMEND:
  CLS
  SCREEN 0: WIDTH 80, 25
  GOTO GAMEOVR0
END

HISCORE:
  PRINT "CONGRATULATIONS!  YOU BEAT THE HIGH SCORE!"
  PRINT "YOU SHOULD BE ON THE HALL OF FAME."
  PRINT
  PRINT "OLD HISCORE:"; SCORE1%
  PRINT "MADE BY:"; NAME$
  PRINT
  PRINT "YOUR SCORE:"; SCORE%
  SCORE1% = SCORE%

  CLOSE #1
  OPEN "BOWLING.HSR" FOR OUTPUT AS #2
  INPUT "PLEASE ENTER YOUR NAME:", NAME$
  WRITE #2, SCORE%, NAME$
  CLOSE
GOTO GAMEOVR0

SUB BALLCOLOUR (COL%)
CLS
SCREEN 7
N = 7
M = 5
CIRCLE (35, 10), 10, 1
CIRCLE (75, 10), 10, 2
CIRCLE (115, 10), 10, 3
CIRCLE (155, 10), 10, 4
CIRCLE (195, 10), 10, 5
CIRCLE (235, 10), 10, 12
CIRCLE (275, 10), 10, 14
LOCATE 12, 5: PRINT "PLEASE SELECT YOUR BALL COLOR."
COLOUR1:
FOR R% = 1 TO 500!
LOCATE N, M: PRINT CHR$(127)
COLOR INT(RND * 15) + 1
NEXT R%
COLOR 7
N = N - 1
IF N < 5 THEN LOCATE N + 1, M: PRINT " ": LOCATE N + 2, M: PRINT " ": N = 7
N$ = INKEY$
IF N$ = CHR$(0) + "K" THEN GOTO LEFTCOL1
IF N$ = CHR$(0) + "M" THEN GOTO RIGHTCOL1
IF N$ = CHR$(13) THEN GOTO ENTER
GOTO COLOUR1

LEFTCOL1:
LOCATE N, M: PRINT " "
LOCATE N + 1, M: PRINT " "
LOCATE N + 2, M: PRINT " "
N = 7
M = M - 5
IF M < 5 THEN M = 5
GOTO COLOUR1

RIGHTCOL1:
LOCATE N, M: PRINT " "
LOCATE N + 1, M: PRINT " "
LOCATE N + 2, M: PRINT " "

N = 7
M = M + 5
IF M > 35 THEN M = 35
GOTO COLOUR1

ENTER:
IF M = 5 THEN COL% = 1
IF M = 10 THEN COL% = 2
IF M = 15 THEN COL% = 3
IF M = 20 THEN COL% = 4
IF M = 25 THEN COL% = 5
IF M = 30 THEN COL% = 12
IF M = 35 THEN COL% = 14

END SUB
Logged
Meg
Ancient QBer
****
Posts: 483



BOWLING for John
« Reply #1 on: January 19, 2005, 05:36:49 PM »

j2krei08:

I have no idea how you manage to write code like this.  How do you follow the logical flow of the program, with it jumping all over the place?

With your permission, I'd like to print out this code, pick through it line by line on paper, and rewrite the entire thing in a much more efficient, easy-to-read manner.  Then I'll post it back here, complete with documentation, to give you an idea of how good coding practices can make writing programs a ***LOT*** easier, time-efficient, and simple to debug.

I would want no credit at all for doing this; it would still be your game, and your idea.  I just want to spread the word:  Clean coding = Better coding!

Please try not to take this as a personal attack.  <3

*peace*

Meg.

edit #1:  What does the variable E do in this code?  It looks to me like C and D control like a "power meter" that set E which seems to let you select the strength of your bowl?  But then E isn't used for anything once the ball is released, as far as I can tell.

edit #2: What is the logic behind knocking down pins?  Can you explain it to me in words, instead of code?  It looks like certain pins get knocked down depending on A (the lane the ball is released into).  If you bowl down the exact middle, you either get a strike or a spare depending on which roll (1 or 2) it is in the frame.  But let's say you don't hit the middle lane.  Let's say you're one lane to the left.  Will the ball knock down only pins directly ahead of it?
Logged
R@dioman
Ancient QBer
****
Posts: 410



BOWLING for John
« Reply #2 on: January 19, 2005, 06:25:01 PM »

you need a compiler. Get qb 4.5. With it you can create exes
Logged

Nemesis
Forum Regular
**
Posts: 118



BOWLING for John
« Reply #3 on: January 19, 2005, 07:55:32 PM »

Quote from: "Meg"
j2krei08:

How do you follow the logical flow of the program, with it jumping all over the place?



Probably just how, like when you first started coding  :roll:
(I would assume  :Huh: )
Logged
Mac
Senior Member
**
Posts: 243



WWW
Posted elsewhere
« Reply #4 on: January 23, 2005, 03:41:22 PM »

You posted this before and I responded there.

You need to fix the program so it works on modern computers. It is too fast. And fix it so the user does not have to manually enter an original hiscores file.

Here is the code with changes:

Code:
' I put in some WAIT &H3DA, 8, 8: : WAIT &H3DA, 8
' to slow things down. Also fixed the program so
' it can cope with lack of the hiscore file
' Mac
DECLARE SUB BALLCOLOUR (COL%)
SCREEN 0
CLS
Q = 23
PINLIN4% = 1
PINLIN3% = 1
PINLIN2% = 1
HEADPIN% = 1
L1:
  N% = 1
  FOR I% = 1 TO 20: ' Adjust according to your machine speed
  WAIT &H3DA, 8, 8: : WAIT &H3DA, 8
  LOCATE 2, 37: IF PINLIN4% = 1 THEN PRINT "O O O O" ELSE PRINT "        "
  LOCATE 3, 38: IF PINLIN3% = 1 THEN PRINT "O O O" ELSE PRINT "     "
  LOCATE 4, 39: IF PINLIN2% = 1 THEN PRINT "O O" ELSE PRINT "   "
  LOCATE 5, 40: IF HEADPIN% = 1 THEN PRINT "O" ELSE PRINT " "
  LOCATE Q, 40: PRINT "0"
  NEXT I%
  I% = 0
  Q = Q - 1
  IF Q < 2 THEN GOTO L2
  LOCATE Q + 1, 40: PRINT " "
  IF Q = 5 THEN HEADPIN% = 0
  IF Q = 4 THEN PINLIN2% = 0
  IF Q = 3 THEN PINLIN3% = 0
  IF Q = 2 THEN PINLIN4% = 0
GOTO L1

L2:
  BALLCOLOUR COL%
  SCREEN 0: WIDTH 80, 25
  CLS
  PRINT "BOWLING"
  PRINT "CREATED BY JOHN KREITLOW"
  PRINT "IN ASSOCIATION WITH rADIUM-V"
  LOCATE 1, 12: PRINT COL%
  PRINT
  LOCATE 5, 18: PRINT "BASED ON ACME SOFTWARE'S `BOWLIN' FOR THE TI-83"
  PRINT
  LOCATE 7, 31: PRINT "PRESS SPACE TO START"
  LOCATE 8, 32: PRINT "PRESS ESC TO QUIT"
  LOCATE 9, 32: PRINT "+---------------+"
  LOCATE 10, 32: PRINT "¦ LANE    RULES ¦"
  LOCATE 11, 32: PRINT "+---------------+"
  PRINT
  PRINT "STRIKE = 30 POINTS"
  PRINT "SPARE = 20 POINTS"
  PRINT "HIT `ENTER' AT WANTED SPACE ON THE LANE TO SELECT IT."
  PRINT "SELECT DESIRED STRENGTH,INDICATED NEAR BASE OF POWER METER.  CHOOSE QUICKLY,"
  PRINT "        BECAUSE YOU WILL MISS A TURN IF YOU TAKE TOO MUCH TIME."
  
  OPEN "BOWLING.HSR" FOR BINARY AS #1: MyLof = LOF(1): CLOSE
  IF MyLof = 0 THEN
     SCORE1% = 0: NAME$ = "Nobody Played Yet"
  ELSE
     OPEN "BOWLING.HSR" FOR INPUT AS #1
     INPUT #1, SCORE1%
     INPUT #1, NAME$
  END IF
   CLOSE
  PRINT "HI-SCORE:"; SCORE1%; "BY "; NAME$
  FOR I% = 1 TO 50
  N$ = INKEY$
  IF N$ = CHR$(32) THEN GOTO 0
  IF N$ = CHR$(27) THEN GOTO GAMEND
  I% = 1
  NEXT I%

0 SCREEN 7
  SCORE% = 0
  PIN1% = 1
  PIN2% = 1
  PIN3% = 1
  PIN4% = 1
  PIN5% = 1
  PIN6% = 1
  PIN7% = 1
  PIN8% = 1
  PIN9% = 1
  PIN0% = 1

FOR I% = 1 TO 20

TOP:
  N% = 1
  SCREEN 7
  CLS
  IF I% = 1 OR I% = 3 OR I% = 5 OR I% = 7 OR I% = 9 OR I% = 11 OR I% = 13 OR I% = 15 OR I% = 17 OR I% = 19 THEN FRAMEP% = 1
  IF I% = 2 OR I% = 4 OR I% = 6 OR I% = 8 OR I% = 10 OR I% = 12 OR I% = 14 OR I% = 16 OR I% = 18 OR I% = 20 THEN FRAMEP% = 2

  IF FRAMEP% = 1 OR PIN1% = 1 THEN PIN1% = 1: CIRCLE (70, 10), 5 ELSE IF FRAMEP% = 2 AND PIN1% = 0 THEN CIRCLE (70, 10), 5, 0
  IF FRAMEP% = 1 OR PIN2% = 1 THEN PIN2% = 1: CIRCLE (110, 10), 5 ELSE IF FRAMEP% = 2 AND PIN2% = 0 THEN CIRCLE (110, 10), 5, 0
  IF FRAMEP% = 1 OR PIN3% = 1 THEN PIN3% = 1: CIRCLE (150, 10), 5 ELSE IF FRAMEP% = 2 AND PIN3% = 0 THEN CIRCLE (150, 10), 5, 0
  IF FRAMEP% = 1 OR PIN4% = 1 THEN PIN4% = 1: CIRCLE (190, 10), 5 ELSE IF FRAMEP% = 2 AND PIN4% = 0 THEN CIRCLE (190, 10), 5, 0
  IF FRAMEP% = 1 OR PIN5% = 1 THEN PIN5% = 1: CIRCLE (90, 30), 5 ELSE IF FRAMEP% = 2 AND PIN5% = 0 THEN CIRCLE (90, 30), 5, 0
  IF FRAMEP% = 1 OR PIN6% = 1 THEN PIN6% = 1: CIRCLE (130, 30), 5 ELSE IF FRAMEP% = 2 AND PIN6% = 0 THEN CIRCLE (130, 30), 5, 0
  IF FRAMEP% = 1 OR PIN7% = 1 THEN PIN7% = 1: CIRCLE (170, 30), 5 ELSE IF FRAMEP% = 2 AND PIN7% = 0 THEN CIRCLE (170, 30), 5, 0
  IF FRAMEP% = 1 OR PIN8% = 1 THEN PIN8% = 1: CIRCLE (110, 50), 5 ELSE IF FRAMEP% = 2 AND PIN8% = 0 THEN CIRCLE (110, 50), 5, 0
  IF FRAMEP% = 1 OR PIN9% = 1 THEN PIN9% = 1: CIRCLE (150, 50), 5 ELSE IF FRAMEP% = 2 AND PIN9% = 0 THEN CIRCLE (150, 50), 5, 0
  IF FRAMEP% = 1 OR PIN0% = 1 THEN PIN0% = 1: CIRCLE (130, 70), 5 ELSE IF FRAMEP% = 2 AND PIN0% = 0 THEN CIRCLE (130, 70), 5, 0
  LINE (300, 10)-(310, 190), 4, BF
  LINE (28, 10)-(28, 190)
  LINE (222, 10)-(222, 190)
  A = 40
  B = 190
  C = 190
  D = 10
  IF I% = 1 OR I% = 2 THEN FRAME% = 1
  IF I% = 3 OR I% = 4 THEN FRAME% = 2
  IF I% = 5 OR I% = 6 THEN FRAME% = 3
  IF I% = 7 OR I% = 8 THEN FRAME% = 4
  IF I% = 9 OR I% = 10 THEN FRAME% = 5
  IF I% = 11 OR I% = 12 THEN FRAME% = 6
  IF I% = 13 OR I% = 14 THEN FRAME% = 7
  IF I% = 15 OR I% = 16 THEN FRAME% = 8
  IF I% = 17 OR I% = 18 THEN FRAME% = 9
  IF I% = 19 OR I% = 20 THEN FRAME% = 10
  LOCATE 2, 30: PRINT "SCORE:"
  LOCATE 3, 30: PRINT SCORE%
  LOCATE 5, 30: PRINT "FRAME:"
  LOCATE 6, 30: PRINT FRAME%

1 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, COL%
  WAIT &H3DA, 8, 8: : WAIT &H3DA, 8
  A = A + 1
  IF A > 210 THEN GOTO 2
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO 3
  IF N$ = CHR$(27) THEN GOTO GAMEND
GOTO 1

2 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, COL%
  WAIT &H3DA, 8, 8: WAIT &H3DA, 8
  A = A - 1
  IF A < 40 THEN GOTO 1
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO 3
  IF N$ = CHR$(27) THEN GOTO GAMEND
GOTO 2

3 LINE (28, 180)-(222, 200), 0, BF
  CIRCLE (A, B), 10, 0
  IF A > 30 AND A < 70 THEN A = 50
  IF A > 50 AND A < 90 THEN A = 70
  IF A > 70 AND A < 110 THEN A = 90
  IF A > 90 AND A < 130 THEN A = 110
  IF A > 110 AND A < 150 THEN A = 130
  IF A > 130 AND A < 170 THEN A = 150
  IF A > 150 AND A < 190 THEN A = 170
  IF A > 170 AND A < 210 THEN A = 190
  IF A > 190 AND A < 240 THEN A = 210
  CIRCLE (A, B), 10, COL%
  H% = 5
  SOUND 400, .5

4 FOR F% = 1 TO 3
  LINE (300, C)-(310, C), 2, BF
  NEXT F%
  C = C - 1
  D = D + 1
  IF D <= 39 THEN E = 5
  IF D >= 39 AND D <= 76 THEN E = 4
  IF D >= 77 AND D <= 114 THEN E = 3
  IF D >= 115 AND D <= 152 THEN E = 2
  IF D >= 153 THEN E = 1
  LOCATE 23, 35: PRINT E
  IF C = 10 THEN SOUND 400, .5: LINE (300, 10)-(310, 190), 4, BF: C = 190: D = 10: H% = H% - 1
  IF H% = 0 THEN GOTO TIME
  N$ = INKEY$
  IF N$ = CHR$(13) THEN GOTO HIT1
  LOCATE 12, 15: PRINT H%
GOTO 4

HIT1:
  IF D <= 39 THEN E = 5
  IF D >= 39 AND D <= 76 THEN E = 4
  IF D >= 77 AND D <= 114 THEN E = 3
  IF D >= 115 AND D <= 152 THEN E = 2
  IF D >= 153 THEN E = 1

HIT2:
  FOR Z% = 1 TO E
  CIRCLE (A, B), 10, COL%
  CIRCLE (A, B), 10, 0
  NEXT Z%
  B = B - 1
  IF B = -5 THEN GOTO SCORE
GOTO HIT2

SCORE:
  IF A = 70 AND PIN1% = 0 THEN P = 0
  IF A = 70 AND PIN1% = 1 THEN PIN1% = 0: P = 1

  IF A = 90 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN5% = 0: P = 3
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 THEN P = 0
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 1 AND PIN5% = 1 THEN PIN2% = 0: PIN5% = 0: P = 2
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 1 AND PIN2% = 0 AND PIN5% = 1 THEN PIN1% = 0: PIN5% = 0: P = 2
  IF A = 90 AND FRAMEP% = 2 AND PIN1% = 1 AND PIN2% = 1 AND PIN5% = 1 THEN PIN1% = 0: PIN2% = 0: PIN5% = 0: P = 3

  IF A = 110 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN3% = 0: PIN5% = 0: PIN6% = 0: PIN8% = 0: P = 6
  IF A = 110 AND FRAMEP% = 2 AND PIN8% = 0 THEN P = 0
  IF A = 110 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 1 AND PIN3% = 1 AND PIN5% = 1 AND PIN6% = 1 AND PIN8% = 1 THEN PIN2% = 0: PIN3% = 0: PIN5% = 0: PIN6% = 0: PIN8% = 0: P = 5
  IF A = 110 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 AND PIN8% = 1 AND PIN6% = 1 AND PIN3% = 1 THEN PIN8% = 0: PIN6% = 0: PIN3% = 0: P = 3
  IF A = 110 AND FRAMEP% = 2 AND PIN9% = 0 THEN PIN1% = 0: PIN5% = 0: PIN8% = 0: P = 3
  IF A = 110 AND FRAMEP% = 2 AND PIN7% = 0 AND PIN9% = 1 THEN PIN8% = 0: PIN1% = 0: PIN2% = 0: PIN5% = 0: PIN6% = 0: P = 5

  IF A = 130 AND FRAMEP% = 1 THEN PIN1% = 0: PIN2% = 0: PIN3% = 0: PIN4% = 0: PIN5% = 0: PIN6% = 0: PIN7% = 0: PIN8% = 0: PIN9% = 0: PIN0% = 0: I% = I% + 1: P = 30: GOTO STRIKE
  IF A = 130 AND FRAMEP% = 2 THEN SCORE% = SCORE% - P: P = 20: GOTO SPARE

  IF A = 150 AND FRAMEP% = 1 THEN PIN2% = 0: PIN3% = 0: PIN4% = 0: PIN6% = 0: PIN7% = 0: PIN9% = 0: P = 6
  IF A = 150 AND FRAMEP% = 2 AND PIN9% = 0 THEN P = 0
  IF A = 150 AND FRAMEP% = 2 AND PIN4% = 0 AND PIN2% = 1 AND PIN3% = 1 AND PIN7% = 1 AND PIN6% = 1 AND PIN9% = 1 THEN PIN9% = 0: PIN7% = 0: PIN6% = 0: PIN3% = 0: PIN2% = 0: P = 5
  IF A = 150 AND FRAMEP% = 2 AND PIN4% = 0 AND PIN3% = 0 AND PIN7% = 0 AND PIN9% = 1 AND PIN6% = 1 AND PIN2% = 1 THEN PIN9% = 0: PIN6% = 0: PIN2% = 0: P = 3
  IF A = 150 AND FRAMEP% = 2 AND PIN1% = 0 AND PIN2% = 0 AND PIN5% = 0 THEN PIN3% = 0: PIN4% = 0: PIN6% = 0: PIN7% = 0: PIN9% = 0: P = 5
  IF A = 150 AND FRAMEP% = 2 AND PIN8% = 0 THEN PIN9% = 0: PIN7% = 0: PIN4% = 0: P = 3

  IF A = 170 AND FRAMEP% = 1 THEN PIN3% = 0: PIN4% = 0: PIN7% = 0: P = 3
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 0 THEN P = 0
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 1 AND PIN3% = 1 AND PIN4% = 0 THEN PIN7% = 0: PIN3% = 0: P = 2
  IF A = 170 AND FRAMEP% = 2 AND PIN7% = 1 AND PIN3% = 0 AND PIN4% = 1 THEN PIN7% = 0: PIN4% = 0: P = 2

  IF A = 190 AND FRAMEP% = 1 THEN PIN4% = 0: P = 1
  IF A = 190 AND FRAMEP% = 2 AND PIN4% = 0 THEN P = 0
  IF A = 190 AND FRAMEP% = 2 AND PIN4% = 1 THEN PIN4% = 0: P = 1

  IF A > 190 OR A < 70 THEN P = 0

999
  SCORE% = SCORE% + P
  FOR F% = 1 TO 90!
  IF PIN1% = 1 THEN PIN1% = 1: CIRCLE (70, 10), 5 ELSE IF PIN1% = 0 THEN CIRCLE (70, 10), 5, 0
  IF PIN2% = 1 THEN PIN2% = 1: CIRCLE (110, 10), 5 ELSE IF PIN2% = 0 THEN CIRCLE (110, 10), 5, 0
  IF PIN3% = 1 THEN PIN3% = 1: CIRCLE (150, 10), 5 ELSE IF PIN3% = 0 THEN CIRCLE (150, 10), 5, 0
  IF PIN4% = 1 THEN PIN4% = 1: CIRCLE (190, 10), 5 ELSE IF PIN4% = 0 THEN CIRCLE (190, 10), 5, 0
  IF PIN5% = 1 THEN PIN5% = 1: CIRCLE (90, 30), 5 ELSE IF PIN5% = 0 THEN CIRCLE (90, 30), 5, 0
  IF PIN6% = 1 THEN PIN6% = 1: CIRCLE (130, 30), 5 ELSE IF PIN6% = 0 THEN CIRCLE (130, 30), 5, 0
  IF PIN7% = 1 THEN PIN7% = 1: CIRCLE (170, 30), 5 ELSE IF PIN7% = 0 THEN CIRCLE (170, 30), 5, 0
  IF PIN8% = 1 THEN PIN8% = 1: CIRCLE (110, 50), 5 ELSE IF PIN8% = 0 THEN CIRCLE (110, 50), 5, 0
  IF PIN9% = 1 THEN PIN9% = 1: CIRCLE (150, 50), 5 ELSE IF PIN9% = 0 THEN CIRCLE (150, 50), 5, 0
  IF PIN0% = 1 THEN PIN0% = 1: CIRCLE (130, 70), 5 ELSE IF PIN0% = 0 THEN CIRCLE (130, 70), 5, 0
  LOCATE 12, 15: PRINT "+"; P
  NEXT F%
  IF I% = 20 THEN GOTO GAMEOVR
  NEXT I%
END
'-----------------------------------------------------------------------------

SPARE:
  CLS
  Y = 13
  Z = 26
SPARE1:
  SCREEN 7
  O% = 1
  LOCATE 5, 13:  COLOR 7: PRINT "+------------+"
  LOCATE 6, 13: COLOR 7:  PRINT "¦   SPARE!   ¦"
  LOCATE 7, 13:  COLOR 7: PRINT "+------------+"
  LOCATE 5, Y: COLOR 4: PRINT " -"; CHR$(15)
  LOCATE 7, Z: COLOR 4: PRINT CHR$(15); "- "
  LOCATE 9, 13: COLOR 7: PRINT "  PRESS SPACE"
  Y = Y + 1
  Z = Z - 1
  IF Y = 25 THEN Y = 13
  IF Z = 13 THEN Z = 25
  FOR O% = 1 TO 500!
  N$ = INKEY$
  IF N$ = CHR$(32) THEN COLOR 15: CLS : SCREEN 7: GOTO 999
  NEXT O%
GOTO SPARE1

GOTO 999

STRIKE:
  CLS
  Y = 13
  Z = 26
STRIKE1:
  SCREEN 7
  O% = 1
  LOCATE 5, 13:  COLOR 7: PRINT "+------------+"
  LOCATE 6, 13: COLOR 7:  PRINT "¦   STRIKE!  ¦"
  LOCATE 7, 13:  COLOR 7: PRINT "+------------+"
  LOCATE 5, Y: COLOR 14: PRINT " -"; CHR$(15)
  LOCATE 7, Z: COLOR 14: PRINT CHR$(15); "- "
  LOCATE 9, 13: COLOR 7: PRINT "  PRESS SPACE"
  Y = Y + 1
  Z = Z - 1
  IF Y = 25 THEN Y = 13
  IF Z = 13 THEN Z = 25
  FOR O% = 1 TO 500!
  N$ = INKEY$
  IF N$ = CHR$(32) THEN COLOR 15: CLS : SCREEN 7: GOTO 999
  NEXT O%
GOTO STRIKE1

TIME:
  FOR F% = 1 TO 500!
  LOCATE 13, 12: PRINT "TIME'S UP!"
  NEXT F%
GOTO 999
  

GAMEOVR:
  SCREEN 0: WIDTH 80, 25
  IF SCORE% > SCORE1% THEN GOTO HISCORE
  CLS
  PRINT "TOTAL SCORE:"
  PRINT SCORE%
  PRINT
GAMEOVR0:
  PRINT "CREATED BY JOHN KREITLOW"
  PRINT "IN ASSOCIATION WITH RADIUM-V"
  PRINT
  PRINT "PLAY AGAIN?(Y/N)"
GAMEOVR1:
  N$ = INKEY$
  IF N$ = CHR$(89) OR N$ = CHR$(121) THEN GOTO 0
  IF N$ = CHR$(78) OR N$ = CHR$(110) THEN END
GOTO GAMEOVR1

GAMEND:
  CLS
  SCREEN 0: WIDTH 80, 25
  GOTO GAMEOVR0
END

HISCORE:
  PRINT "CONGRATULATIONS!  YOU BEAT THE HIGH SCORE!"
  PRINT "YOU SHOULD BE ON THE HALL OF FAME."
  PRINT
  PRINT "OLD HISCORE:"; SCORE1%
  PRINT "MADE BY:"; NAME$
  PRINT
  PRINT "YOUR SCORE:"; SCORE%
  SCORE1% = SCORE%

  CLOSE #1
  OPEN "BOWLING.HSR" FOR OUTPUT AS #2
  INPUT "PLEASE ENTER YOUR NAME:", NAME$
  WRITE #2, SCORE%, NAME$
  CLOSE
GOTO GAMEOVR0

SUB BALLCOLOUR (COL%)
CLS
SCREEN 7
N = 7
M = 5
CIRCLE (35, 10), 10, 1
CIRCLE (75, 10), 10, 2
CIRCLE (115, 10), 10, 3
CIRCLE (155, 10), 10, 4
CIRCLE (195, 10), 10, 5
CIRCLE (235, 10), 10, 12
CIRCLE (275, 10), 10, 14
LOCATE 12, 5: PRINT "PLEASE SELECT YOUR BALL COLOR."
COLOUR1:
FOR R% = 1 TO 500!
LOCATE N, M: PRINT CHR$(127)
COLOR INT(RND * 15) + 1
NEXT R%
COLOR 7
N = N - 1
IF N < 5 THEN LOCATE N + 1, M: PRINT " ": LOCATE N + 2, M: PRINT " ": N = 7
N$ = INKEY$
IF N$ = CHR$(0) + "K" THEN GOTO LEFTCOL1
IF N$ = CHR$(0) + "M" THEN GOTO RIGHTCOL1
IF N$ = CHR$(13) THEN GOTO ENTER
GOTO COLOUR1

LEFTCOL1:
LOCATE N, M: PRINT " "
LOCATE N + 1, M: PRINT " "
LOCATE N + 2, M: PRINT " "
N = 7
M = M - 5
IF M < 5 THEN M = 5
GOTO COLOUR1

RIGHTCOL1:
LOCATE N, M: PRINT " "
LOCATE N + 1, M: PRINT " "
LOCATE N + 2, M: PRINT " "

N = 7
M = M + 5
IF M > 35 THEN M = 35
GOTO COLOUR1

ENTER:
IF M = 5 THEN COL% = 1
IF M = 10 THEN COL% = 2
IF M = 15 THEN COL% = 3
IF M = 20 THEN COL% = 4
IF M = 25 THEN COL% = 5
IF M = 30 THEN COL% = 12
IF M = 35 THEN COL% = 14

END SUB





Mac
Logged
Blitz
I hold this place together
*****
Posts: 853



WWW
BOWLING for John
« Reply #5 on: January 23, 2005, 06:52:36 PM »

Heeh, meg you must have too much time. I wouldn't touch code like that with a stick even. Smiley
Logged

oship me and i will give you lots of guurrls and beeea
Mac
Senior Member
**
Posts: 243



WWW
"Mac" not "meg"
« Reply #6 on: January 23, 2005, 07:54:24 PM »

Hehe. Well, I was a maintenance programmer for many years and had to change all kinds of code. I learned to ignore all programming techniques and simply find the place that needed the change and do it.

Those GOTOs made it confusing OK.  Shocked

But it actually works, so that it something. I don't know why he doesn't simply download a version of QBasic that supports compiles and produce his own EXE. So I concluded that he did that and thought the reason it failed is that there was something wrong with the compiler. So I fixed the code and it should compile and work now, although really, each user needs to fix the refresh delay count for the screen he is using, so I doubt an EXE will be generally useful without some additional code to do that.

Count me out of that exercise! I don't have THAT much time.

Mac
Logged
adosorken
*/-\*
*****
Posts: 3654



WWW
BOWLING for John
« Reply #7 on: January 23, 2005, 11:41:03 PM »

Mac, did you have a sex change? :Huh: Blitz was talking to Meg, not you:
Quote from: "Meg"
With your permission, I'd like to print out this code, pick through it line by line on paper, and rewrite the entire thing in a much more efficient, easy-to-read manner. Then I'll post it back here, complete with documentation, to give you an idea of how good coding practices can make writing programs a ***LOT*** easier, time-efficient, and simple to debug.

Quote from: "Blitz"
Heeh, meg you must have too much time. I wouldn't touch code like that with a stick even. Smiley

Apparently, Meg has some kind of masochistic streak in her. Hrm, interesting. Smiley
Logged

'd knock on wood, but my desk is particle board.
na_th_an
*/-\*
*****
Posts: 8238



WWW
BOWLING for John
« Reply #8 on: January 24, 2005, 08:57:54 AM »

Probably meg likes Italian Food Wink
Logged

SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
Meg
Ancient QBer
****
Posts: 483



BOWLING for John
« Reply #9 on: January 24, 2005, 01:54:15 PM »

Quote
Probably meg likes Italian Food


I don't get it.  :Huh:

edit:  ooooooh reference to spaghetti code, methinks.
Logged
Blitz
I hold this place together
*****
Posts: 853



WWW
BOWLING for John
« Reply #10 on: January 24, 2005, 02:03:13 PM »

Heehe, me neither =)
Logged

oship me and i will give you lots of guurrls and beeea
Z!re
*/-\*
*****
Posts: 4599



BOWLING for John
« Reply #11 on: January 24, 2005, 02:58:55 PM »

Quote from: "Meg"
Quote
Probably meg likes Italian Food

ooooooh reference to spaghetti code, methinks.

 :lol:

Me, gets now =)
Logged
KiZ
__/--\__
*****
Posts: 2879



WWW
BOWLING for John
« Reply #12 on: January 24, 2005, 03:01:20 PM »

Well...

Meg... Mac....

Both 3 letter names beginning with M.

And how come we havent ever seen them in the same room together.... hmm?!?

i think you are thinking what I am thinking.   .    .    .
Logged
na_th_an
*/-\*
*****
Posts: 8238



WWW
BOWLING for John
« Reply #13 on: January 24, 2005, 03:04:02 PM »

Quote from: "dark_prevail"
i think you are thinking what I am thinking.   .    .    .


Then, if you are right, we are thinking that you think that we are thinking what you are thinking...

That's an infinite loop, man.
Logged

SCUMM (the band) on Myspace!
ComputerEmuzone Games Studio
underBASIC, homegrown musicians
[img]http://www.ojodepez-fanzine.net/almacen/yoghourtslover.png[/i
adosorken
*/-\*
*****
Posts: 3654



WWW
BOWLING for John
« Reply #14 on: January 24, 2005, 03:15:12 PM »

Quote from: "dark_prevail"
And how come we havent ever seen them in the same room together.... hmm?!?

Probably because you've never really "seen" either of them. :lol:  Don't worry, I have it on very good sources that the two are different people. No need to be stirrin' up any additional conspiracy theories about gender-changing QB programmers. The last one was bad enough. Cheesy
Logged

'd knock on wood, but my desk is particle board.
Pages: [1] 2 3 4 Print 
Qbasicnews.com  |  QBasic  |  QB Projects  |  Topic: BOWLING for John « previous next »
Jump to:  


Login with username, password and session length

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC
SMF Theme © Gaia, Hosting by Employers Job Post
Valid XHTML 1.0! Valid CSS!