Mac Professional Member
Joined: 08 Jul 2000 Posts: 1585 Location: Oklahoma USA
|
Posted: Tue Dec 23, 2003 9:40 pm Post subject: GAMES: Checkers/Blackjack/Anti-aircraft |
|
|
Here's some games I wrote a while back (Checkers/Blackjack/Anti-aircraft)
that are incomplete in the archives (mods please leave the "code" tags):
____________________________________________________________________________________________________________________
CHECKERS
Code: |
rem -- Uses @chr(227) for checkers, @chr(196) for kings --
rem -- Look for a sound file under 50k in size --
LIST CREATE, 1
LIST FILELIST, 1, @windir()\media\*.wav
if @greater(@count(1), 0)
REPEAT
if @greater(50000, @file(@item(1, %x), Z))
%%wavfile = @item(1, %x)
end
%x = @succ(%x)
UNTIL %%wavfile @equal(%x, @count(1))
end
LIST CLOSE, 1
OPTION SCALE, 96
OPTION DECIMALSEP, "."
TITLE By Mac
rem -- Don't show main, it's use is to create/recreate child dialog --
DIALOG CREATE,"Main Checker Dialog",0,0,0,0
rem -- Holds possible moves for a single piece --
LIST CREATE, 8
rem -- Holds all possible moves for all computer pieces --
LIST CREATE, 7
:Start/Restart
DIALOG CREATE,Checkers By Mac,-1,0,500,400
DIALOG ADD,STYLE,Style1,,,,YELLOW
DIALOG ADD,STYLE,Style2,Symbol,36,BC,,CYAN
DIALOG ADD,STYLE,Style3,Arial,12,B,,LTBLUE
DIALOG ADD,STYLE,Style4,MS Sans Serif,8,B
DIALOG ADD,STYLE,Empty1,Symbol,28,BC,BROWN,LTGREEN
DIALOG ADD,STYLE,Empty,Symbol,28,BC,BROWN,BROWN
DIALOG ADD,STYLE,Red,Symbol,28,B,BROWN,RED
DIALOG ADD,STYLE,Black,Symbol,28,B,BROWN,BLACK
DIALOG ADD,TEXT,GameInfo,5,405,,,"Your Turn...",Style3
DIALOG ADD,BUTTON,NewGame,30,405,90,20,"New Game",Style4
DIALOG ADD,TEXT,Instructions,60,405,90,160,"Click red checker to activate it (3 dots), then click a destination square (you can multiple jump). Clicking it again deactivates it so the computer can play. It has very basic AI, so don't cheat!"
DIALOG ADD,TEXT,Board,0,0,400,400,,Style1
rem -- Squares numbers, their XY, who's piece/type if occupied --
rem -- BC = black checker, RC = red checker, NO = No checker --
rem -- BK = black king, RK = red king --
%x = 50
%y = 0
%n = 1
REPEAT
if @greater(10, %n)
%n = 0%n
end
rem -- Background squares to see where checker moved from --
DIALOG ADD,TEXT,B%n,%y,%x,50,50,"*",Empty1
rem -- Black checkers --
if @greater(13, %n)
DIALOG ADD,TEXT,S%n,%y,%x,50,50," "@chr(227)" "|%n|%x|%y|BC,Black,CLICK
end
rem -- Blank Squares --
if @both(@greater(%n, 12), @greater(21, %n))
DIALOG ADD,TEXT,S%n,%y,%x,50,50,|%n|%x|%y|NO,Empty,CLICK
end
rem -- Red checkers --
if @greater(%n, 20)
DIALOG ADD,TEXT,S%n,%y,%x,50,50," "@chr(227)" "|%n|%x|%y|RC,Red,CLICK
end
%n = @succ(%n)
%x = @sum(%x, 100)
if @greater(%x, 350)
%y = @sum(%y, 50)
%x = 0
if @equal(%y, 100)@equal(%y, 200)@equal(%y, 300)
%x = 50
end
end
UNTIL @greater(%n, 32)
rem -- Dots to highlight player active piece --
DIALOG ADD,TEXT,HL,0,0,50,50,@chr(188),TRANSPARENT,Style2,CLICK
DIALOG HIDE,HL
DIALOG SHOW
rem -- Total checkers --
%%playernum = 12
%%compnum = 12
rem -- Active player checker --
%%checker = ""
if %%wavfile
PLAY %%wavfile
end
:EVLOOP
rem -- Let everything catch up --
WAIT .2
WAIT EVENT
%e = @event()
if @equal(@substr(%e, 1), "S")
goto ClickSquare
end
goto %e
:NewGameBUTTON
if @ask(Abandon this game?@tab())
DIALOG SELECT, 1
DIALOG CLOSE
goto Start/Restart
end
goto EVLOOP
:HLCLICK
%%checker = ""
DIALOG HIDE, HL
if %%playermoved
goto ComputerPlay
end
goto EVLOOP
:ClickSquare
%%square = @substr(%e, 1, 3)
PARSE ";%%SQnum;%%SQx;%%SQy;%%SQstatus", @dlgtext(%%square)
rem -- If red piece --
if @equal(%%SQstatus, RC)@equal(%%SQstatus, RK)
%%checker = %%square
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(%%checker)
DIALOG SHOW, HL
DIALOG SETPOS, HL, %%startSQy, %%startSQx
end
rem -- If empty square --
if @equal(%%SQstatus, NO)
if %%checker
GOSUB CheckBoard
if @greater(@count(8), 0)
LIST SEEK, 8, 0
if @match(8, %%square)
GOSUB MovePiece
%%playermoved = 1
else
INFO You cannot move there!@tab()
end
else
INFO You cannot move there!@tab()
end
end
end
goto EVLOOP
:ComputerPlay
DIALOG SET, GameInfo, "Thinking..."
WAIT
LIST CLEAR, 7
rem -- Check all computer pieces for possible moves --
%x = 1
REPEAT
if @greater(10, %x)
%x = 0%x
end
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(S%x)
if @equal(%%caller, "BC")@equal(%%caller, "BK")
GOSUB CheckBoard
end
%x = @succ(%x)
UNTIL @greater(%x, 32)
rem -- Check jumps or multiple jumps --
if @greater(@count(7), 0)
%j = ""
:CheckJumps
%%OK = ""
if @greater(@count(7), 0)
LIST ASSIGN, 8, 7
LIST SEEK, 8, 0
%x = 0
REPEAT
if @greater(@pos("JUMP", @item(8,%x)), 0)
%%OK = 1
%j = 1
%%randompick = @item(8, %x)
PARSE "%%square;%%start", %%randompick
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(%%start)
rem -- Kill multiple jumps if this jump makes a king --
if @both(@equal(%%caller, BC), @greater(@substr(%%square, 2, 3), 28))
%%OK = ""
end
GOSUB MovePiece
LIST CLEAR, 7
GOSUB CheckBoard
%x = @pred(@count(8))
end
%x = @succ(%x)
UNTIL @equal(%x, @count(8))
end
if %%OK
goto CheckJumps
end
if %j
goto ComputerPlayEnd
end
rem -- If can't jump, try to make a king --
%x = 0
%k = ""
REPEAT
PARSE "%a" , @item(8, %x)
if @equal(%a, S29)@equal(%a, S30)@equal(%a, S31)@equal(%a, S32)
%%randompick = @item(8, %x)
PARSE "%%square;%%start", %%randompick
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(%%start)
if @equal(%%caller, "BC")
GOSUB MovePiece
%x = @pred(@count(8))
%k = 1
end
end
%x = @succ(%x)
UNTIL @equal(%x, @count(8))
if %k
goto ComputerPlayEnd
end
rem -- Just pick a random move --
%x = 0
REPEAT
%%randompick = @item(8, %x)
%r = @datetime()
rem -- get last digit (use as random number)
%r = @substr(%r, @len(%r))
%x = @succ(%x)
if @equal(%x, @count(8))
%x = 0
end
UNTIL @equal(%r, 5)
PARSE "%%square;%%start", %%randompick
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(%%start)
GOSUB MovePiece
end
:ComputerPlayEnd
if %%wavfile
PLAY %%wavfile
end
DIALOG SET, GameInfo, "Your Turn..."
%%playermoved = ""
goto EVLOOP
:CLOSE
EXIT
STOP
rem ------------ GOSUB ROUTINES ------------
:CheckBoard
rem -- Add all possible legal moves to LIST 8 --
rem -- Uses %%caller, %%startSQ, %%startSQx, %%startSQy --
LIST CLEAR, 8
if @equal(%%caller,"BC")
goto CheckBoardDown
end
:CheckBoardUp
rem -- Up left --
if @both(@greater(%%startSQ, 4), @greater(%%startSQx, 0))
%%dir = L
if @equal(@mod(%%startSQy, 100), 0)
%%up1 = 4
%%up2 = 5
else
%%up1 = 5
%%up2 = 4
end
GOSUB CheckUp
end
rem -- Up right --
if @both(@greater(%%startSQ, 4), @greater(350, %%startSQx))
%%dir = R
if @equal(@mod(%%startSQy, 100), 0)
%%up1 = 3
%%up2 = 4
else
%%up1 = 4
%%up2 = 3
end
GOSUB CheckUp
end
if @equal(%%caller,"RC")
goto CheckBoardEnd
end
:CheckBoardDown
rem -- Down left --
if @both(@greater(29, %%startSQ), @greater(%%startSQx, 0))
%%dir = L
if @equal(@mod(%%startSQy, 100), 0)
%%dn1 = 4
%%dn2 = 3
else
%%dn1 = 3
%%dn2 = 4
end
GOSUB CheckDown
end
rem -- Down right --
if @both(@greater(29, %%startSQ), @greater(350, %%startSQx))
%%dir = R
if @equal(@mod(%%startSQy, 100), 0)
%%dn1 = 5
%%dn2 = 4
else
%%dn1 = 4
%%dn2 = 5
end
GOSUB CheckDown
end
:CheckBoardEnd
exit
:CheckUp
%z = @diff(%%startSQ, %%up1)
GOSUB FormatZ
PARSE ";%%tmp;;;%%piece", @dlgtext(S%z)
if @equal(%%piece, "NO")
LIST ADD, 8, S%%tmp|dud
LIST ADD, 7, S%%tmp|S%%startSQ
else
rem -- If opponent is there, check for possible jump --
if @not(@equal(@substr(%%piece, 1), @substr(%%caller, 1)))
if @both(@equal(%%dir, "L"), @greater(100, %%startSQx)) @both(@equal(%%dir, "R"), @greater(%%startSQx, 250))
goto CheckUpEnd
end
if @greater(%%startSQ, 8)
%z = @diff(%z, %%up2)
GOSUB FormatZ
PARSE ";%%tmp;;;%%piece", @dlgtext(S%z)
if @equal(%%piece, "NO")
rem -- List piece to be removed if this move is used --
%z = @sum(%z, %%up2)
GOSUB FormatZ
LIST ADD, 8, S%%tmp|dud|JUMP|%z
LIST ADD, 7, S%%tmp|S%%startSQ|JUMP|%z
end
end
end
end
:CheckUpEnd
exit
:CheckDown
%z = @sum(%%startSQ, %%dn1)
GOSUB FormatZ
PARSE ";%%tmp;;;%%piece", @dlgtext(S%z)
if @equal(%%piece, "NO")
LIST ADD, 8, S%%tmp|dud
LIST ADD, 7, S%%tmp|S%%startSQ
else
rem -- If opponent is there, check for possible jump --
if @not(@equal(@substr(%%piece, 1), @substr(%%caller, 1)))
if @both(@equal(%%dir, "L"), @greater(100, %%startSQx)) @both(@equal(%%dir, "R"), @greater(%%startSQx, 250))
goto CheckDownEnd
end
if @greater(25, %%startSQ)
%z = @sum(%z, %%dn2)
GOSUB FormatZ
PARSE ";%%tmp;;;%%piece", @dlgtext(S%z)
if @equal(%%piece, "NO")
%z = @diff(%z, %%dn2)
GOSUB FormatZ
LIST ADD, 8, S%%tmp|dud|JUMP|%z
LIST ADD, 7, S%%tmp|S%%startSQ|JUMP|%z
end
end
end
end
:CheckDownEnd
exit
:MovePiece
rem -- Uses %%square, %%caller, %%startSQ, %%startSQx, %%startSQy --
PARSE ";%%destSQ;%%destx;%%desty", @dlgtext(%%square)
DIALOG REMOVE, S%%destSQ
DIALOG REMOVE, S%%startSQ
rem -- Replace destination square with appropriate checker or king --
if @equal(%%caller, "RC")@equal(%%caller, "RK")
DIALOG REMOVE, HL
if @both(@equal(%%caller, "RC"), @greater(%%desty, 0))
DIALOG ADD,TEXT,%%square,%%desty,%%destx,50,50," "@chr(227)" "|%%destSQ|%%destx|%%desty|RC,Red,CLICK
else
DIALOG ADD,TEXT,%%square,%%desty,%%destx,50,50," "@chr(196)" "|%%destSQ|%%destx|%%desty|RK,Red,CLICK
end
DIALOG ADD,TEXT,HL,%%desty,%%destx,50,50,@chr(188),TRANSPARENT,Style2,CLICK
else
if @both(@equal(%%caller, BC), @greater(350, %%desty))
DIALOG ADD,TEXT,%%square,%%desty,%%destx,50,50," "@chr(227)" "|%%destSQ|%%destx|%%desty|BC,Black,CLICK
else
DIALOG ADD,TEXT,%%square,%%desty,%%destx,50,50," "@chr(196)" "|%%destSQ|%%destx|%%desty|BK,Black,CLICK
end
end
if %%checker
%%checker = %%square
WAIT .1
else
WAIT
end
rem -- Replace old checker with blank square --
DIALOG ADD,TEXT,S%%startSQ,%%startSQy,%%startSQx,50,50,|%%startSQ|%%startSQx|%%startSQy|NO,Empty,CLICK
PARSE ";%%startSQ;%%startSQx;%%startSQy;%%caller", @dlgtext(%%square)
PARSE "%a;%b;%c;%d", @item(8)
if %c
%%remove = S%d
GOSUB RemoveJumpedPiece
end
exit
:RemoveJumpedPiece
PARSE ";%a;%b;%c;%d", @dlgtext(%%remove)
DIALOG REMOVE, %%remove
if @equal(%d, BC)@equal(%d, BK)
%%compnum = @pred(%%compnum)
else
%%playernum = @pred(%%playernum)
end
rem -- Replace checker with blank square --
DIALOG ADD,TEXT,%%remove,%c,%b,50,50,|%a|%b|%c|NO,Empty,CLICK
rem -- Check for winner --
if @equal(%%compnum, 0)
INFO YOU WON!@cr()@cr()Starting New Game...@tab()
DIALOG SELECT, 1
DIALOG CLOSE
goto Start/Restart
end
if @equal(%%playernum, 0)
INFO COMPUTER WON...@cr()@cr()Starting New Game...@tab()
DIALOG SELECT, 1
DIALOG CLOSE
goto Start/Restart
end
exit
:FormatZ
if @greater(10, %z)
%z = 0%z
end
exit
|
BLACKJACK
Code: |
OPTION SCALE, 96
OPTION DECIMALSEP, "."
TITLE By Mac
rem -- Look for a sound file under 50k in size --
LIST CREATE, 1
LIST FILELIST, 1, @windir()\media\*.wav
if @greater(@count(1), 0)
REPEAT
if @greater(50000, @file(@item(1, %x), Z))
%%wavfile = @item(1, %x)
end
%x = @succ(%x)
UNTIL %%wavfile @equal(%x, @count(1))
end
LIST CLOSE, 1
rem -- Change these defaults to your preference --
%%cash = 1000
%%currency = Dollars
%%BetIncrement = 10
rem -- Design for card back --
%b = @chr(88)
DIALOG CREATE,"BlackJack by Mac",-1,0,600,400
DIALOG ADD,STYLE,Style1,Arial,10,B,DKGREEN,WHITE
DIALOG ADD,STYLE,Style2,MS Sans Serif,8,B
DIALOG ADD,STYLE,Trim1,,,,WHITE
DIALOG ADD,STYLE,Trim2,,,,BLACK
DIALOG ADD,STYLE,BlackS,Symbol,12,B,WHITE,BLACK
DIALOG ADD,STYLE,RedS,Symbol,12,B,WHITE,DKRED
DIALOG ADD,STYLE,BlackC,Arial,13,B,WHITE,BLACK
DIALOG ADD,STYLE,RedC,Arial,13,B,WHITE,DKRED
DIALOG ADD,STYLE,Blue,Symbol,19,B,LTBLUE,WHITE
DIALOG ADD,TEXT,Table,0,0,600,400,,Style1
DIALOG ADD,TEXT,Dealername,5,30,,,"Dealer",Style1
DIALOG ADD,TEXT,DealerScore,5,105,,,,Style1
DIALOG ADD,TEXT,Stat,145,200,,,"Change bet now if desired...",Style1
DIALOG ADD,TEXT,Playername,255,30,,,"Player",Style1
DIALOG ADD,TEXT,PlayerScore,255,105,,,,Style1
DIALOG ADD,TEXT,PlayerCash,255,200,,,Player has %%cash %%currency,Style1
DIALOG ADD,BUTTON,NewGame,180,30,80,22,"New Game",Style2
DIALOG ADD,BUTTON,Deal,180,30,80,22,"Deal Cards",Style2
DIALOG ADD,BUTTON,Help,180,115,80,22,,,Style2
DIALOG ADD,BUTTON,Hit,180,200,80,22,,Style2
DIALOG ADD,BUTTON,Stay,180,285,80,22,,Style2
DIALOG HIDE, Hit
DIALOG HIDE, Stay
DIALOG ADD,TEXT,BetAmount,183,380,,,"Bet is: "%%BetIncrement %%currency,Style1
DIALOG ADD,BUTTON,BetDown,210,420,40,22,"<",BlackC
DIALOG ADD,BUTTON,BetUp,210,460,40,22,">",BlackC
rem -- Dealer's hidden card --
DIALOG ADD,TEXT,HiddenCardTrim,30,30,76,98,,Trim1
DIALOG ADD,TEXT,HiddenCard,32,32,72,94,%b%b%b%b%b %b%b%b%b%b %b%b%b%b%b,Blue
DIALOG HIDE, HiddenCardTrim
DIALOG HIDE, HiddenCard
DIALOG SHOW
%%bet = %%BetIncrement
rem -- For player's cards --
LIST CREATE, 1
rem -- For dealer's cards --
LIST CREATE, 2
rem -- Card deck --
LIST CREATE, 9
GOSUB BuildDeck
rem -- Load chars for card display --
LIST CREATE, 8
LIST LOADTEXT, 8,
"dud
"dud
"2
"3
"4
"5
"6
"7
"8
"9
"10
"J
"Q
"K
"A
:EVLOOP
DIALOG SET, PlayerCash, Player has %%cash %%currency
:EVLOOP1
WAIT EVENT
goto @event()
:NewGameBUTTON
DIALOG SET, Stat, "Change bet now if desired..."
DIALOG CLEAR, PlayerScore
DIALOG HIDE, Hit
DIALOG HIDE, Stay
if @greater(%%Pcardnum, 0)@greater(%%Dcardnum, 0)
GOSUB ClearTable
end
LIST CLEAR, 1
LIST CLEAR, 2
%%deckpos = 0
%%Pcardnum = 0
%%Dcardnum = 0
%%PlayerPoints = 0
%%DealerPoints = 0
%%gameover = ""
DIALOG HIDE, NewGame
DIALOG SHOW, Deal
DIALOG SHOW, BetDown
DIALOG SHOW, BetUp
goto EVLOOP
:DealBUTTON
DIALOG HIDE, Deal
DIALOG SHOW, NewGame
DIALOG HIDE, BetDown
DIALOG HIDE, BetUp
DIALOG SET, Stat, "Game in progress..."
DIALOG SHOW, Hit
DIALOG SHOW, Stay
GOSUB ShuffleCards
rem -- Give dealer 2 cards (1 hidden), player 2 cards --
GOSUB GetPlayerCard
GOSUB GetDealerCard
GOSUB GetPlayerCard
GOSUB GetDealerCard
if @both(@equal(%%PlayerPoints, 21), @not(@equal(%%DealerPoints, 21)))
DIALOG SET, Stat, PLAYER WINS WITH BLACKJACK!
%%cash = @fadd(%%cash, @fmul(1.5, %%bet))
GOSUB ShowDealerCards
end
if @both(@equal(%%DealerPoints, 21), @not(@equal(%%PlayerPoints, 21)))
DIALOG SET, Stat, DEALER WINS WITH BLACKJACK!
%%cash = @fsub(%%cash, %%bet)
GOSUB ShowDealerCards
end
if @both(@equal(%%PlayerPoints, 21), @equal(%%DealerPoints, 21))
DIALOG SET, Stat, "TIE GAME (PUSH), NO WINNER..."
GOSUB ShowDealerCards
end
goto EVLOOP
:HitBUTTON
if %%gameover
goto EVLOOP
end
if @greater(21, %%PlayerPoints)
GOSUB GetPlayerCard
end
if @greater(%%PlayerPoints, 21)
DIALOG SET, Stat, "YOU BUSTED! DEALER WINS..."
%%cash = @fsub(%%cash, %%bet)
GOSUB ShowDealerCards
end
if @equal(%%PlayerPoints, 21)
goto StayBUTTON
end
goto EVLOOP
:StayBUTTON
if %%gameover
goto EVLOOP
end
if @greater(17, %%DealerPoints)
REPEAT
GOSUB GetDealerCard
UNTIL @greater(%%DealerPoints, 16)
end
GOSUB ShowDealerCards
GOSUB CheckFinalScore
goto EVLOOP
:BetDownBUTTON
if @greater(%%bet, 0)
%%bet = @fsub(%%bet, %%BetIncrement)
end
DIALOG SET, BetAmount, "Bet is: "%%bet %%currency
goto EVLOOP
:BetUpBUTTON
%%bet = @fadd(%%bet, %%BetIncrement)
DIALOG SET, BetAmount, "Bet is: "%%bet %%currency
goto EVLOOP
:HelpBUTTON
DIALOG CREATE,"BlackJack Help by Mac",-1,0,550,380,NOTITLE
DIALOG ADD,STYLE,HlpStyle,Courier New,10
DIALOG ADD,LIST,HelpList,5,5,540,345,HlpStyle
DIALOG ADD,BUTTON,OK,355,250,60,20
DIALOG SHOW
GOSUB LoadHelp
goto EVLOOP1
:OKBUTTON
DIALOG SELECT, 1
DIALOG CLOSE
rem -- Kill extra event --
%z = @event()
goto EVLOOP
:CLOSE
EXIT
rem ----------------- GOSUB ROUTINES -----------------------
:ClearTable
rem -- Remove all player and dealer cards (9 max) --
%x = 1
REPEAT
if @greater(%%Pcardnum, %x)@equal(%%Pcardnum, %x)
DIALOG REMOVE, P%xCardTrim
DIALOG REMOVE, P%xCardC
DIALOG REMOVE, P%xCardS
end
if @greater(%%Dcardnum, %x)@equal(%%Dcardnum, %x)
if @equal(%x, 1)
DIALOG HIDE, HiddenCardTrim
DIALOG HIDE, HiddenCard
if %%showhidden
%%showhidden = ""
DIALOG REMOVE, D%xCardTrim
DIALOG REMOVE, D%xCardC
DIALOG REMOVE, D%xCardS
end
else
DIALOG REMOVE, D%xCardTrim
DIALOG REMOVE, D%xCardC
DIALOG REMOVE, D%xCardS
end
end
%x = @succ(%x)
UNTIL @greater(%x, 9)
DIALOG SET, DealerScore, ""
exit
:GetPlayerCard
GOSUB GetCardInfo
%%Pcardnum = @succ(%%Pcardnum)
%z = %%Pcardnum
DIALOG ADD,TEXT,P%zCardTrim,280,@prod(%z, 30),76,98,,Trim2
if @equal(%%suit, @chr(168))@equal(%%suit, @chr(169))
DIALOG ADD,TEXT,P%zCardC,281,@sum(@prod(%z, 30),1),74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,RedC
DIALOG ADD,TEXT,P%zCardS,301,@sum(@prod(%z, 30),1),74,56," "%%suit@cr()@cr()" "%%suit,RedS
else
DIALOG ADD,TEXT,P%zCardC,281,@sum(@prod(%z, 30),1),74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,BlackC
DIALOG ADD,TEXT,P%zCardS,301,@sum(@prod(%z, 30),1),74,56," "%%suit@cr()@cr()" "%%suit,BlackS
end
LIST ADD, 1, @item(9, %%deckpos)
%%deckpos = @succ(%%deckpos)
GOSUB CheckPlayerPoints
exit
:GetDealerCard
%%Dcardnum = @succ(%%Dcardnum)
if @equal(%%Dcardnum, 1)
DIALOG SHOW, HiddenCardTrim
DIALOG SHOW, HiddenCard
else
rem -- Show another card --
GOSUB GetCardInfo
%z = %%Dcardnum
DIALOG ADD,TEXT,D%zCardTrim,30,@sum(70,@prod(%z, 30)),76,98,,Trim2
if @equal(%%suit, @chr(168))@equal(%%suit, @chr(169))
DIALOG ADD,TEXT,D%zCardC,31,@sum(70,@prod(%z, 30),1),74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,RedC
DIALOG ADD,TEXT,D%zCardS,51,@sum(70,@prod(%z, 30),1),74,56," "%%suit@cr()@cr()" "%%suit,RedS
else
DIALOG ADD,TEXT,D%zCardC,31,@sum(70,@prod(%z, 30),1),74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,BlackC
DIALOG ADD,TEXT,D%zCardS,51,@sum(70,@prod(%z, 30),1),74,56," "%%suit@cr()@cr()" "%%suit,BlackS
end
end
LIST ADD, 2, @item(9, %%deckpos)
%%deckpos = @succ(%%deckpos)
GOSUB CheckDealerPoints
exit
:GetCardInfo
%%value = @substr(@item(9, %%deckpos),1,2)
%%char = @item(8, %%value)
if @equal(@substr(@item(9, %%deckpos),3), "c")
%%suit = @chr(167)
end
if @equal(@substr(@item(9, %%deckpos),3), "d")
%%suit = @chr(168)
end
if @equal(@substr(@item(9, %%deckpos),3), "h")
%%suit = @chr(169)
end
if @equal(@substr(@item(9, %%deckpos),3), "s")
%%suit = @chr(170)
end
exit
:CheckPlayerPoints
%%PlayerPoints = 0
%%ace = 0
%x = 0
REPEAT
%y = @substr(@item(1, %x),1,2)
if @both(@greater(%y, 10), @greater(14, %y))
%y = 10
end
if @equal(%y, 14)
%y = 0
%%ace = @succ(%%ace)
end
%%PlayerPoints = @sum(%%PlayerPoints, %y)
%x = @succ(%x)
UNTIL @equal(%x, @count(1))
%%Points = %%PlayerPoints
GOSUB CheckAces
%%PlayerPoints = %%Points
DIALOG SET, PlayerScore, "Points = "%%PlayerPoints
exit
:CheckDealerPoints
%%DealerPoints = 0
%%ace = 0
%x = 0
REPEAT
%y = @substr(@item(2, %x),1,2)
if @both(@greater(%y, 10), @greater(14, %y))
%y = 10
end
if @equal(%y, 14)
%y = 0
%%ace = @succ(%%ace)
end
%%DealerPoints = @sum(%%DealerPoints, %y)
%x = @succ(%x)
UNTIL @equal(%x, @count(2))
%%Points = %%DealerPoints
GOSUB CheckAces
%%DealerPoints = %%Points
exit
:CheckAces
rem -- Determine if aces = 1 or 11 points, only 1st can be 11) --
if @equal(%%ace, 1)
if @greater(11, %%Points)
%%Points = @sum(%%Points, 11)
else
%%Points = @sum(%%Points, 1)
end
end
if @equal(%%ace, 2)
if @greater(10, %%Points)
%%Points = @sum(%%Points, 12)
else
%%Points = @sum(%%Points, 2)
end
end
if @equal(%%ace, 3)
if @greater(9, %%Points)
%%Points = @sum(%%Points, 13)
else
%%Points = @sum(%%Points, 3)
end
end
if @equal(%%ace, 4)
if @greater(7, %%Points)
%%Points = @sum(%%Points, 14)
else
%%Points = @sum(%%Points, 4)
end
end
exit
:CheckFinalScore
if @greater(%%DealerPoints, 21)
DIALOG SET, Stat, "YOU WIN! DEALER BUSTED..."
%%cash = @fadd(%%cash, %%bet)
exit
end
if @greater(%%PlayerPoints, %%DealerPoints)
DIALOG SET, Stat, "YOU WIN!"
%%cash = @fadd(%%cash, %%bet)
exit
end
if @greater(%%DealerPoints, %%PlayerPoints)
DIALOG SET, Stat, "DEALER WINS..."
%%cash = @fsub(%%cash, %%bet)
exit
end
if @equal(%%DealerPoints, %%PlayerPoints)
DIALOG SET, Stat, "TIE GAME (PUSH), NO WINNER..."
exit
end
exit
:ShowDealerCards
rem -- Show dealer's hidden card and play sound if available --
if %%wavfile
PLAY %%wavfile
end
%%deckpos = 1
GOSUB GetCardInfo
%%showhidden = 1
DIALOG ADD,TEXT,D1CardTrim,30,30,76,98,,Trim2
if @equal(%%suit, @chr(168))@equal(%%suit, @chr(169))
DIALOG ADD,TEXT,D1CardC,31,31,74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,RedC
DIALOG ADD,TEXT,D1CardS,51,31,74,56," "%%suit@cr()@cr()" "%%suit,RedS
else
DIALOG ADD,TEXT,D1CardC,31,31,74,96," "%%char@cr()@cr()@cr()@cr()" "%%char,BlackC
DIALOG ADD,TEXT,D1CardS,51,31,74,56," "%%suit@cr()@cr()" "%%suit,BlackS
end
DIALOG SET, DealerScore, "Points = "%%DealerPoints
%%gameover = 1
exit
:BuildDeck
%a = "cdhs"
%x = 1
REPEAT
%n = 2
%s = @substr(%a, %x)
REPEAT
if @greater(10, %n)
%n = 0%n
end
LIST ADD, 9, %n%s
%n = @succ(%n)
UNTIL @greater(%n, 14)
%x = @succ(%x)
UNTIL @greater(%x, 4)
exit
:ShuffleCards
%y = 0
:Shuffle
%x = @diff(@count(9), 1)
REPEAT
rem -- get last 4 digits (use as rough random number) --
%t = @datetime()
%t = @substr(%t, @diff(@len(%t), 3), @len(%t))
if @equal(@pos(".", %t), 0)
rem -- card position --
%p = @mod(%t, @sum(%x, 1))
rem -- get card to swap --
%c = @item(9, %p)
rem -- card store --
%s = @item(9, %x)
LIST DELETE, 9
LIST INSERT, 9, %c
LIST SEEK, 9, %p
LIST DELETE, 9
LIST INSERT, 9, %s
%x = @pred(%x)
end
UNTIL @greater(1, %x)
%y = @succ(%y)
rem -- Shuffle 2 times --
if @greater(2, %y)
goto Shuffle
end
exit
:LoadHelp
LIST LOADTEXT, HelpList,
"BlackJack (Casino Rules)
"
"Blackjack: 21 points on the first two cards.
"Bust: Going over 21 points.
"Hit: To receive another card.
"Stay: To refuse additional cards.
"Push: A tied score with no winner.
"
"Bets are placed before cards are dealt. Player bets that his
"hand will beat the dealer's hand without exceeding 21.
"
"The player and the dealer each receive two cards (one of the
"dealer's cards is face down). The player then decides if he
"wants a 'hit' or to 'stay'.
"
"An ace counts 1 or 11, a face card 10, and all other cards at
"their face value. A blackjack wins the bet unless the dealer
"also has a blackjack. Blackjacks pay you 1 1/2 times the bet.
"
"The dealer must draw a card if he's holding a value of 16 or
"under, and must stay if he's holding a value of 17 or over.
exit
|
ANTI-AIRCRAFT
Code: |
rem -- You now also have a tank to deal with. Click on the tank or the
rem -- ground to launch mortars, and allow for the tank's movement.
rem -- It takes 3 tank shells to equal 1 bomb hit on your bunker.
rem -- Click on the plane to fire a missile at it. When the crosshair
rem -- is on target, a "*Lock*" message will appear. The plane drops
rem -- bombs at your bunker which shows an "x" for each hit. If you
rem -- get over 3 bomb hits, you lose the game. If you destroy 25
rem -- planes before your bunker goes, you win the game.
rem -- When you destroy the plane, it's bomb will disappear. This
rem -- could prevent a bomb hit if you're fast enough...
rem -- When you miss a "*Lock*", your missiles don't destroy the plane.
rem -- If you can't handle the standard game, you can upgrade your
rem -- missile speed with the "Missile Upgrade" checkbox. When you get
rem -- 3 bomb hits, it's probably a good idea to do this anyway...
rem -- Code Notes: Some things are moved off screen instead of using
rem -- DIALOG HIDE/SHOW. Some styles are used by 2 or more elements,
rem -- some use the foreground, some use the background, some use both.
OPTION SCALE, 96
OPTION DECIMALSEP, "."
%%missx = 232
%%missy = 345
%%mortx = 245
%%morty = 348
%%tankx = 500
%%tanky = 355
%%shellx = @sum(%%tankx, 4)
%%shelly = @diff(%%tanky,2)
TITLE By Mac
DIALOG CREATE,"Anti-Aircraft",-1,0,500,400
rem -> If you don't have "Wingdings" font, rem this line --
DIALOG ADD,STYLE,Style1,Wingdings,12,BC,,BLACK
DIALOG ADD,STYLE,Style2,Arial,12,C,,BLACK
DIALOG ADD,STYLE,Style3,Arial,8,C,CYAN,BLACK
DIALOG ADD,STYLE,Style4,Arial,12,B,LTBLUE,RED
DIALOG ADD,STYLE,Style5,Arial,12,B,BROWN,YELLOW
DIALOG ADD,STYLE,Style6,Arial,8,C,BLACK,YELLOW
DIALOG ADD,TEXT,Sky,25,0,500,275,,,Style3,CROSS,CLICK
DIALOG ADD,TEXT,Ground,300,0,500,100,,,Style5,CROSS,CLICK
DIALOG ADD,TEXT,Lock,0,600,36,,"*Lock*",,Style3,TRANSPARENT
rem -- Set tankgun @sum(%%tankx, 10) for right side --
DIALOG ADD,TEXT,Tank,%%tanky,%%tankx,14,7,"****",,Style6,CROSS,CLICK
DIALOG ADD,TEXT,Shell,%%shelly,%%shellx,3,1,,,Style3
DIALOG ADD,TEXT,Tanktop,@diff(%%tanky,3),@sum(%%tankx, 4),6,3,,,Style6,CROSS,CLICK
DIALOG ADD,TEXT,Tankgun,@diff(%%tanky,2),%%tankx,4,1,,,Style6,CROSS,CLICK
DIALOG ADD,TEXT,BunkerBase,355,228,44,10,,,Style6,CROSS,CLICK
DIALOG ADD,TEXT,Bunker,350,230,40,15,,,Style6,CROSS,CLICK
DIALOG ADD,TEXT,RadarMast,335,240,40,20,"|",,Style2,TRANSPARENT,CROSS,CLICK
DIALOG ADD,TEXT,Radar,332,240,40,20,,,Style3,TRANSPARENT,CROSS,CLICK
DIALOG ADD,TEXT,Mortar,%%morty,%%mortx,3,3,,,Style4,CROSS,CLICK
DIALOG ADD,TEXT,Missile,%%missy,%%missx,,,"*",,Style4,TRANSPARENT,CROSS,CLICK
DIALOG ADD,TEXT,Bomb,40,600,5,2,,,Style6
DIALOG ADD,TEXT,BunkerXXX,330,220,60,40,,,Style5
DIALOG HIDE, BunkerXXX
rem -> If you don't have "Wingdings" font, rem this line and use the following line --
DIALOG ADD,TEXT,Plane,0,600,12,15,@chr(81),,Style1,TRANSPARENT,CROSS,CLICK
rem -> DIALOG ADD,TEXT,Plane,0,600,12,15,">",,Style2,TRANSPARENT,CROSS,CLICK
DIALOG ADD,TEXT,Star1,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,Star2,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,Star3,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,Star4,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,Star5,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,Star6,400,500,,,"*",,Style2,TRANSPARENT
DIALOG ADD,TEXT,TX1,5,5,,,"Speed"
DIALOG ADD,BUTTON,Slow,2,40,16,20,"<"
DIALOG ADD,BUTTON,Fast,2,57,16,20,">"
DIALOG ADD,TEXT,TX2,5,100,,,"Hits: Missed: Games Won: Games Lost:"
DIALOG ADD,CHECK,CK1,5,400,,14,"Missile Upgrade",,CLICK
DIALOG SHOW
rem -- hits, misses, games won, games lost --
%h = 0
%m = 0
%w = 0
%l = 0
%%attack = "AIR"
%x = 5
%y = 40
%%timer = 0
%s = 200
%%drop = 5
%%incoming = 1
%%bx = %x
%%by = %y
%%mspeed = 1
:EVLOOP
REPEAT
if @equal(%%attack, "AIR")
rem -- Get approx mouse pos on program window --
PARSE "%%mx;%%my", @mousepos()
%%mx = @diff(@diff(%%mx, @winpos("Anti-Aircraft", L)), 3)
%%my = @diff(@diff(%%my, @winpos("Anti-Aircraft", T)), 22)
rem -- Show Plane Lock --
if @both(@greater(%%mx, %x), @greater(@sum(%x, 12), %%mx))
if @both(@greater(%%my, %y), @greater(@sum(%y, 15), %%my))
DIALOG SETPOS, Lock, @sum(%%my, 10), @diff(%%mx, 15)
else
DIALOG SETPOS, Lock, 400,500
end
else
DIALOG SETPOS, Lock, 400,500
end
rem -- Allow extra 20 pixels for missile hit offscreen --
if @greater(520, %x)
%x = @succ(%x)
else
GOSUB Reset
GOSUB Random
%y = @prod(20, %r)
%x = 1
%%drop = %r
end
DIALOG SETPOS,Plane,%y,%x
if @equal(%%drop, %x)
%%incoming = 1
%%bx = %x
%%by = %y
end
rem -- Drop bomb, check for hit on bunker --
if %%incoming
DIALOG SETPOS,Bomb,%%by,%%bx
%%bx = @succ(%%bx)
%%by = @succ(%%by)
if @greater(%%by, 355)
%%incoming = ""
DIALOG SETPOS,Bomb,400,500
if @both(@greater(%%bx, 220), @greater(270, %%bx))
GOSUB BunkerHit
end
end
end
DIALOG SETPOS,Missile,%%missy,%%missx
rem -- Have missile chase plane --
if %%fire
if @greater(%%missx, %x)
%%missx = @diff(%%missx, 1)
end
if @greater(%x, %%missx)
%%missx = @sum(%%missx, 2)
end
if @greater(%%missy, %y)
%%missy = @diff(%%missy, %%mspeed)
else
%%missy = %y
end
end
rem -- Check for missile hit --
if @both(@equal(%%missx, %x), @equal(%%missy, %y))@both(@equal(@sum(%%missx, 1), %x), @equal(%%missy, %y))
if %%lock
GOSUB DestroyPlane
else
%%fire = ""
%m = @succ(%m)
%%missx = 232
%%missy = 345
DIALOG SETPOS,Missile,%%missy,%%missx
end
end
else
if @equal(%%tankdir, L)
rem -- Use %%timer var to slow tank --
if @equal(@mod(%%timer, 5), 0)
if @greater(%%tankx, 320)
%%tankx = @pred(%%tankx)
DIALOG SETPOS, Tank, %%tanky, %%tankx
DIALOG SETPOS, Tanktop, @diff(%%tanky,3), @sum(%%tankx, 4)
DIALOG SETPOS, Tankgun, @diff(%%tanky,2),%%tankx
end
end
rem -- Fire tank shell --
DIALOG SETPOS, Shell, %%shelly, %%shellx
if @greater(%%shellx, 265)
%%shellx = @pred(%%shellx)
end
if @both(@equal(@mod(%%timer, 200), 0), @greater(270, %%shellx))
%%shellhit = 1
end
else
rem -- Use %%timer var to slow tank --
if @equal(@mod(%%timer, 5), 0)
if @greater(180, %%tankx)
%%tankx = @succ(%%tankx)
DIALOG SETPOS, Tank, %%tanky, %%tankx
DIALOG SETPOS, Tanktop, @diff(%%tanky,3), @sum(%%tankx, 4)
DIALOG SETPOS, Tankgun, @diff(%%tanky,2),@sum(%%tankx, 10)
end
end
rem -- Fire tank shell --
DIALOG SETPOS, Shell, %%shelly, %%shellx
if @greater(235, %%shellx)
%%shellx = @succ(%%shellx)
end
if @both(@equal(@mod(%%timer, 200), 0), @greater(%%shellx, 230))
%%shellhit = 1
end
end
if %%shellhit
%%shellhit = ""
%%shellx = @sum(%%tankx, 6)
%%tankscore = @succ(%%tankscore)
if @equal(@mod(%%tankscore, 3), 0)
GOSUB BunkerHit
else
%%bunkhit = 0
%%bunkhitx = 250
%%bunkhity = 345
end
end
rem -- Check for mortar fired, and tank hit --
DIALOG SETPOS,Mortar,%%morty,%%mortx
if %%mortar
if @equal(%%dir, R)
%%mortx = @succ(%%mortx)
if @greater(%%halfway, %%mortx)
%%morty = @pred(%%morty)
else
%%morty = @succ(%%morty)
end
end
if @equal(%%dir, L)
%%mortx = @pred(%%mortx)
if @greater(%%mortx, %%halfway)
%%morty = @pred(%%morty)
else
%%morty = @succ(%%morty)
end
end
rem -- Check if tank is hit --
if @both(@greater(%%mortx, %%tankx), @greater(@sum(%%tankx,14), %%mortx))
if @both(@greater(%%morty, @diff(%%tanky, 3)), @greater(@sum(%%tanky,7), %%morty))
%%tankhit = 1
end
end
if %%tankhit @equal(%%mortx, %%mortdestx)
if @not(%%tankhit)
%m = @succ(%m)
end
%%mhit = 0
%%mhitx = %%mortx
%%mhity = %%morty
%%mortar = ""
%%mortx = 245
%%morty = 348
end
end
rem -- Mortar explosion --
if @greater(26, %%mhit)
%%mhity = @pred(%%mhity)
DIALOG SETPOS, Star1, %%mhity, @diff(%%mhitx, %%mhit)
DIALOG SETPOS, Star2, %%mhity, %%mhitx
DIALOG SETPOS, Star3, %%mhity, @sum(%%mhitx, %%mhit)
%%mhit = @succ(%%mhit)
if @greater(%%mhit, 25)
DIALOG SETPOS, Star1, 400, 500
DIALOG SETPOS, Star2, 400, 500
DIALOG SETPOS, Star3, 400, 500
if %%tankhit
%h = @succ(%h)
GOSUB CheckWin
%%tankhit = ""
%%tankscore = ""
%%attack = "AIR"
DIALOG SHOW, Plane
DIALOG SETPOS, Tank, 400, 500
DIALOG SETPOS, Tanktop, 400, 500
DIALOG SETPOS, Tankgun, 400, 500
DIALOG SETPOS, Shell, 400, 500
end
end
end
end
rem -- Explosion on bunker --
if @greater(26, %%bunkhit)
%%bunkhity = @pred(%%bunkhity)
DIALOG SETPOS, Star4, %%bunkhity, @diff(%%bunkhitx, %%bunkhit)
DIALOG SETPOS, Star5, %%bunkhity, %%bunkhitx
DIALOG SETPOS, Star6, %%bunkhity, @sum(%%bunkhitx, %%bunkhit)
%%bunkhit = @succ(%%bunkhit)
if @greater(%%bunkhit, 25)
DIALOG SETPOS, Star4, 400, 500
DIALOG SETPOS, Star5, 400, 500
DIALOG SETPOS, Star6, 400, 500
end
end
rem -- Radar rotation --
if @equal(@mod(%%timer, 25), 0)
%%rotate = 0
if @equal(@dlgtext(Radar), "oo")
DIALOG SET, Radar, "o"
else
DIALOG SET, Radar, "oo"
end
end
GOSUB Delay
DIALOG SET, TX2,Hits:%h" "Missed:%m" "Games Won:%w" "Games Lost:%l
%%timer = @succ(%%timer)
if @greater(%%timer, 1000)
%%timer = 0
end
%e = @event()
UNTIL %e
goto %e
:SlowBUTTON
%s = @sum(%s, 20)
goto EVLOOP
:FastBUTTON
%s = @diff(%s, 20)
if @greater(0, %s)
%s = 0
end
goto EVLOOP
:CK1CLICK
if @dlgtext(CK1)
%%mspeed = 2
else
%%mspeed = 1
end
goto EVLOOP
:PlaneCLICK
if @not(%%fire)
%%lock = 1
%%fire = 1
end
DIALOG SETPOS, Lock, 400, 500
goto EVLOOP
:SkyCLICK
if @equal(%%attack, "AIR")
%%fire = 1
end
goto EVLOOP
:TankCLICK
:TanktopCLICK
:TankgunCLICK
:GroundCLICK
if @both(@equal(%%attack, "GROUND"), @not(%%mortar))
PARSE "%%mortdestx;%%mortdesty", @mousepos()
%%mortdestx = @diff(@diff(%%mortdestx, @winpos("Anti-Aircraft", L)), 3)
%%mortdesty = @diff(@diff(%%mortdesty, @winpos("Anti-Aircraft", T)), 22)
rem -- Can't fire mortar too close --
if @both(@greater(290, %%mortdestx), @greater(%%mortdestx, 210))
goto EVLOOP
end
%%mortar = 1
rem -- Figure simple tragectory using an adjusted halfway X --
if @greater(%%mortdestx, %%mortx)
%%dir = R
%%halfway = @diff(%%mortdestx, @div(@diff(%%mortdestx, %%mortx), 2))
if @greater(%%morty, %%mortdesty)
%%ydiff = @diff(%%morty, %%mortdesty)
%%halfway = @sum(%%halfway, @div(%%ydiff, 2))
end
if @greater(%%mortdesty, %%morty)
%%ydiff = @diff(%%mortdesty, %%morty)
%%halfway = @diff(%%halfway, @div(%%ydiff, 2))
end
else
%%dir = L
%%halfway = @diff(%%mortx, @div(@diff(%%mortx, %%mortdestx), 2))
if @greater(%%morty, %%mortdesty)
%%ydiff = @diff(%%morty, %%mortdesty)
%%halfway = @diff(%%halfway, @div(%%ydiff, 2))
end
if @greater(%%mortdesty, %%morty)
%%ydiff = @diff(%%mortdesty, %%morty)
%%halfway = @sum(%%halfway, @div(%%ydiff, 2))
end
end
end
goto EVLOOP
:BunkerCLICK
:BunkerBaseCLICK
:MissileCLICK
:MortarCLICK
:RadarCLICK
:RadarMastCLICK
goto EVLOOP
:CLOSE
EXIT
rem --------- GOSUB ------------
:BunkerHit
%%bunkhit = 0
%%bunkhitx = 250
%%bunkhity = 345
%%bombed = %%bombed"x"
DIALOG SET, Bunker, %%bombed
rem -- 4 hits and you're history --
if @greater(@len(%%bombed), 3)
DIALOG SHOW, BunkerXXX
INFO The bunker was destroyed.@cr()@cr()Your next of kin will be notified...@tab()
%l = @succ(%l)
DIALOG CLEAR, Bunker
GOSUB NewGame
DIALOG HIDE, BunkerXXX
end
exit
:DestroyPlane
GOSUB Reset
DIALOG HIDE, Plane
%h = @succ(%h)
%i = 0
REPEAT
%y = @succ(%y)
DIALOG SETPOS, Star1, %y, @diff(%x, %i)
DIALOG SETPOS, Star2, %y, %x
DIALOG SETPOS, Star3, %y, @sum(%x, %i)
if @equal(@mod(%y, 25), 0)
DIALOG SET, Radar, "oo"
end
if @equal(@mod(%y, 50), 0)
DIALOG SET, Radar, "o"
end
%i = @succ(%i)
GOSUB Delay
UNTIL @greater(%i, 50)
DIALOG SETPOS, Star1, 400, 500
DIALOG SETPOS, Star2, 400, 500
DIALOG SETPOS, Star3, 400, 500
GOSUB Random
%y = @prod(20, %r)
%x = 1
GOSUB CheckWin
%%attack = "GROUND"
GOSUB Random
if @greater(%r, 5)
%%tankdir = L
%%tankx = 495
else
%%tankdir = R
%%tankx = 5
end
%%tanky = 355
%%shelly = @diff(%%tanky,2)
%%shellx = @sum(%%tankx, 6)
exit
:CheckWin
rem -- Check for player win --
if @greater(%h, 24)
if @equal(%%mspeed, 1)
INFO "You Won Commander!"@tab()
else
INFO "So you needed a missile upgrade to win..."@tab()
end
%w = @succ(%w)
GOSUB NewGame
end
exit
:NewGame
DIALOG CLEAR, Bunker
%%bombed = ""
%h = 0
%m = 0
if @equal(%%attack, "GROUND")
%%mhit = 0
%%tankhit = ""
%%tankscore = ""
%%attack = "AIR"
DIALOG SHOW, Plane
DIALOG SETPOS, Tank, 400, 500
DIALOG SETPOS, Tanktop, 400, 500
DIALOG SETPOS, Tankgun, 400, 500
DIALOG SETPOS, Shell, 400, 500
end
%%bunkhit = 26
%%mhit = 26
:Reset
%%lock = ""
%%fire = ""
%%incoming = ""
DIALOG SETPOS, Bomb, 400, 500
%%missx = 232
%%missy = 345
DIALOG SETPOS,Missile,%%missy,%%missx
%%mortar = ""
%%mortx = 245
%%morty = 348
DIALOG SETPOS,Mortar,%%morty,%%mortx
exit
:Delay
%d = %s
REPEAT
%d = @pred(%d)
UNTIL @greater(1, %d)
exit
:Random
rem -- Get random number using @datetime() with no parameters.
%r = @datetime()
rem -- Get last digit (use as random number)
%r = @substr(%r, @len(%r))
rem -- We want 2 minimim --
if @greater(2, %r)
goto Random
end
exit
|
Cheers, Mac _________________ VDSug.dll does file IO, check/disable menu items,
non-VDS dlls, draw functions and more...
Free download (30k dll size) at:
http://www.vdsworld.com/download.php?id=361
|
|