You are not logged in. login register
Game tictactoe_3player
name tictactoe_3player
creator admin
number of roles 3
stylesheet tictactoe_3player/tictactoe_3player.xsl
GDL v1
enabled
matches show matches
statistics show game statistics
description

Game Description

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Tictactoe
;;; from team Informasiosi (TU-Dresden GGP course WS 08/09)
;;; adapted by Stephan Schiffel <stephan.schiffel@gmx.de>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Roles
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (role xplayer)
  (role oplayer)
  (role zplayer)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initial State
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (init (cell 1 1 b))
  (init (cell 1 2 b))
  (init (cell 1 3 b))
  (init (cell 1 4 b))
  (init (cell 1 5 b))
  (init (cell 2 1 b))
  (init (cell 2 2 b))
  (init (cell 2 3 b))
  (init (cell 2 4 b))
  (init (cell 2 5 b))
  (init (cell 3 1 b))
  (init (cell 3 2 b))
  (init (cell 3 3 b))
  (init (cell 3 4 b))
  (init (cell 3 5 b))
  (init (cell 4 1 b))
  (init (cell 4 2 b))
  (init (cell 4 3 b))
  (init (cell 4 4 b))
  (init (cell 4 5 b))
  (init (cell 5 1 b))
  (init (cell 5 2 b))
  (init (cell 5 3 b))
  (init (cell 5 4 b))
  (init (cell 5 5 b))
  (init (control xplayer))

  (succ 1 2)
  (succ 2 3)
  (succ 3 4)
  (succ 4 5)
  (succ 5 1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dynamic Components
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Cell

  (<= (next (cell ?m ?n ?s))
      (does ?p (mark ?m ?n))
      (sign ?p ?s))

  (<= (next (cell ?m ?n ?w))
      (true (cell ?m ?n ?w))
      (distinct ?w b))

  (<= (next (cell ?m ?n b))
      (does ?w (mark ?j ?k))
      (true (cell ?m ?n b))
      (distinct ?n ?k))

  (<= (next (cell ?m ?n b))
      (does ?w (mark ?j ?k))
      (true (cell ?m ?n b))
      (distinct ?m ?j))

  (<= (next (control zplayer))
      (true (control oplayer)))

  (<= (next (control oplayer))
      (true (control xplayer)))

  (<= (next (control xplayer))
      (true (control zplayer)))

  (<= (row ?m ?x)
      (true (cell ?m ?a ?x))
      (succ ?a ?b)
      (true (cell ?m ?b ?x))
      (succ ?b ?c)
      (true (cell ?m ?c ?x))
      (succ ?c ?d)
      (true (cell ?m ?d ?x)))

  (<= (column ?n ?x)
      (true (cell ?a ?n ?x))
      (succ ?a ?b)
      (true (cell ?b ?n ?x))
      (succ ?b ?c)
      (true (cell ?c ?n ?x))
      (succ ?c ?d)
      (true (cell ?d ?n ?x)))

  (<= (diagonal ?x)
      (true (cell ?a ?k ?x))
      (succ ?a ?b)
      (succ ?k ?l)
      (true (cell ?b ?l ?x))
      (succ ?b ?c)
      (succ ?l ?m)
      (true (cell ?c ?m ?x))
      (succ ?c ?d)
      (succ ?m ?n)
      (true (cell ?d ?n ?x)))

  (<= (diagonal ?x)
      (true (cell ?a ?k ?x))
      (succ ?b ?a)
      (succ ?k ?l)
      (true (cell ?b ?l ?x))
      (succ ?c ?b)
      (succ ?l ?m)
      (true (cell ?c ?m ?x))
      (succ ?d ?c)
      (succ ?m ?n)
      (true (cell ?d ?n ?x)))

  (<= (line ?x) (row ?m ?x))
  (<= (line ?x) (column ?m ?x))
  (<= (line ?x) (diagonal ?x))

  (<= (row3 ?m ?x)
      (true (cell ?m ?a ?x))
      (succ ?a ?b)
      (true (cell ?m ?b ?x))
      (succ ?b ?c)
      (true (cell ?m ?c ?x)))

  (<= (column3 ?n ?x)
      (true (cell ?a ?n ?x))
      (succ ?a ?b)
      (true (cell ?b ?n ?x))
      (succ ?b ?c)
      (true (cell ?c ?n ?x)))

  (<= (diagonal3 ?x)
      (true (cell ?a ?k ?x))
      (succ ?a ?b)
      (succ ?k ?l)
      (true (cell ?b ?l ?x))
      (succ ?b ?c)
      (succ ?l ?m)
      (true (cell ?c ?m ?x)))

  (<= (diagonal3 ?x)
      (true (cell ?a ?k ?x))
      (succ ?b ?a)
      (succ ?k ?l)
      (true (cell ?b ?l ?x))
      (succ ?c ?b)
      (succ ?l ?m)
      (true (cell ?c ?m ?x)))
  
  (<= (line3 ?x) (row3 ?m ?x))
  (<= (line3 ?x) (column3 ?m ?x))
  (<= (line3 ?x) (diagonal3 ?x))

  (<= open
      (true (cell ?m ?n b)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (<= (legal ?w (mark ?x ?y))
      (true (cell ?x ?y b))
      (true (control ?w)))

  (<= (legal ?p noop)
      (role ?p)
      (not (true (control ?p))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (<= (goal ?p 100)
      (sign ?p ?s)
      (line ?s))

  (<= (goal ?p 66)
      (role ?p)
      (not (line ?p))
      (line3 ?p))
  
  (<= (goal ?p 33)
      (role ?p)
      (not (line x))
      (not (line o))
      (not (line z))
      (not (line3 ?p)))

  (<= (goal ?p 0)
  	  (role ?p)
      (not (line3 ?p))
  	  (sign ?p1 ?s)
  	  (distinct ?p1 ?p)
  	  (line ?s))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (<= terminal
      (sign ?p ?s)
      (line ?s))

  (<= terminal
      (not open))

(sign xplayer x)
(sign oplayer o)
(sign zplayer z)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

sees_XML(...) rules

(<= (sees_xml random ?t) (true ?t))
(<= (sees_xml ?p ?t) (role ?p) (distinct ?p random) (true ?t))