summaryrefslogtreecommitdiffstats
path: root/fourteen/shared.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'fourteen/shared.rkt')
-rw-r--r--fourteen/shared.rkt156
1 files changed, 0 insertions, 156 deletions
diff --git a/fourteen/shared.rkt b/fourteen/shared.rkt
deleted file mode 100644
index 7f3a549..0000000
--- a/fourteen/shared.rkt
+++ /dev/null
@@ -1,156 +0,0 @@
-#lang racket
-
-;; This module describes the shared vocabulary and knowledge for the server
-;; and client modules of the Hungry Henry game.
-
-(provide ;; type Id
- id? ;; Any -> Boolean : Id
- id=? ;; Id Id -> Boolean
- ;; type GOTO
- ;; type SOTO = Time | Ackn | State | Score
- ;; type Food
- ;; type Feaster
- ;; type Body
- (struct-out player) ;;
- (struct-out body) ;;
- get-score ;; Nat -> Nat
- PLAYER-FATTEN-DELTA
- WIDTH HEIGHT CUPCAKE PLAYER-SIZE
- SCORE GOTO SERIALIZE
- GOTO-LENGTH)
-
-#| -----------------------------------------------------------------------------
-
-;; --- Tasks --------------------------------------------------------------------
-
-The game server keeps track of the entire game state [to avoid cheating by
-lients]. It collects waypoints, moves the avatars on behalf of the clients,
-detects collisions with cupcakes, has avatars eat and grow, and discovers the
-end of the game. As events occur, it informs all clients about all actions and,
-at the end of the game, tallies the scores.
-
-Each client displays the current state of the game as broadcast by the server.
-It also records and sends all mouse clicks to the server.
-
-;; --- Messages and Protocol ---------------------------------------------------
-
-The server and the client exchange messages to inform each other about
-the events in the game.
-
-Client To Server Message:
-------------------------
-
- GOTO = (list GOTO PositiveNumber PositiveNumber)
- represents the coordinates of player's latest waypoint,
- obtained via a mouse click.
- Constraint: in (list GOTO x y), (and (<= 0 x WIDTH) (<= 0 y HEIGHT))
-
-Server to Client Message:
--------------------------
-
- SOTO is one of:
- -- Number ∈ [0,1]
- called a Time message
- repreents the percentage of loading time left
- -- ID
- called an Ackn message
- represents the unique id that the server assigns to the client,
- based on the client's name
- -- (list SERIALIZE [Listof Feaster] [Listof Food])
- called a State message
- represents the complete current state of the game
- -- (list SCORE [Listof (list Id Natural)])
- called a Score message
- informs clients that the game is over and the sizes of each player.
-|#
-;; Shared Data Definitions for Messages
-
-(struct player (id body waypoints) #:prefab)
-(struct body (size loc) #:prefab #:mutable)
-;; Food = Body
-;; Feaster = (player Id Body [Listof Complex])
-;; interpretation:
-;; -- id is the player's id
-;; -- body is the player's size and location
-;; -- loc are the player's waypoints, ordered from first to last
-;; Body = (body PositiveNumber Complex)
-;; interpretation: any 'body' on the playing field, both players and cupcakes
-;; -- the postive number specifies the body's size
-;; -- the complex number represents the body's location
-;; PlayerId = String
-(define id? string?)
-(define id=? string=?)
-
-;; Message ID Constants
-(define SCORE 'score)
-(define SERIALIZE 'state)
-(define GOTO 'goto)
-(define GOTO-LENGTH 3)
-
-#| --- Protocol ----------------------------------------------------------------
-
- Client1 Client2 Server
- | | |
- | register(name1) | [universe protocol]
- |----------------------------->|
- | | |
- | | ID | an identifier message
- |<-----------------------------|
- | | t | percentage of wait time
- |<-----------------------------|
- |<-----------------------------|
- |<-----------------------------|
- | | |
- | | register(name2)
- | |------------->|
- | | |
- | | ID |
- | |<-------------|
- | | t | percentage of wait time
- |<-----------------------------|
- | |<-------------|
- |<-----------------------------|
- | |<-------------|
- | | | <==== end of wait time [clock, players]
- | state msg |
- |<-----------------------------| `(state (,feaster1 ,feaster2) ,foods)
- | |<-------------|
- | | |
- click | GOTO | | `(goto ,x ,y)
- ====> |----------------------------->| new state
- | | |
- | state msg |
- |<-----------------------------| `(state (,feaster1 ,feaster2) ,foods)
- | |<-------------|
- | | |
- | | | move, eat:
- |<-----------------------------| `(state (,feaster1 ,feaster2) ,foods)
- | |<-------------|
- | | |
- | click | GOTO | `(goto ,x ,y)
- | ====> |------------->|
- | | |
- | state msg |
- |<-----------------------------| `(state (,feaster1 ,feaster2) ,foods)
- | |<-------------|
- | | |
- | score msg | all food is eaten:
- |<-----------------------------| `(score ((,id ,score) ...))
- | |<-------------|
- | | |
- --- --- ---
-
-|#
-
-;; Shared Logical Constants
-(define WIDTH 1000)
-(define HEIGHT 700)
-(define CUPCAKE 15)
-(define PLAYER-SIZE (* 3 CUPCAKE))
-(define PLAYER-FATTEN-DELTA 5)
-
-;; Number -> Number ;; move to serer
-;; gets aplayers score given its fatness
-(define (get-score f)
- (/ (- f PLAYER-SIZE) PLAYER-FATTEN-DELTA))
-