Abdur Sher
May 2, 2014


This Project is about extending the Adventure Game to Multiplayer Gaming using a TCP connection. I used to be a multiplayer gamer and when I played this adventure game I thought that it would be great if I can play this game with my friends online where we can keep extending the world as we please on the fly and that is exactly what is happening here. I can just give my client code to my friends and they can run it to access my Adventure game using Racket.


Concepts Demonstrated

  • Data abstraction is used to provide access to the world in adventure game to the user using client/TCP connection.
  • Functional programming is used to perform each action like play function in client-code calls proc-line function which reads input and that's when client function is called with input from user as a string argument to this function.
  • Recursions and Iterations are used excessively to keep things in flow.
  • Symbolic representation and strings are used to create better user interaction.
  • Cond Statement uses user input to decide whether game should go in another iteration or exits out.
  • Let and Lambda used to create local variables and local procedures.
  • Type-conversions I had to change types sometimes to process strings and sometimes to send data over TCP.
  • Message-passing to take message from user and send to server which then evaluates it in adventure game and returns the result to user.
  • creating and using of a Namespace in eval function was a new thing for me, thanks to of racket who helped me understand it.

External Technology

  • racket/tcp to create server and client.
  • racket/include to include Adventure Game to my server.


There was a lot of new stuff for me to learn from this project both in field of networking and in scheme itself, such as in scheme I never used eval function before but in this project I had to use it so I learned how to create namespace to work in current environment with eval function.

Technology Used Block Diagram

Additional Remarks

Here I would like to give credits where credits are due.!forum/racket-users This is Racket users Google group who are very active and very cooperative to help newbies like me out :) Also Professor Fred Martin who directed us to the right resources.