// dot webapp.dot -Tpng -o webapp.png digraph webapp { "Front page" -> "New game" "Front page" -> "Browse existing game" [label="game ID"] email -> "Play in existing game" [label="game ID, player code"] ////////////// // new game // ////////////// "Create game object in DB" [shape="box3d"] "New game" -> "Create game object in DB" [label="player names, emails"] "Create player objects" [shape="box3d"] "Create game object in DB" -> "Create player objects" "Assign players random strings" [shape="box3d"] "Create player objects" -> "Assign players random strings" "Email each player" [shape="note"] "Assign players random strings" -> "Email each player" "Email each player" -> "END" ////////////////////////// // browse existing game // ////////////////////////// "Browse existing game" -> "Is game ID valid?" "Is game ID valid?" -> "game id error" [label="no"] "Is game ID valid?" -> "Show all moves" [label="yes"] "Show all moves" -> "END" /////////////////////////// // play in existing game // /////////////////////////// "Play in existing game" -> "Is playing game ID valid?" "Is playing game ID valid?" -> "game id error" [label="no"] "Is playing game ID valid?" -> "Is player code valid?" [label="yes"] "Is player code valid?" -> "invalid player error" [label="no"] "Is player code valid?" -> "have you joined the game?" [label="yes"] "have you joined the game?" -> "display 'join game yes/no'" [label="no"] "have all players joined?" [shape="box3d"] "save join status to DB" [shape="box3d"] "display 'join game yes/no'" -> "save join status to DB" [label="yes clicked"] "mail others to say you joined" [shape="note"] "save join status to DB" -> "mail others to say you joined" "mail others to say you joined" -> "have all players joined?" "have all players joined?" -> "show game up to now" [label="yes"] "have all players joined?" -> "display 'waiting for X, Y to join'" [label="no"] "display 'join game yes/no'" -> "abandon game" [label="no clicked"] "mail other players to abandon" [shape="note"] "abandon game" -> "mail other players to abandon" "mail other players to abandon" -> "END" "show game up to now" -> "is it your move?" "is it your move?" -> "display 'waiting for N to move'" [label="no"] "is it your move?" -> "display 'valid moves are'" [label="yes"] "save move to DB" [shape="box3d"] "display 'valid moves are'" -> "save move to DB" [label="choose move"] "send email to all players" [shape="note"] "save move to DB" -> "send email to all players" "send email to all players" -> "END" }