' ****** START INCLUDE Blitkrieg Stratagem Icons ******
BigGun:
  DATA "BIG GUNS"
  DATA "...............................................................X"
  DATA "....................X......XXX....XXX....XXXX...XXXX....XXX....."
  DATA "......XX.....XXX......XX.....XXX.....XXX.XXXXXXX................"
  DATA "XX......X.XXX....XXXXX...XXXXX...XXXXX..X.XXX..................."
CounterAttack:
  DATA "COUNTERATTACK"
  DATA ".......................X.......X.....X.X....XX.X...XXX.X..XXXX.X"
  DATA "........................X.......XX......XXX.....XXXX....XXXXX..."
  DATA ".XXXXX.X..XXXX.X...XXX.X....XX.X.....X.X.......X.......X........"
  DATA "XXXXXX..XXXXX...XXXX....XXX.....XX......X......................."
EconomicWarfare:
  DATA "ECONOMIC WARFARE"
  DATA "..............XX.........XX.XX.....XX......XX......XX..X...XX..."
  DATA ".........XX.....XX......XX......XX......XX.X....XX..X...X...X..."
  DATA "..XXX......X...X......XX.....XXX.....X.X....XXXX....XXXX........"
  DATA "....X.....X.X....XX.X...XXXXXX..X.XX.X..XXXXXX..XXXXXX.........."
ForTheGlory:
  DATA "FOR THE GLORY"
  DATA "......................XX...XXXXX...XXXXX...XXXXX...XXXXX...XXXXX"
  DATA "................XX......XXXXX...XXXXX...XXXXX...XXXXX...XXXXX..."
  DATA "...XXXXX....XXXX....XXXX.....XXX......XX.......X................"
  DATA "XXXXX...XXXX....XXXX....XXX.....XX......X......................."
RapidDeployment:
  DATA "RAPID DEPLOYMENT"
  DATA ".............XXX......XX......X.......X.......X.......X.......X."
  DATA "........XXXXX...XXXXXX..XXXXX.X..XXX..X...X...X..X.X..X.X...X.X."
  DATA ".............XX....XXXX.....XXX....X.X....X.X......X............"
  DATA ".....XX.XXXXXXX.......X........................................."
ResearchAndDevelopment:
  DATA "RESEARCH & DEVELOPMENT"
  DATA ".........X.XXXX...XXXXXX.XXX..XX.XX....X.XX....X.XXX..XX..XXXXXX"
  DATA "........X...............X.......X.......X.......X..............."
  DATA ".X.XXXX...........X...X....XXX.....X.X.....XXX....X...X........."
  DATA "X.XXX.X..XXXXX..XX...XX.XX...XX.XX...XX..XXXXX..X.XXX.X........."
Secure:
  DATA "SECURE"
  DATA ".........X...XXX..X.X......X......X.X.XX.X...X...X..X.X..X..X..X"
  DATA "........XXX...X....X.X......X...XX.X.X....X...X..X.X..X.X..X..X."
  DATA ".X..X..X.X..X.X..X...X....X.X.XX...X......X.X....X...XXX........"
  DATA "X..X..X..X.X..X...X...X.XX.X.X......X......X.X..XXX...X........."
SteamRoll:
  DATA "STEAMROLL"
  DATA "......X.......XX......XX...XXXXX..XXXXXX.XXXXXXX.XXXX.XX.XXX..XX"
  DATA "................X.......XX......XXX.....XX......X...XXX.....XXX."
  DATA ".XXX..X..XXX.....XXXX....XXXXXXX..XXXXXX...XXXXX................"
  DATA "....XXX.....XXX....XXXX.XXXXXXX.XXXXXX..XXXXX..................."
'  ****** END INCLUDE Blitkrieg Stratagem Icons ******

' Program by Charlie Veniot
' for solo players of Paulo Mori's
' Blitzkrieg! World War Two In 20 Minutes
'
' This program randomly chooses a strategem
' for the A.I. Bot player's next turn.
'
' Each turn, the Bot will use a random
' 1 out of 8 available stratagems.  However:
' On the Bot's turn, the last stratagem used
' is not available for the current turn.
' i.e. a specific stratagem cannot be used in
' back-to-back turns. UNLESS this turn's
' stratagem = 8 (Repeat Last Stratagem)
'
' For the A.I. Bot's first turn, stratagem "8"
' (Steamroll = repeat last stratagem)
' is not available

_TITLE "BSC"

' 🟠🟠🟠 Declarations

CONST stratagem$(1 TO 8) = {"BigGun","CounterAttack","EconomicWarfare", "ForTheGlory", _
                            "RapidDeployment","ResearchAndDevelopment","Secure","SteamRoll"}
DIM stratagemCount%( 1 TO 8 )
VAR allStratagems$ = "12345678"
    lastStratagem$ = "8"
    remainingStratagems$ = REPLACE$( allStratagems$, lastStratagem$, "" )
    playedStratagems$ = ""
    nTurnCount% = 0

DECLARE SUB PrintStratagem( id%, row%, col%, tfTitle%, tfEnabled% )

' 🟠🟠🟠 Main program

GOSUB A100_💦ShowSplashScreen1
GOSUB A200_💦ShowSplashScreen2
SCREEN _NEWIMAGE(252,240,14)

🏁🏁🏁LoopStart🏁🏁🏁:
    PRINT
    newStratagem$ = MID$( remainingStratagems$, INT( RND * 7 ) + 1, 1 )
    COLOR 7
    PRINT " Last Turn: Played Stratagem " + lastStratagem$ : PRINT
    CALL PrintStratagem( [lastStratagem$], CSRLIN, 6, TRUE, FALSE )
    PRINT : PRINT
    PRINT " This Turn: Drew Stratagem " + newStratagem$ : PRINT
    CALL PrintStratagem( [newStratagem$], CSRLIN, 6, TRUE, FALSE )
    PRINT : PRINT : PRINT
    COLOR 63
    PRINT " This Turn: " + IFF( newStratagem$ = "8", "REPLAY Stratagem " + lastStratagem$, "Play Stratagem " + newStratagem$ )
    LET stratagemCount%(newStratagem$) = stratagemCount%(newStratagem$) + 1
        nTurnCount% = nTurnCount% + 1
        playedStratagems$ = playedStratagems$ + RIGHT$( "   " + STR$( nTurnCount% ), 4) + "  " + stratagem$( newStratagem$ )
    IF newStratagem$ = "8" _
       THEN LET stratagemCount%(lastStratagem$) = stratagemCount%(lastStratagem$) + 1 _
                playedStratagems$ = playedStratagems$ + " (" + stratagem$( lastStratagem$ ) + ")"
    LET playedStratagems$ = playedStratagems$ + "\n"
    PRINT
    CALL PrintStratagem( IFF( newStratagem$ = "8", lastStratagem$, newStratagem$ ), CSRLIN, 6, TRUE, TRUE )
    PRINT : PRINT : PRINT
    LINE (0,87) TO (XMAX,136), ,B : LINE (2,89) TO (XMAX-2,134), ,B
    LET remainingStratagems$ = REPLACE$( allStratagems$, newStratagem$, "" )
    COLOR 7
    PRINT " Available Next Turn: " + remainingStratagems$ : PRINT
    LET row% = CSRLIN : col% = 6
    FOR i% = 1 TO 8
        LET thisStrategem$ = MID$(allStratagems$,i%,1)
        COLOR IFF( INSTR( remainingStratagems$, thisStrategem$ ) = 0, 7, 63)
        CALL PrintStratagem( [thisStrategem$], [row%], [col%], FALSE, FALSE )
        COLOR 7
        LOCATE row% + 2, col% : PRINT RIGHT$(" " + stratagemCount%(i%),2);
        LET col% = col% + 3
    NEXT i%
    COLOR 7
    LOCATE row% + 2, 1
    PRINT " Cnt:"; : PRINT : PRINT
    PRINT " Click/Touch:" : PRINT
    COLOR 54
    LOCATE CSRLIN, 4 : PRINT "   NEXT         COPY"
    PRINT "     AI Bot     Turn Stats"
    PRINT "      turn     to Clipboard";
    LINE (20,205) TO (106,235), ,B : LINE (116,205) TO (219,235), ,B
    LET lastStratagem$ = newStratagem$

    ⏲WaitForUserInput:
      SLEEP 0.01
      IF _MOUSEBUTTON THEN
         LET nowMouseX% = _MOUSEX : nowMouseY% = _MOUSEY
         WHILE _MOUSEBUTTON : WEND
         IF BETWEEN( nowMouseX%, 20, 106 ) AND BETWEEN( nowMouseY%, 205, 235 ) THEN CLS : GOTO 🏁🏁🏁LoopStart🏁🏁🏁
         IF BETWEEN( nowMouseX%, 116, 219 ) AND BETWEEN( nowMouseY%, 205, 235 ) THEN GOSUB C100_📋CopyStatsToClipboard
      END IF
    GOTO ⏲WaitForUserInput

END 

' 🟠🟠🟠 SUB and GOSUB Routines

SUB PrintStratagem( id%, row%, col%, tfTitle%, tfEnabled% )
    DIM holdBg% = _BACKGROUND
    DIM t$, d1$, d2$, d3$, d4$
    
    RESTORE (stratagem$(id%))
    READ t$, d1$, d2$, d3$, d4$
    LETCHR$(1, d1$) : LETCHR$(2, d2$) : LETCHR$(3, d3$) : LETCHR$(4, d4$)
    COLOR , IFF( tfEnabled%, 60, 56 )
    LOCATE row%, col% : PRINT CHR$(1) + CHR$(2);
    LOCATE row% + 1, col% : PRINT CHR$(3) + CHR$(4);
    COLOR , holdBg% : IF tfTitle% THEN LOCATE row% + 1, col% + 3 : PRINT t$;
END SUB

A100_💦ShowSplashScreen1:
    SCREEN _NEWIMAGE(392,176,14)
    PRINT
    PRINT REPLACE$(" -−-−-−-−-Blitzkrieg Stratagem Chooser", "-", " ")
    PRINT REPLACE$(" -−-−-−-−-−-−-−-by Charlie Veniot", "-", " ") : PRINT
    PRINT REPLACE$(" -−-−-−-A helper program for solo play of", "-", " ")
    PRINT REPLACE$(" -−-−Blitzkrieg! World War Two in 20 Minutes", "-", " ")
    LINE (2,2) TO (XMAX,56), ,B : LINE (5,4) TO (XMAX-2,54), ,B
    PRINT : PRINT : PRINT
    PRINT " This program will randomly choose a stratagem"
    PRINT " from the available pool of stratagems, for the"
    PRINT " A.I. Bot's next turn." : PRINT 
    PRINT " A stratagem is selected immediately when this
    PRINT " program starts.  Click/touch the screen to "
    PRINT " generate the stratagem for the A.I. Bot's next"
    PRINT " turn." : PRINT
    PRINT " The program keeps a count of chosen stratagems." : PRINT
    COLOR 62
    PRINT "       Click/Touch the screen to continue."
    SLEEP
RETURN

A200_💦ShowSplashScreen2:
    SCREEN _NEWIMAGE(376,144,14)
    COLOR 63 : PRINT
    PRINT "                About the game" : PRINT
    PRINT " BLITKRIEG!"
    PRINT " World War Two in 20 Minutes" : PRINT
    PRINT " Designer: Paolo Mori" : PRINT
    PRINT " Solo Designers: Nick Shaw, David Turczi" : PRINT
    PRINT " Artists: Alan D'Amico, Paolo Mori, Paul Sizer" : PRINT
    PRINT " Publishers: PSC Games, Banana Games,"
    PRINT "             Giochix.it, Maldito Games,"
    PRINT "             Matagot, Schwerkraft-Verlag" : PRINT
    COLOR 62 : PRINT " Click/Touch the screen to start the program."
    SLEEP
RETURN

C100_📋CopyStatsToClipboard:
    LET temp$ = ""
    FOR i% = 1 TO 8
        LET temp$ = temp$ + "\n    " + stratagem$(i%) + ": " + stratagemCount%(i%)
    NEXT i%
    SetClipboardText( "Statistics:" + temp$ + "\n\n" _
                    + "Turn  Stratagem" + "\n" _
                    + "-−-−  -−-−-−-−-" + "\n" _
                    + playedStratagems$ )
    ALERT("Game Stats Copied to Clipboard")
RETURN