Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.     REM
  2.     REM --- Tiny BASIC Interpreter and Compiler Project
  3.     REM --- Mugwump Demonstration Game
  4.     REM
  5.     REM --- Released as Public Domain by Damian Gareth Walker 2019
  6.     REM --- Created: 13-Aug-2019
  7.     REM
  8.  
  9.     REM --- Variables
  10.     REM     C: axis diff between player guess and mugwump position
  11.     REM     D: distance between player guess and mugwump position
  12.     REM     G: mugwump column
  13.     REM     H: mugwump row
  14.     REM     M: moves taken
  15.     REM     R: random number generator seed
  16.     REM     X: player guess column
  17.     REM     Y: player guess row
  18.  
  19.     REM --- Initialise the random number generator
  20.     PRINT "Think of a number."
  21.     INPUT R
  22.     IF R<0 THEN LET R=0
  23.     IF R>4095 THEN LET R=4095
  24.  
  25.     REM --- Initialise the game
  26.     GOSUB 200
  27.     LET G=R-(R/10*10)
  28.     GOSUB 200
  29.     LET H=R-(R/10*10)
  30.     LET M=0
  31.  
  32.     REM --- Input player guess
  33.  10 PRINT "Where is the mugwump? Enter column then row."
  34.     INPUT X,Y
  35.     IF X>=0 THEN IF X<=9 THEN IF Y>=0 THEN IF Y<=9 THEN GOTO 20
  36.     PRINT "That location is off the grid!"
  37.     GOTO 10
  38.  
  39.     REM --- Process player guess
  40.  20 LET M=M+1
  41.     PRINT "The mugwump is..."
  42.     LET D=0
  43.     LET C=G-X
  44.     GOSUB 60
  45.     LET C=H-Y
  46.     GOSUB 60
  47.     IF D=0 THEN GOTO 40
  48.     PRINT "...",D," cells away."
  49.     IF M>10 THEN GOTO 50
  50.     PRINT "You have taken ",M," turns so far."
  51.     GOTO 10
  52.  
  53.     REM --- Player has won
  54.  40 PRINT "...RIGHT HERE!"
  55.     PRINT "You took ",M," turns to find it."
  56.     END
  57.  
  58.     REM --- Player has lost
  59.  50 PRINT "You have taken too long over this. You lose!"
  60.     END
  61.  
  62.     REM --- Helper subroutine to calculate distance from player to mugwump
  63.     REM     Inputs: C - difference in rows or columns
  64.     REM             D - running total distance
  65.     REM     Output: D - running total distance, updated
  66.  60 IF C<0 THEN LET C=-C
  67.     LET D=D+C
  68.     RETURN
  69.  
  70.     REM --- Random number generator
  71.     REM     Input:   R - current seed
  72.     REM     Outputs: R - updated seed
  73. 200 LET R=5*R+35
  74.     LET R=R-R/4096*4096
  75.     RETURN