MultiplayerAdventureGame
Abdur Sher
May 2, 2014
Overview
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.
Screenshot

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 google.group 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.
Innovation
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. https://groups.google.com/forum/#!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.