home *** CD-ROM | disk | FTP | other *** search
-
- REM **
- REM ** ARTIFICIAL INTELLIGENCE DEMO PROGRAM
- REM **
- REM ** by CRAZY in 1990
- REM **
-
- GOSUB INIT ' INIT AND LEARN
-
- WHILE 1 ' FOR EVER AND EVER
- GOSUB INIT2 ' CREATE RANDOM SEQUENCE
- GOSUB USER ' LET USER PLAY
- GOSUB COMPUTER ' LET FRANKIE PLAY
- GOSUB GOODBYE ' LAST WORDS
- WEND
-
- END ' WILL NEVER OCCUR !
-
-
- REM ***********************************
- REM ** INITIALISE AND LEARN **
- REM ***********************************
-
- REM ARRAY N(127) IS FRANKIE'S "MEMORY"
- REM SEQ(99) HOLDS THE RANDOM SEQUENCE
-
- INIT:
-
- CLS ' CLEAR SCREEN
- LOCATE 2,21 ' PLACE CURSOR
- PRINT "PLEASE WAIT .... FRANKIE IS LEARNING !!"
- DEFINT A-Z ' NO NEED FOR FLOATS
- DIM N(127),SEQ(99) ' DEFINE ARRAYS
- TURNS=0 ' # OF TURNS
- DELTAUSER=0 ' USER'S CHOICE
- DELTAFRANKIE=0 ' FRANKIE'S CHOICE
- RANDOMIZE TIMER ' NO CHEATING !
- DEF FNRAN=(RND*127) AND &H7F ' DEFINE RANDOM FUNCTION
-
- REM LEARNING STAGE
-
- FOR RANNOW=0 TO 127 ' DO IT FOR ALL NUMBERS
- FOR I=1 TO 50 ' # OF TIMES TO "LEARN"
- RANNEXT=FNRAN ' GET A RANDOM NUMBER
- IF RANNEXT>RANNOW THEN DELTA=1:PALETTE 0,0,0,0
- IF RANNEXT<RANNOW THEN DELTA=-1:PALETTE 0,0,0,1
- IF RANNEXT=RANNOW THEN DELTA=0:PALETTE 0,1,0,0
- N(RANNOW)=N(RANNOW)+DELTA ' UPDATE "MEMORY"
- NEXT I ' DO LEARN LOOP
-
- ' LINE (192,100)-(448,100),2 ' CHEAT MODE !
- ' PSET (RANNOW*2+192,N(RANNOW)+100)
-
- NEXT RANNOW ' DO IT FOR ALL NUMBERS
-
- CLS
-
- RETURN ' RTS
-
-
- REM ************************************
- REM ** INITIALISE EACH TIME SOME VARS **
- REM ************************************
-
- INIT2:
-
- SCOREUSER=0 ' RESET SCORE EACH TIME
- SCOREFRANKIE=0 ' SAME AS ABOVE
-
- FOR I=0 TO 99 ' SIZE OF SEQUENCE OF NOS
- SEQ(I)=FNRAN ' GET A NEW RANDOM NUM
- NEXT I ' DO FOR ALL SEQUENCE
-
- PALETTE 0,0,0,0 ' BACK IN BLACK
-
- RETURN ' EQUIVALENT OF RTS
-
-
- REM ***********************************
- REM ** SEE USER PLAY **
- REM ***********************************
-
- USER:
-
- WHILE (TURNS<1) OR (TURNS>100)
- INPUT "HOW MANY TURNS ? (MAX 100) ",TURNS
- WEND ' CHECK FOR LAME INPUT
- PRINT:PRINT ' MAKE SOME SPACE
- RANNOW=SEQ(0) ' GET FIRST NUMBER IN SEQUENCE
-
- FOR I=1 TO TURNS ' REPEAT FOR ALL TURNS
- PRINT "THIS NUMBER IS";RANNOW
- INPUT "NEXT NUMBER WILL BE [H]IGHER OR [L]OWER ? ",N$
- IF N$="H" OR N$="h" THEN DELTAUSER=1 ELSE DELTAUSER=-1
- RANNEXT=SEQ(I) ' GET NEXT NUMBER IN RANDOM SEQ
- IF RANNEXT>RANNOW THEN DELTA=1
- IF RANNEXT<RANNOW THEN DELTA=-1
- IF RANNEXT=RANNOW THEN DELTA=0
- PRINT "NEXT NUMBER WAS";RANNEXT
- IF DELTA=DELTAUSER THEN SCOREUSER=SCOREUSER+1:PRINT "Good" ELSE PRINT "Oops"
- RANNOW=RANNEXT ' GET NEXT NUMBER IN SEQUENCE
- PRINT ' MAKE SOME SPACE
- NEXT I ' FOR ALL TURNS
-
- FINALUSER=INT((SCOREUSER/TURNS)*100)
- PRINT "YOUR SCORE IS ";FINALUSER;"%"
-
- RETURN ' RTS
-
-
- REM ***********************************
- REM ** SEE FRANKIE PLAY **
- REM ***********************************
-
- COMPUTER:
-
- PRINT :PRINT :PRINT "NOW IT'S MY TURN"
-
- PRINT "NUMBER OF TURNS =";TURNS
- RANNOW=SEQ(0) ' GET FIRST NUMBER
-
- FOR I=1 TO TURNS ' FOR ALL TURNS
- PRINT "THIS NUMBER IS";RANNOW
- PRINT "NEXT NUMBER WILL BE ";
- IF N(RANNOW)<1 THEN DELTAFRANKIE=-1:PRINT "LOWER" ELSE DELTAFRANKIE=1:PRINT "HIGHER"
- RANNEXT=SEQ(I) ' CHECK WOT NEXT NUM WOZ
- IF RANNEXT>RANNOW THEN DELTA=1
- IF RANNEXT<RANNOW THEN DELTA=-1
- IF RANNEXT=RANNOW THEN DELTA=0
- PRINT "NEXT NUMBER WAS";RANNEXT
- IF DELTA=DELTAFRANKIE THEN SCOREFRANKIE=SCOREFRANKIE+1:PRINT "Wow" ELSE PRINT "Sorry"
- RANNOW=RANNEXT ' GET NEXT NUMBER IN SEQ
- PRINT ' MAKE SOME SPACE
- NEXT I ' DO ALL TURNS
-
- FINALFRANKIE=INT((SCOREFRANKIE/TURNS)*100)
- PRINT "MY SCORE IS ";FINALFRANKIE;"%"
-
- RETURN
-
-
- REM ***********************************
- REM ** THAT'S ALL FOLKZ **
- REM ***********************************
-
- GOODBYE:
-
- PRINT "YOUR SCORE IS ";FINALUSER;"%"
-
- IF FINALFRANKIE=FINALUSER THEN PRINT "We draw !"
- IF FINALFRANKIE>FINALUSER THEN PRINT "I WIN ... horray"
- IF FINALFRANKIE<FINALUSER THEN PRINT "You win ... oops"
- PRINT :PRINT
-
- RETURN
-