; pitch class - represents the playing field. it has 3 properties north ; and south represent the 2 opposite scoring zones and points is a list ; of all valid points within the playing field ( defclass pitch() ( ( nhoops :accessor pitch-nhoops :initarg :nhoops :initform '() ) ( shoops :accessor pitch-shoops :initarg :shoops :initform '() ) ( points :accessor pitch-points :initarg :points :initform '() ) ( midfld :accessor pitch-midfld :initarg :midfld :initform '() ) ( ngzone :accessor pitch-ngzone :initarg :ngzone :initform '() ) ( sgzone :accessor pitch-sgzone :initarg :sgzone :initform '() ) ) ) ; hoop class - the hoop used to score points, each scoring zone contains ; 3 hoops. ( defclass hoop() ( ( location :accessor hoop-location :initarg :location ) ) )