CSE142

Homework #5

Octothorpia or is that "#-ia"?

Electronic turn-in for Part A due: Sunday, May 20, 10:00pm
Paper receipt due in lecture Monday, May 21.

Electronic turn-in for Part B due: Thursday, May 24, 10:00pm
No paper receipt! Grading (by demo) begins Friday, May 25.

The Task  Room Description  Part A Details  Part B Details  Supplied code and files  Your Writeup  Submission  Extras  Changes to GP142  Project Ideas  Announcements


"As you move forward into the dank, dark dungeon, you are greeted by an unpleasant odor. You conclude it is merely the must of the labyrinth and the leavings of the dungeon's denizens. You decide to ignore it and look about. The signs of previous struggles of earlier adventurers leave you with an ominous feeling. Pushing forward, you reach a gigantic oaken door set in a granite archway. The archway is covered with mysterious and cryptic runes, seething with magic. You hesitantly push open the door with the tip of your sword. You're greeted by a...

GP142 application?"


The Task

A MUD (or Multi-User Dungeon) is a multiple-user game that allows each player to run around, navigate mazes, solve puzzles, slay monsters, interact with each other, and generally have fun. Most MUDs are text-based, but some recent ones--like EverQuest, Ultima Online, or The Realm--are graphical.

We're going to make our own MUD. Players will be able to move between areas, interact with rooms, and maybe slay monsters (if someone writes monsters!).

Your job: write the code for a room in the CSE142 MUD.

You'll work in partners again for this assignment (but they must be different partners than HW4!). We're going to put everyone's rooms together in one big MUD and you'll be able to navigate it! The goal of this assignment is for you to put together all you've learned in creating a program you design. Other students will see your finished product, so try to make it kick butt!

Room Description

A room in our MUD is really just an area that you get to create. What defines a room will be its doors and its ability to handle users. Each room must include:

In order to allow the rooms to be put together in one large MUD, we needed to make a few minor changes to GP142. Please carefully read over the GP142 changes. The code that we are providing will compile and run fine on a Windows or XWindows system. Unfortunately, no Macintosh version is currently available! There are plenty of publicly available Windows machines in the IPL, however. The changes to GP142 also allow us to have your code talk to our server. Note: you will be graded on your room individually. You will not be penalized if your room doesn't work well over a network (but you must still adhere to the specification!).

Part A Details

For Part A, you need to extend the sample code. This entails:

Basically, we want your Part A to do the same thing the Part A sample solution does. Check the hw5.c file and scan for TODO's. They should point you on your way to getting Part A finished.

Why you're doing Part A:

Part B Details

Part B requires you to fully implement your room idea. For compatibility with the MUD, each room must:

Those are the nitty-gritty details. The high-level picture is that you'll need to implement your puzzle, and allow the player(s) in your room to play your puzzle. If it makes sense for your particular puzzle, you might also have an option allowing the players to reset your room so they can play the puzzle again from scratch.

Use whatever you'd like from Part A to assist your development of Part B. However, Part B is not a simple extension of Part A as has been the case on previous assignments.

Supplied Code and Files

We are providing a basic framework for Part A of this assignment. The framework has a main event loop, some helper functions, and some TODO markers for part A. You must work from this for Part A, but you're free to do whatever you want (subject to the guidelines above) for Part B!

hw5.exe Self-extracting archive for MSVC.
hw5.c
GP142.c
GP142.h
GP142LIB.h
Files for non-MSVC setups.
Important: You'll need these versions of the GP142 files. They've been modified to include the MUD extensions.

There are a number of acceptable project ideas and some sample solutions on the HW5 ideas page.

Your Writeup

In both parts, your README needs to include the following information:

For Part A:

You will not have to strictly adhere to this description or call graph when you begin programming Part B. Part B will probably evolve into something different once you begin working on it, but hopefully your code will have something to do with the description and/or call graph you turned in with Part A!

For Part B:

Submission

You will only need to turn in one assignment for your team on Part A and one assignment for Part B. Only one person will need to fill out the web submission form, and only one will need to turn in your paper receipt (for Part A only).

Here are the turnin forms:

  • Part A turnin form
  • Part B turnin form
  • Looking for more?

    This project is open-ended enough that you should be able to think of all the enhancements you may desire. Email your TA for suggestions if you'd like more ideas! If you get done and submit a working (if not final) Part B by the Sunday deadline for Part A, we can even include you in the beta version of the MUD!

    Oh, and PS..

    Do you want your room to end up close to someone else's? Or to your whole sections' rooms? Well, no guarantees, but try this: write three haikus describing your experiences in CSE142 this quarter, on HW#5, and your feelings about Dutch's hair. Try to make them as wierd as possible (use bizarre or even made-up words!). Now, have you and everyone you want close to you append your three haikus to your READMEs for Parts A and B. Why would this possibly make any difference? Ask Steve if you're really curious, but be prepared to learn strange and wondrous facts about natural language processing!