Tic Tac Toe — File Browser
TicTacToev1.0 / TicTacToev1.0 / tictactoe.mrc
tictactoe.mrc — 20.63 KB — Download this file
on 1:load:{
if ( $version != 5.11 ) {
echo -s
echo -s 2 Sorry, Tic Tac Toe is designed to run on mIRC 5.11 only.
echo -s
.timer 1 1 unload -rs TicTacToe.mrc
}
else {
set %t3i.pos 60 80
set %t3i.mark1 ¤
set %t3i.mark2 ×
set %t3i.pmark1 Mark1 ¤
set %t3i.pmark2 Mark2 ×
set %t3i.winstat -ar
set %t3i.last 1
echo -s
echo -s 2 Tic Tac Toe has been installed...
echo -s 2 Use the menu bar popup or type /ttt to play.
echo -s
}
}
menu menubar {
Tic Tac Toe:tTt
}
alias tTt if ( %t3i.last == 1 ) { t3.start } | else { t3.twostart }
menu @ Tic Tac Toe {
dclick set %t3i.pos $window(@ Tic Tac Toe).x $window(@ Tic Tac Toe).y | window -c @ Tic Tac Toe
Start
.1up:t3.start
.2up:t3.twostart
-
Move
.%t3p.A1:t3.move a1
.%t3p.A2:t3.move a2
.%t3p.A3:t3.move a3
.-
.%t3p.B1:t3.move b1
.%t3p.B2:t3.move b2
.%t3p.B3:t3.move b3
.-
.%t3p.C1:t3.move c1
.%t3p.C2:t3.move c2
.%t3p.C3:t3.move c3
Side
.%t3p.heads:set %t3.pick heads | t3.flip
.%t3p.tails:set %t3.pick tails | t3.flip tails
.-
.%t3p.2up:t3.twostart
-
Prefs
.%t3i.pmark1:set %t3.temp %t3i.mark1 | set %t3i.mark1 $left($$?="First player marker...",1) | set %t3i.pmark1 Mark1 $! | t3.reptok %t3.temp %t3i.mark1
.%t3i.pmark2:set %t3.temp %t3i.mark2 | set %t3i.mark2 $left($$?="Second player marker...",1) | set %t3i.pmark2 Mark2 $! | t3.reptok %t3.temp %t3i.mark2
.-
.Editbox:if ( e isin %t3i.winstat ) { set %t3i.winstat -ar } | else { set %t3i.winstat -are } | t3.cycle
.Uninstall:if ( y isin $$?="Are you SURE you want to uninstall???" ) { t3.uninstall }
}
alias t3.reptok {
if ( %t3v.A1 == $1 ) { set %t3v.A1 $2 }
if ( %t3v.A2 == $1 ) { set %t3v.A2 $2 }
if ( %t3v.A3 == $1 ) { set %t3v.A3 $2 }
if ( %t3v.B1 == $1 ) { set %t3v.B1 $2 }
if ( %t3v.B2 == $1 ) { set %t3v.B2 $2 }
if ( %t3v.B3 == $1 ) { set %t3v.B3 $2 }
if ( %t3v.C1 == $1 ) { set %t3v.C1 $2 }
if ( %t3v.C2 == $1 ) { set %t3v.C2 $2 }
if ( %t3v.C3 == $1 ) { set %t3v.C3 $2 }
t3.update
}
alias t3.flip {
t3.init
unset %t3.mode
t3.update
t3.pline @ Tic Tac Toe 2 You chose %t3.pick $+ …
.timer 1 1 t3.flipn
}
alias t3.flipn {
if ( $rand(1,2) == 1 ) { set %t3.temp Heads! }
else { set %t3.temp Tails! }
if ( %t3.pick isin %t3.temp ) {
set %t3.temp %t3.temp You win.
set %t3.adv them
set %t3.turn h
t3.info w
}
else {
set %t3.temp %t3.temp Me first
set %t3.adv us
set %t3.turn c
t3.info
.timer 1 2 t3.decide
}
t3.pline @ Tic Tac Toe 3 %t3.temp
t3.setpops
unset %t3p.heads | unset %t3p.tails | unset %t3p.2up
}
alias t3.setpops {
unset %t3p.*
unset %t3..
:b
inc %t3..
if ( %t3.. <= 3 ) {
set %t3p.A [ $+ [ %t3.. ] ] A $+ %t3..
set %t3p.B [ $+ [ %t3.. ] ] B $+ %t3..
set %t3p.C [ $+ [ %t3.. ] ] C $+ %t3..
goto b
}
}
alias t3.2piece if ( %t3.mode == 2up ) { | if ( %t3.turn == 1 ) { return 15-14-1- %t3i.mark1 1-14-15- } | elseif ( %t3.turn == 2 ) { return 15-14-1- %t3i.mark2 1-14-15- } } | else { return }
alias t3.pline rline $1-2 $left($line($1,$2), $calc( 34 - $len($strip($left($line($1,$2),16))))) $+ $3-
alias t3.pos if ($window(@ Tic Tac Toe)) { set %t3i.pos $window(@ Tic Tac Toe).x $window(@ Tic Tac Toe).y } | else { .timer63 off | unset %t3p.* | unset %t3v.* | unset %t3.* }
alias t3.for unset %t | :a | if ( %t < $1 ) { [ $2- ] | inc %t | goto a }
alias t3.collen if ( $1 > $len($2-) ) { %t = $1 - $len($2-) | return $2- $+ $str( ,%t) } | else { return $2- }
alias t3.clearblocks unset %t3.. | :a | inc %t3.. | if ( %t3.. <= 3 ) { set %t3v.A [ $+ [ %t3.. ] ] | set %t3v.B [ $+ [ %t3.. ] ] | set %t3v.C [ $+ [ %t3.. ] ] | goto a }
alias t3.init {
.timer63 0 1 t3.pos
unset %t3v.*
unset %t3.info
set %t3.moves 0
unset %t3p.*
set %t3p.heads Heads
set %t3p.tails or Tails
set %t3p.2up 2player
t3.clearblocks
}
alias t3.cycle {
set %t3.ln1 $line(@ Tic Tac Toe,1)
set %t3.ln2 $line(@ Tic Tac Toe,2)
set %t3.ln3 $line(@ Tic Tac Toe,3)
set %t3.ln4 $line(@ Tic Tac Toe,4)
window -c @ Tic Tac Toe
window [ %t3i.winstat ] @ Tic Tac Toe [ %t3i.pos [ $t3.osize ] ] @ Tic Tac Toe Courier New Bold 18
titlebar @ Tic Tac Toe by zeno :: zeno@cygnus.uwa.edu.au
t3.for 5 aline @ Tic Tac Toe
rline @ Tic Tac Toe 1 %t3.ln1
rline @ Tic Tac Toe 2 %t3.ln2
rline @ Tic Tac Toe 3 %t3.ln3
rline @ Tic Tac Toe 4 %t3.ln4
}
alias t3.osize if ( e isin %t3i.winstat ) { return 485 180 } | else { return 485 150 }
alias t3.start {
window [ %t3i.winstat ] @ Tic Tac Toe [ %t3i.pos [ $t3.osize ] ] @ Tic Tac Toe Courier New Bold 18
titlebar @ Tic Tac Toe by zeno :: zeno@cygnus.uwa.edu.au
t3.init
set %t3.mode heads?
set %t3i.last 1
clear @ Tic Tac Toe
t3.for 4 aline @ Tic Tac Toe
t3.update
t3.pline @ Tic Tac Toe 2 Tic Tac Toe Ready
t3.pline @ Tic Tac Toe 3 Heads or Tails?
}
alias t3.twostart {
window [ %t3i.winstat ] @ Tic Tac Toe [ %t3i.pos [ $t3.osize ] ] @ Tic Tac Toe Courier New Bold 18
titlebar @ Tic Tac Toe by zeno :: zeno@cygnus.uwa.edu.au
t3.clearblocks
set %t3.mode 2up
set %t3i.last 2
set %t3.turn 1
unset %t3.info
clear @ Tic Tac Toe
t3.setpops
t3.for 4 aline @ Tic Tac Toe
t3.update
t3.pline @ Tic Tac Toe 2 Tíc~Tác~Tóe Ready
t3.pline @ Tic Tac Toe 3 Launch us player one.
}
alias t3.update {
set %t3.. 1
if ( $line(@ Tic Tac Toe,0) == 4 ) { iline @ Tic Tac Toe 1 12 A B C }
rline @ Tic Tac Toe 1 12 A B C4 $t3.2piece
:a
inc %t3..
if ( %t3.. <= 4 ) {
if ( %t3.. != 4 ) { rline @ Tic Tac Toe %t3.. 12 $+ $calc( %t3.. - 1 ) $+ 2 [ %t3v. [ $+ [ [ A ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] $chr(124) [ %t3v. [ $+ [ [ B ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] $chr(124) [ %t3v. [ $+ [ [ C ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] }
else { rline @ Tic Tac Toe %t3.. 12 $+ $calc( %t3.. - 1 ) 2 [ %t3v. [ $+ [ [ A ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] $chr(124) [ %t3v. [ $+ [ [ B ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] $chr(124) [ %t3v. [ $+ [ [ C ] [ $+ [ $calc( %t3.. - 1 ) ] ] ] ] ] %t3.info }
goto a
}
}
on 1:input:{
if ( @ Tic Tac Toe == $active && $left($1,1) != / ) {
if ( %t3.mode == heads? ) {
if ( $left($1,1) == h ) { set %t3.pick heads | t3.flip }
elseif ( $left($1,1) == t ) { set %t3.pick tails | t3.flip }
else { t3.pline @ Tic Tac Toe 4 (Type H or T below) }
}
elseif ( %t3.mode == over ) {
if ( $left($1,1) == y ) { tTt }
elseif ( $left($1,1) == n ) { window -c @ Tic Tac Toe }
}
elseif ( %t3.turn == h ) {
t3.move $1-
}
} | halt }
alias t3.move {
if ( $len($1) == 2 && ( $left($1,1) == A || $left($1,1) == B || $left($1,1) == C ) && ( $right($1,1) >= 1 && $right($1,1) <= 3 )) {
if ( %t3.mode != 2up ) {
if ( [ %t3v. [ $+ [ $1 ] ] ] == ) { set %t3v. [ $+ [ $1 ] ] %t3i.mark1 | inc %t3.moves | set %t3.turn c | t3.info | [ unset %t3p. [ $+ [ $1 ] ] ] | t3.update | t3.check }
elseif ( [ %t3v. [ $+ [ $1 ] ] ] == %t3i.mark1 ) { t3.pline @ Tic Tac Toe 2 You're already in $1! }
else { t3.pline @ Tic Tac Toe 2 The opponent's in $1! }
}
else {
if ( [ %t3v. [ $+ [ $1 ] ] ] == ) { set %t3v. [ $+ [ $1 ] ] $t3.thistok | t3.altturn | t3.info | [ unset %t3p. [ $+ [ $1 ] ] ] | t3.update | t3.check }
elseif ( [ %t3v. [ $+ [ $1 ] ] ] == %t3i.mark1 ) { t3.pline @ Tic Tac Toe 2 You're already in $1! }
else { t3.pline @ Tic Tac Toe 2 The opponent's in $1! }
}
}
else { t3.pline @ Tic Tac Toe 2 - Syntax: $rand(A,C) $+ $rand(1,3) etc - }
}
alias t3.altturn if ( %t3.turn == 1 ) { set %t3.turn 2 } | elseif ( %t3.turn == 2 ) { set %t3.turn 1 }
alias t3.thistok if ( %t3.turn == 1 ) { return %t3i.mark1 } | elseif ( %t3.turn == 2 ) { return %t3i.mark2 }
alias t3.check {
set %t3.temp @
:checkdown
set %t3.temp $chr($calc( $asc(%t3.temp) + 1 ))
if ( [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 1 ] ] ] ] ] != && [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 1 ] ] ] ] ] == [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 2 ] ] ] ] ] && [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 2 ] ] ] ] ] == [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 3 ] ] ] ] ] ) {
if ( [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 1 ] ] ] ] ] == %t3i.mark1 ) {
if ( %t3.mode == 2up ) { set %t3.winner 1 }
else { set %t3.winner h }
}
elseif ( [ %t3v. [ $+ [ [ %t3.temp ] [ $+ [ 1 ] ] ] ] ] == %t3i.mark2 ) {
if ( %t3.mode == 2up ) { set %t3.winner 2 }
else { set %t3.winner c }
}
set %t3.temp %t3.temp $+ 1, %t3.temp $+ 2 and %t3.temp $+ 3 | t3.endgame
}
if ( %t3.temp != C ) { goto checkdown }
unset %t3.temp
:checkacross
inc %t3.temp
if ( [ %t3v.A [ $+ [ [ %t3.temp ] ] ] ] != && [ %t3v.A [ $+ [ [ %t3.temp ] ] ] ] == [ %t3v.B [ $+ [ [ %t3.temp ] ] ] ] && [ %t3v.B [ $+ [ [ %t3.temp ] ] ] ] == [ %t3v.C [ $+ [ %t3.temp ] ] ] ) {
if ( [ %t3v.A [ $+ [ [ %t3.temp ] ] ] ] == %t3i.mark1 ) {
if ( %t3.mode == 2up ) { set %t3.winner 1 }
else { set %t3.winner h }
}
elseif ( [ %t3v.A [ $+ [ [ %t3.temp ] ] ] ] == %t3i.mark2 ) {
if ( %t3.mode == 2up ) { set %t3.winner 2 }
else { set %t3.winner c }
}
set %t3.temp A $+ %t3.temp $+ , B $+ %t3.temp and C $+ %t3.temp | t3.endgame
}
if ( %t3.temp < 3 ) { goto checkacross }
if ( %t3v.A1 != && %t3v.A1 == %t3v.B2 && %t3v.B2 == %t3v.C3 ) {
if ( %t3v.A1 == %t3i.mark1 ) { | if ( %t3.mode == 2up ) { set %t3.winner 1 } | else { set %t3.winner h } }
elseif ( %t3v.A1 == %t3i.mark2 ) { | if ( %t3.mode == 2up ) { set %t3.winner 2 } | else { set %t3.winner c } }
set %t3.temp A1, B2 and C3 | t3.endgame
}
if ( %t3v.C1 != && %t3v.C1 == %t3v.B2 && %t3v.B2 == %t3v.A3 ) {
if ( %t3v.C1 == %t3i.mark1 ) {
if ( %t3.mode == 2up ) { set %t3.winner 1 }
else { set %t3.winner h }
}
elseif ( %t3v.C1 == %t3i.mark2 ) {
if ( %t3.mode == 2up ) { set %t3.winner 2 }
else { set %t3.winner c }
}
set %t3.temp C1, B2 and A3 | t3.endgame
}
if ( %t3v.A1 != && %t3v.A2 != && %t3v.A3 != && %t3v.B1 != && %t3v.B2 != && %t3v.B3 != && %t3v.C1 != && %t3v.C2 != && %t3v.C3 != ) { set %t3.winner n | set %t3.mode over | t3.endgame }
elseif ( %t3.turn == h || %t3.turn isnum ) { t3.info w }
else { t3.decide }
}
alias t3.endgame {
set %t3.mode over
t3.update
if ( %t3.winner != n ) {
unset %t3p.*
set %t3p.heads Heads
set %t3p.tails Tails
set %t3p.2up 2player
set %t3v. [ $+ [ $left(%t3.temp,2) ] ] $+ [ %t3v. [ $+ [ $left(%t3.temp,2) ] ] ] $+
set %t3v. [ $+ [ $mid(%t3.temp,5,2) ] ] $+ [ %t3v. [ $+ [ $mid(%t3.temp,5,2) ] ] ] $+
set %t3v. [ $+ [ $right(%t3.temp,2) ] ] $+ [ %t3v. [ $+ [ $right(%t3.temp,2) ] ] ] $+
unset %t3.info
t3.update
if ( %t3.winner == h ) { t3.pline @ Tic Tac Toe 2 You win!!! }
elseif ( %t3.winner == c ) { t3.pline @ Tic Tac Toe 2 Computer wins!!! }
elseif ( %t3.winner isnum ) { t3.pline @ Tic Tac Toe 2 Player %t3.winner wins!!! }
t3.pline @ Tic Tac Toe 3 Line on %t3.temp
}
else { t3.pline @ Tic Tac Toe 2 No one wins. }
.timer 1 2 t3.pline @ Tic Tac Toe 4 Another game?
t3.init
t3.clearblocks
halt
}
alias t3.surekill {
set %t3.tmp3 @
unset %t3.tmp4
:a
set %t3.tmp3 $chr($calc( $asc(%t3.tmp3) + 1 ))
set %t3.tmp2 [ %t3v. [ $+ [ [ %t3.tmp3 ] [ $+ [ 1 ] ] ] ] ] $+ [ %t3v. [ $+ [ [ %t3.tmp3 ] [ $+ [ 2 ] ] ] ] ] $+ [ %t3v. [ $+ [ [ %t3.tmp3 ] [ $+ [ 3 ] ] ] ] ]
if ( !isin %t3.tmp2 ) { goto b }
if ( $count(%t3.tmp2,%t3i.mark1) < 2 && $count(%t3.tmp2, %t3i.mark2 ) < 2 ) { goto b }
if ( %t3i.mark1 isin %t3.tmp2 ) { set %t3.tmp4 %t3.tmp3 $+ $pos(%t3.tmp2, ) | goto b }
else { t3.strike %t3.tmp3 $+ $pos(%t3.tmp2, ) }
:b
if ( %t3.tmp3 != C ) { goto a }
unset %t3.tmp3 | :f | inc %t3.tmp3
set %t3.tmp2 [ %t3v.A [ $+ [ %t3.tmp3 ] ] ] $+ [ %t3v.B [ $+ [ %t3.tmp3 ] ] ] $+ [ %t3v.C [ $+ [ %t3.tmp3 ] ] ]
if ( !isin %t3.tmp2 ) { goto g }
if ( $count(%t3.tmp2,%t3i.mark1) < 2 && $count(%t3.tmp2,%t3i.mark2) < 2 ) { | if ( %t3.tmp3 == 3 ) { goto h } | goto f }
if ( %t3i.mark1 isin %t3.tmp2 ) { set %t3.tmp4 $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ %t3.tmp3 | if ( %t3.tmp3 == 3 ) { goto h } | goto f }
else { t3.strike $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ %t3.tmp3 }
:g
if ( %t3.tmp3 != 3 ) { goto f }
:h
set %t3.tmp2 %t3v.A1 $+ %t3v.B2 $+ %t3v.C3
if ( $t3.cond ) { goto p }
if ( %t3i.mark1 isin %t3.tmp2 ) { set %t3.tmp4 $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ $pos(%t3.tmp2, ) }
else { t3.strike $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ $pos(%t3.tmp2, ) }
:p
set %t3.tmp2 %t3v.A3 $+ %t3v.B2 $+ %t3v.C1
if ( $t3.cond ) { goto z }
if ( %t3i.mark1 isin %t3.tmp2 ) { set %t3.tmp4 $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ $calc( 4 - $pos(%t3.tmp2, ) ) }
else { t3.strike $chr($calc( $pos(%t3.tmp2, ) + 64 )) $+ $calc( 4 - $pos(%t3.tmp2, ) ) }
:z
if ( %t3.tmp4 ) { t3.strike %t3.tmp4 }
}
alias t3.trickplay {
unset %t3.temp | :a | inc %t3.temp
set %t3.tmp1 $gettok( A1 A1 A3 A3 C1 C1 C3 C3 ,%t3.temp,32)
set %t3.tmp2 $gettok( B3 C2 B1 C2 A2 B3 A2 B1 ,%t3.temp,32)
set %t3.tmp3 $gettok( A2 B1 A2 B3 A1 B3 B3 C2 ,%t3.temp,32)
set %t3.tmp4 $gettok( A3 C1 A1 C3 B1 C2 A3 C1 ,%t3.temp,32)
set %t3.tmp5 $gettok( C3 C3 C1 C1 A3 A3 A1 A1 ,%t3.temp,32)
set %t3.tmp6 $gettok( A3 C1 A1 C3 A1 C3 A3 C1 ,%t3.temp,32)
if ( [ %t3v. [ $+ [ %t3.tmp1 ] ] ] == %t3i.mark1 && [ %t3v. [ $+ [ %t3.tmp2 ] ] ] == %t3i.mark1 && [ %t3v. [ $+ [ %t3.tmp3 ] ] ] == && [ %t3v. [ $+ [ %t3.tmp4 ] ] ] == && [ %t3v. [ $+ [ %t3.tmp5 ] ] ] == ) { t3.strike %t3.tmp6 }
if ( %t3.temp < 8 ) { goto a }
}
alias t3.cond if ( !isin %t3.tmp2 || ( $count(%t3.tmp2, %t3i.mark1 ) < 2 && $count(%t3.tmp2,%t3i.mark2) < 2 )) { return $true } | else { return $false }
alias t3.randplay {
unset %t3.tem1
if ( %t3v.A1 == ) { set %t3.tem1 %t3.tem1 $+ . $+ A1 }
if ( %t3v.B1 == ) { set %t3.tem1 %t3.tem1 $+ . $+ B1 }
if ( %t3v.C1 == ) { set %t3.tem1 %t3.tem1 $+ . $+ C1 }
if ( %t3v.A2 == ) { set %t3.tem1 %t3.tem1 $+ . $+ A2 }
if ( %t3v.B2 == ) { set %t3.tem1 %t3.tem1 $+ . $+ B2 }
if ( %t3v.C2 == ) { set %t3.tem1 %t3.tem1 $+ . $+ C2 }
if ( %t3v.A3 == ) { set %t3.tem1 %t3.tem1 $+ . $+ A3 }
if ( %t3v.B3 == ) { set %t3.tem1 %t3.tem1 $+ . $+ B3 }
if ( %t3v.C3 == ) { set %t3.tem1 %t3.tem1 $+ . $+ C3 }
t3.strike $gettok(%t3.tem1,$rand(1,$gettok(%t3.tem1,0,46)),46)
}
alias t3.info {
if ($1) {
if ( %t3.turn isnum ) {
set %t3.tem5 $rand(101,103) | goto %t3.tem5
:101 | set %t3.info Player %t3.turn $+ 's turn now… | goto a
:102 | set %t3.info Go for it player %t3.turn $+ … | goto a
:103 | set %t3.info Waiting for player %t3.turn $+ … | goto a
}
else {
set %t3.tem5 $rand(1,3) | goto %t3.tem5
:1 | set %t3.info Your turn to move… | goto a
:2 | set %t3.info It's your turn now… | goto a
:3 | set %t3.info Awaiting your move… | goto a
}
:a | t3.pline @ Tic Tac Toe 4 %t3.info
}
else { unset %t3.info | t3.pline @ Tic Tac Toe 4 }
}
alias t3.rndcor {
unset %t3.temp
if ( %t3v.A1 == ) { set %t3.temp A1 }
if ( %t3v.A3 == ) { set %t3.temp %t3.temp A3 }
if ( %t3v.C1 == ) { set %t3.temp %t3.temp C1 }
if ( %t3v.C3 == ) { set %t3.temp %t3.temp C3 }
if ( %t3.temp ) { t3.strike $gettok(%t3.temp,$rand(1,$gettok(%t3.temp,0,32)),32) ) }
}
alias t3.rndsid {
unset %t3.temp
if ( %t3v.B1 == ) { set %t3.temp B1 }
if ( %t3v.A2 == ) { set %t3.temp %t3.temp A2 }
if ( %t3v.B3 == ) { set %t3.temp %t3.temp B3 }
if ( %t3v.C2 == ) { set %t3.temp %t3.temp C2 }
if ( %t3.temp ) { t3.strike $gettok(%t3.temp,$rand(1,$gettok(%t3.temp,0,32)),32) ) }
}
alias t3.strike if ( $1 != $null && [ %t3v. [ $+ [ $1 ] ] ] == ) { set %t3v. [ $+ [ $1 ] ] %t3i.mark2 | inc %t3.moves | set %t3.turn h | [ unset %t3p. [ $+ [ $1 ] ] ] | t3.update | t3.pline @ Tic Tac Toe 2 I moved to $1 | t3.check | halt }
alias t3.distrike set %t3.temp $rand(1,2) | if ( %t3.temp == 1 ) { t3.strike $1 } | else { t3.strike $2 }
alias t3.decide {
t3.surekill
if ( %t3.adv == them ) {
if ( %t3.moves == 1 ) {
if ( ( %t3v.A1 == %t3i.mark1 ) || ( %t3v.C1 == %t3i.mark1 ) || ( %t3v.A3 == %t3i.mark1 ) || ( %t3v.C3 == %t3i.mark1 ) ) { t3.strike B2 }
if ( %t3v.A2 == %t3i.mark1 || %t3v.B1 == %t3i.mark1 ) { t3.strike A1 } | if ( %t3v.C2 == %t3i.mark1 || %t3v.B3 == %t3i.mark1 ) { t3.strike C1 }
}
if ( %t3.moves == 3 ) {
t3.mcommon
t3.yroad
t3.toway
t3.finala
}
}
else {
if ( %t3.moves == 0 ) { t3.rndcor }
elseif ( %t3.moves == 2 ) {
t3.partner2
t3.opmine2
t3.opblock
}
elseif ( %t3.moves == 4 ) {
t3.partner4
t3.opmine4
}
}
t3.trickplay
t3.rndcor
t3.randplay
}
;=== Circumstance checkers
alias t3.mcommon if ( ( %t3v.b2 == %t3i.mark2 && %t3v.a1 == %t3i.mark1 && %t3v.c3 == %t3i.mark1 ) || ( %t3v.b2 == %t3i.mark2 && %t3v.a3 == %t3i.mark1 && %t3v.c1 == %t3i.mark1 ) ) { t3.rndsid }
alias t3.finala {
unset %t3.temp | :a | inc %t3.temp
set %t3.tmp1 $gettok( A1 C1 A3 C3 ,%t3.temp,32)
set %t3.tmp2 $gettok( A2 B1 A2 B3 ,%t3.temp,32)
set %t3.tmp3 $gettok( B1 C2 B3 C2 ,%t3.temp,32)
if ( [ %t3v. [ $+ [ %t3.tmp1 ] ] ] == %t3i.mark2 && [ %t3v. [ $+ [ %t3.tmp2 ] ] ] == %t3i.mark1 && [ %t3v. [ $+ [ %t3.tmp3 ] ] ] == %t3i.mark1 ) { t3.strike B2 }
if ( %t3.temp < 8 ) { goto a }
}
alias t3.toway {
unset %t3.temp | :a | inc %t3.temp
set %t3.tmp1 $gettok( A1 A2 A1 B1 C1 C2 A3 B3 ,%t3.temp,32)
set %t3.tmp2 $gettok( A2 A3 B1 C1 C2 C3 B3 C3 ,%t3.temp,32)
set %t3.tmp3 $gettok( A3 A1 C1 A1 C3 C1 C3 A3 ,%t3.temp,32)
set %t3.tmp4 $gettok( C3 C1 C3 A3 A3 A1 C1 A1 ,%t3.temp,32)
if ( [ %t3v. [ $+ [ %t3.tmp1 ] ] ] == %t3i.mark1 && [ %t3v. [ $+ [ %t3.tmp2 ] ] ] == %t3i.mark1 && [ %t3v. [ $+ [ %t3.tmp3 ] ] ] == %t3i.mark2 ) { t3.strike %t3.tmp4 }
if ( %t3.temp < 8 ) { goto a }
}
alias t3.yroad if ( ( %t3v.A1 == %t3i.mark1 && %t3v.A3 == %t3i.mark1 ) || ( %t3v.A1 == %t3i.mark1 && %t3v.C1 == %t3i.mark1 ) || ( %t3v.C1 == %t3i.mark1 && %t3v.C3 == %t3i.mark1 ) || ( %t3v.A3 == %t3i.mark1 && %t3v.C3 == %t3i.mark1 ) ) { t3.strike B2 }
alias t3.partner4 if ( ( %t3v.A1 == %t3i.mark2 && %t3v.B1 == %t3i.mark1 && %t3v.C1 == %t3i.mark2 ) || ( %t3v.A1 == %t3i.mark2 && %t3v.A2 == %t3i.mark1 && %t3v.A3 == %t3i.mark2 ) || ( %t3v.A3 == %t3i.mark2 && %t3v.B3 == %t3i.mark1 && %t3v.C3 == %t3i.mark2 ) || ( %t3v.C1 == %t3i.mark2 && %t3v.C2 == %t3i.mark1 && %t3v.C3 == %t3i.mark2 ) ) { t3.strike B2 }
alias t3.partner2 {
unset %t3.temp | :a | inc %t3.temp
set %t3.tmp1 $gettok( A1 C1 A3 C3 ,%t3.temp,32)
set %t3.tmp2 $gettok( B1 B1 A2 C3 ,%t3.temp,32)
set %t3.tmp3 $gettok( A3 C3 C3 C1 ,%t3.temp,32)
set %t3.tmp4 $gettok( A2 C2 B3 C2 ,%t3.temp,32)
set %t3.tmp5 $gettok( C1 A1 A1 A3 ,%t3.temp,32)
if ( [ %t3v. [ $+ [ %t3.tmp1 ] ] ] == %t3i.mark2 ) {
if ( [ %t3v. [ $+ [ %t3.tmp2 ] ] ] == %t3i.mark1 ) {
t3.strike %t3.tmp3
}
if ( [ %t3v. [ $+ [ %t3.tmp4 ] ] ] == %t3i.mark1 ) { t3.strike %t3.tmp5 }
}
if ( %t3.temp < 4 ) { goto a }
}
alias t3.opblock if ( %t3v.A1 == %t3i.mark2 ) { t3.strike C3 } | if ( %t3v.C1 == %t3i.mark2 ) { t3.strike A3 } | if ( %t3v.A3 == %t3i.mark2 ) { t3.strike C1 } | if ( %t3v.C3 == %t3i.mark2 ) { t3.strike A1 }
alias t3.opmine2 if ( %t3v.A1 == %t3i.mark2 && %t3v.C3 == %t3i.mark1 ) || ( %t3v.C1 == %t3i.mark2 && %t3v.A3 == %t3i.mark1 ) || ( %t3v.A3 == %t3i.mark2 && %t3v.C1 == %t3i.mark1 ) || ( %t3v.C3 == %t3i.mark2 && %t3v.A1 == %t3i.mark1 ) { t3.rndcor }
alias t3.opmine4 {
set %t3.tem2 %t3v.A1 $+ %t3v.C1 $+ %t3v.A3 $+ %t3v.C3
if ( [ %t3i.mark2 [ $+ [ %t3i.mark2 ] ] ] isin %t3.tem2 || [ %t3i.mark2 [ $+ [ * [ $+ [ %t3i.mark2 ] ] ] ] ] iswm %t3.tem2 || [ * [ $+ [ %t3i.mark2 [ $+ [ * [ $+ [ %t3i.mark2 ] ] ] ] ] ] ] iswm %t3.tem2 || [ %t3i.mark2 [ $+ [ * [ $+ [ %t3i.mark2 [ $+ [ * ] ] ] ] ] ] ] iswm %t3.tem2 ) {
if ( isin %t3.tem2 ) {
:a
set %t3.temp $rand(A,C)
if ( %t3.temp == B ) { goto a }
:b
set %t3.temp $left(%t3.temp,1) $+ $rand(1,3)
if ( $right(%t3.temp,1) == 2 ) { goto b }
if ( [ %t3v. [ $+ [ %t3.temp ] ] ] != ) { goto a }
t3.strike %t3.temp
}
}
}
alias t3.uninstall {
unset %t3*
unset %t
.timer63 off
window -c @ Tic Tac Toe
echo -s
echo -s 2 Uninstalling Tic Tac Toe...
echo -s 2 Please email zeno@cygnus.uwa.edu.au to tell me what you thought :)
echo -s
.timer 1 1 unload -rs TicTacToe.mrc
}