!*! Updated on 10-May-90 at 9:00 AM by Matt Badger; edit time: 0:01:34
!USES LINE DRAWING - WRITTEN FOR THE WYSE50 TERMINAL
       MAP1 DIE1,F
       MAP1 DIE2,F
       MAP1 DIE3,F
       MAP1 DIE4,F
       MAP1 DIE5,F
       MAP1 COUNT,F
       MAP1 ANSWR,F
       MAP1 GUESS,S,2
       MAP1 NIAGA,S,1
       MAP1 RIGHT'ONE,F
       MAP1 LAST'RIGHT,F
       MAP1 MESSAGE,S,35
       MAP1 END'MESSAGE,S,35,"                                  "
       MAP1 INXCTL,F
       MAP1 END'TIME,F,6,0

       MAP1 ALL'DICE
               MAP2 D1(9),S,1
               MAP2 D2(9),S,1
               MAP2 D3(9),S,1
               MAP2 D4(9),S,1
               MAP2 D5(9),S,1
       SIGNIFICANCE 11

BEGIN:
       RIGHT'ONE=0
       LAST'RIGHT=0
       ANSWR=0
       GOSUB DRAW'IT

MAIN'LINE:
       GOSUB RAND
       GOSUB FIGURE'IT
       GOSUB DISPLAY'IT
!       GOSUB PRINT'IT
       GOSUB ASK'IT
       GOTO MAIN'LINE
       END


RAND:
       RANDOMIZE
       DIE1=INT(6*RND(1)+1)
       DIE2=INT(6*RND(1)+1)
       DIE3=INT(6*RND(1)+1)
       DIE4=INT(6*RND(1)+1)
       DIE5=INT(6*RND(1)+1)
       RETURN

FIGURE'IT:
       ALL'DICE=SPACE(45)
       COUNT=0
       IF DIE1 = 1 THEN D1(5)="*"
       IF DIE1 = 2 THEN D1(1)="*":D1(9)="*"
       IF DIE1 = 3 THEN D1(1)="*":D1(5)="*":D1(9)="*":COUNT=COUNT+2
       IF DIE1 = 4 THEN D1(1)="*":D1(3)="*":D1(7)="*":D1(9)="*"
       IF DIE1 = 5 THEN D1(1)="*":D1(3)="*":D1(7)="*":D1(9)="*":D1(5)="*":COUNT=COUNT+4
       IF DIE1 = 6 THEN D1(1)="*":D1(2)="*":D1(3)="*":D1(7)="*":D1(8)="*":D1(9)="*"

       IF DIE2 = 1 THEN D2(5)="*"
       IF DIE2 = 2 THEN D2(1)="*":D2(9)="*"
       IF DIE2 = 3 THEN D2(1)="*":D2(5)="*":D2(9)="*":COUNT=COUNT+2
       IF DIE2 = 4 THEN D2(1)="*":D2(3)="*":D2(7)="*":D2(9)="*"
       IF DIE2 = 5 THEN D2(1)="*":D2(3)="*":D2(7)="*":D2(9)="*":D2(5)="*":COUNT=COUNT+4
       IF DIE2 = 6 THEN D2(1)="*":D2(2)="*":D2(3)="*":D2(7)="*":D2(8)="*":D2(9)="*"

       IF DIE3 = 1 THEN D3(5)="*"
       IF DIE3 = 2 THEN D3(1)="*":D3(9)="*"
       IF DIE3 = 3 THEN D3(1)="*":D3(5)="*":D3(9)="*":COUNT=COUNT+2
       IF DIE3 = 4 THEN D3(1)="*":D3(3)="*":D3(7)="*":D3(9)="*"
       IF DIE3 = 5 THEN D3(1)="*":D3(3)="*":D3(7)="*":D3(9)="*":D3(5)="*":COUNT=COUNT+4
       IF DIE3 = 6 THEN D3(1)="*":D3(2)="*":D3(3)="*":D3(7)="*":D3(8)="*":D3(9)="*"

       IF DIE4 = 1 THEN D4(5)="*"
       IF DIE4 = 2 THEN D4(1)="*":D4(9)="*"
       IF DIE4 = 3 THEN D4(1)="*":D4(5)="*":D4(9)="*":COUNT=COUNT+2
       IF DIE4 = 4 THEN D4(1)="*":D4(3)="*":D4(7)="*":D4(9)="*"
       IF DIE4 = 5 THEN D4(1)="*":D4(3)="*":D4(7)="*":D4(9)="*":D4(5)="*":COUNT=COUNT+4
       IF DIE4 = 6 THEN D4(1)="*":D4(2)="*":D4(3)="*":D4(7)="*":D4(8)="*":D4(9)="*"

       IF DIE5 = 1 THEN D5(5)="*"
       IF DIE5 = 2 THEN D5(1)="*":D5(9)="*"
       IF DIE5 = 3 THEN D5(1)="*":D5(5)="*":D5(9)="*":COUNT=COUNT+2
       IF DIE5 = 4 THEN D5(1)="*":D5(3)="*":D5(7)="*":D5(9)="*"
       IF DIE5 = 5 THEN D5(1)="*":D5(3)="*":D5(7)="*":D5(9)="*":D5(5)="*":COUNT=COUNT+4
       IF DIE5 = 6 THEN D5(1)="*":D5(2)="*":D5(3)="*":D5(7)="*":D5(8)="*":D5(9)="*"

       RETURN


DISPLAY'IT:
       PRINT TAB(4,5);D1(1);TAB(4,9);D1(2);TAB(4,13);D1(3);
       PRINT TAB(6,5);D1(4);TAB(6,9);D1(5);TAB(6,13);D1(6);
       PRINT TAB(8,5);D1(7);TAB(8,9);D1(8);TAB(8,13);D1(9);

       PRINT TAB(4,18);D2(1);TAB(4,22);D2(2);TAB(4,26);D2(3);
       PRINT TAB(6,18);D2(4);TAB(6,22);D2(5);TAB(6,26);D2(6);
       PRINT TAB(8,18);D2(7);TAB(8,22);D2(8);TAB(8,26);D2(9);

       PRINT TAB(4,31);D3(1);TAB(4,35);D3(2);TAB(4,39);D3(3);
       PRINT TAB(6,31);D3(4);TAB(6,35);D3(5);TAB(6,39);D3(6);
       PRINT TAB(8,31);D3(7);TAB(8,35);D3(8);TAB(8,39);D3(9);

       PRINT TAB(4,44);D4(1);TAB(4,48);D4(2);TAB(4,52);D4(3);
       PRINT TAB(6,44);D4(4);TAB(6,48);D4(5);TAB(6,52);D4(6);
       PRINT TAB(8,44);D4(7);TAB(8,48);D4(8);TAB(8,52);D4(9);

       PRINT TAB(4,57);D5(1);TAB(4,61);D5(2);TAB(4,65);D5(3);
       PRINT TAB(6,57);D5(4);TAB(6,61);D5(5);TAB(6,65);D5(6);
       PRINT TAB(8,57);D5(7);TAB(8,61);D5(8);TAB(8,65);D5(9);

       PRINT TAB(10,1);TAB(-1,9);
       PRINT TAB(11,1);TAB(-1,9);
       PRINT TAB(12,1);TAB(-1,9);
       PRINT TAB(13,1);TAB(-1,9);
       PRINT TAB(14,1);TAB(-1,9);
       PRINT TAB(15,1);TAB(-1,9);
       PRINT TAB(16,1);TAB(-1,9);
       PRINT TAB(17,1);TAB(-1,9);
       RETURN



DRAW'IT:
       PRINT TAB(-1,0);
       PRINT TAB(-1,23);
       PRINT TAB(3,3);TAB(-1,38);
       FOR I = 4 TO 14
               PRINT TAB(3,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,39);
       FOR I = 4 TO 8
               PRINT TAB(I,3);TAB(-1,47);TAB(I,15);TAB(-1,47);
       NEXT I
       PRINT TAB(9,3);TAB(-1,40);
       FOR I = 4 TO 14
               PRINT TAB(9,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,41);

       PRINT TAB(3,16);TAB(-1,38);
       FOR I = 17 TO 27
               PRINT TAB(3,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,39);
       FOR I = 4 TO 8
               PRINT TAB(I,16);TAB(-1,47);TAB(I,28);TAB(-1,47);
       NEXT I
       PRINT TAB(9,16);TAB(-1,40);
       FOR I = 17 TO 27
               PRINT TAB(9,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,41);

       PRINT TAB(3,29);TAB(-1,38);
       FOR I = 30 TO 40
               PRINT TAB(3,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,39);
       FOR I = 4 TO 8
               PRINT TAB(I,29);TAB(-1,47);TAB(I,41);TAB(-1,47);
       NEXT I
       PRINT TAB(9,29);TAB(-1,40);
       FOR I = 30 TO 40
               PRINT TAB(9,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,41);

       PRINT TAB(3,42);TAB(-1,38);
       FOR I = 43 TO 53
               PRINT TAB(3,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,39);
       FOR I = 4 TO 8
               PRINT TAB(I,42);TAB(-1,47);TAB(I,54);TAB(-1,47);
       NEXT I
       PRINT TAB(9,42);TAB(-1,40);
       FOR I = 43 TO 53
               PRINT TAB(9,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,41);

       PRINT TAB(3,55);TAB(-1,38);
       FOR I = 56 TO 66
               PRINT TAB(3,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,39);
       FOR I = 4 TO 8
               PRINT TAB(I,55);TAB(-1,47);TAB(I,67);TAB(-1,47);
       NEXT I
       PRINT TAB(9,55);TAB(-1,40);
       FOR I = 56 TO 66
               PRINT TAB(9,I);TAB(-1,46);
       NEXT I
       PRINT TAB(-1,41);

       PRINT TAB(-1,24);

       PRINT TAB(18,10);"At each roll of the dice there will be a number associated";
       PRINT TAB(19,10);"with that roll. Can you guess the number ? If you can get it";
       PRINT TAB(20,10);"right three times in a row, you win ! Your only clue is the";
       PRINT TAB(21,10);"name of the game, 'Petals Around The Rose'.";

       RETURN
ASK'IT:
       PRINT TAB(12,20);"Do you have an answer ?";
       XCALL INPUT,12,44,2,1,"#E",GUESS,INXCTL,1
       IF GUESS="EN" GOTO ENDIT
       IF ABS(GUESS)=ABS(COUNT) GOTO GOT'ONE
       LAST'RIGHT=0
       PRINT TAB(14,20);"Sorry, that is incorrect. The answer is ";COUNT;
       PRINT TAB(15,20);"Try again ?";
       XCALL INPUT,15,32,1,1,"NY",NIAGA,INXCTL,1
       IF NIAGA = "N" OR UCS(NIAGA) = "N" GOTO ENDIT
       RETURN


GOT'ONE:
       PRINT CHR$(7);
       IF LAST'RIGHT=1 THEN RIGHT'ONE=RIGHT'ONE+1
       IF LAST'RIGHT=0 THEN LAST'RIGHT=1:RIGHT'ONE=1
       MESSAGE=SPACE
       IF RIGHT'ONE = "1" THEN MESSAGE="Was it luck or skill ?"
       IF RIGHT'ONE = "2" THEN MESSAGE="Two right - one more and you win !"
       IF RIGHT'ONE = "3" GOTO WON'GAME
       PRINT TAB(14,20);"You got it right ! ";MESSAGE;
       PRINT TAB(16,20);"Try again ?";
       XCALL INPUT,16,32,1,1,"NY",NIAGA,INXCTL,1
       IF NIAGA = "N" OR UCS(NIAGA) = "N" GOTO ENDIT
       RETURN





PRINT'IT:
       PRINT TAB(10,10);DIE1;" ";DIE2;" ";DIE3;" ";DIE4;" ";DIE5;
       PRINT TAB(11,10);COUNT;
       PRINT TAB(22,1);
       RETURN

WON'GAME:
       END'MESSAGE = "YOU WON - NOW TRY SOMETHING ELSE...."
       END'TIME=75

ENDIT:
       PRINT TAB(-1,0);
       PRINT TAB(12,10);END'MESSAGE;
       FOR I = 1 TO END'TIME
               PRINT TAB(23,1);"                                        ";
       NEXT I
       PRINT TAB(23,1);
       END