mirror of
https://github.com/PDP-10/its.git
synced 2026-03-20 16:38:16 +00:00
Tic-Tac-Toe game ported to LLOGO
This commit is contained in:
62
src/bh/ttt.logo
Normal file
62
src/bh/ttt.logo
Normal file
@@ -0,0 +1,62 @@
|
||||
;;; Tic-Tac-Toe Game written by Dr. Brian Harvey
|
||||
;;; Adapted to PDP-10/ITS LLOGO by Alexey Slyusar
|
||||
|
||||
;;COMPUTE PROGRAM'S MOVES
|
||||
|
||||
TO PICKMOVE :TRIPLES
|
||||
10 LOCAL 'TRY
|
||||
20 MAKE 'TRY FIND.WIN :ME
|
||||
30 IF NOT EMPTYP :TRY OP :TRY
|
||||
40 MAKE 'TRY FIND.WIN :YOU
|
||||
50 IF NOT EMPTYP :TRY OP :TRY
|
||||
60 MAKE 'TRY FIND.FORK
|
||||
70 IF NOT EMPTYP :TRY OP :TRY
|
||||
80 MAKE 'TRY FIND.ADVANCE
|
||||
90 IF NOT EMPTYP :TRY OP :TRY
|
||||
100 OP FIND [MEMBERP ? (LISTARRAY 'POSITION)] [5 1 3 7 9 2 4 6 8]
|
||||
END
|
||||
|
||||
TO FIND.WIN :WHO
|
||||
10 OP FILTER 'NUMBERP FIND 'WIN.NOWP :TRIPLES
|
||||
END
|
||||
|
||||
TO WIN.NOWP :TRIPLE
|
||||
10 OP EQUALP (FILTER [NOT NUMBERP ?] :TRIPLE) (WORD :WHO :WHO)
|
||||
END
|
||||
|
||||
TO FIND.FORK
|
||||
10 LOCAL 'SINGLES
|
||||
20 MAKE 'SINGLES SINGLES :ME
|
||||
30 IF EMPTYP :SINGLES OP []
|
||||
40 OP REPEATED.NUMBER REDUCE 'WORD :SINGLES
|
||||
END
|
||||
|
||||
TO SINGLES :WHO
|
||||
10 OP FILTER [SINGLEP ? :WHO] :TRIPLES
|
||||
END
|
||||
|
||||
TO SINGLEP :TRIPLE :WOH
|
||||
10 OP EQUALP (FILTER [NOT NUMBERP ?] :TRIPLE) :WHO
|
||||
END
|
||||
|
||||
TO REPEATED.NUMBER :SQUARES
|
||||
10 OP FIND [MEMBER ? ?REST] FILTER 'NUMBERP :SQUARES
|
||||
END
|
||||
|
||||
TO FIND.ADVANCE
|
||||
10 OP BEST.MOVE FILTER 'NUMBERP FIND [SINGLEP ? :ME] :TRIPLES
|
||||
END
|
||||
|
||||
TO BEST.MOVE :MY.SINGLE
|
||||
10 LOCAL 'YOUR.SINGLES
|
||||
20 IF EMPTYP :MY.SINGLE OP []
|
||||
30 MAKE 'YOUR.SINGLES SINGLES :YOU
|
||||
40 IF EMPTYP :YOUR.SINGLES OP FIRST :MY.SINGLE
|
||||
50 TEST (COUNT FILTER [? = FIRST :MY.SINGLE] REDUCE 'WORD :YOUR.SINGLES) > 1
|
||||
60 OP FIRST :MY.SINGLE
|
||||
70 OP LAST :MY.SINGLE
|
||||
END
|
||||
|
||||
TO MAKE.TRIPLES
|
||||
10 OP MAP 'SUBSTITUTE.TRIPE [123 456 789 147 258 369 159 357]
|
||||
END
|
||||
Reference in New Issue
Block a user