# Introduction

It's time to get your hands dirty with some OOP. For this project, you will be helping us write an adventure game where you create people, places, things, and then make them interact.

This project is designed to be done by two partners working in parallel, then combining your results into one finished product. Hereafter the two partners are called Person A and Person B. You will hand in one combined and finished project for your group.

The project begins with two exercises that both partners should do; these exercises do not require new programming, but rather familiarize you with the overall structure of the program as we've provided it. After that, each partner has separate exercises. There is one final exercise for everyone that requires the two partners' work to be combined. (Therefore, you should probably keep notes about all of the procedures that you've modified during the project, so you can notice the ones that both partners modified independently.)

This is a long project, and you should pace yourself accordingly. Once you finish all of the exercises for the entire project, your group should make one submission, including your modified adv.scm program with the modifications highlighted, and a transcript of the testing of your work. You MUST indicate at the top of your adv.scm file which of you is Partner A and which is Partner B. Make this is very prominent and easy to find!

## Scoring

Each partner works on nine problems. Three of these (numbers 1, 2, and 9) are common to the two partners; the others are separate. You hand in a single solution to each problem. Both partners get the points awarded to the group for problems 1, 2, and 9; each partner gets the points for his or her own problems 3 through 8. This means that your score for the project is mostly based on your individual work but also relies partly on the other member of your group. For the first two problems, you could get away with letting your partner do the work, but you shouldn't because those problems are necessary to help you understand the structure of the entire project. Problem 9 requires that both partners have already done their separate work, and meet together to understand each other's solutions, so neither partner will receive credit for it unless both have done their jobs.

If you can't find a partner and/or wish to work alone, please talk to a TA.

## Acknowledgement

This assignment is loosely based on an MIT homework assignment in their version of this course. But since this is Berkeley we've changed it to be politically correct; instead of killing each other, the characters go around eating gourmet food all the time. N.B.: Unless you are a diehard yuppie you may feel that eating gourmet food does not express appropriate sensitivity to the plight of the homeless. But it's a start.

In this laboratory assignment, we will be exploring two key ideas: the simulation of a world in which objects are characterized by a set of state variables, and the use of message passing as a programming technique for modularizing worlds in which objects interact.

## Notes on Working Together

• GitHub: Solid, but long set-up time. Try here for a taste.
• Dropbox: Easy to set-up. Be careful with overwriting your partner's files!
• Google Docs: Easy to set-up. Less likely to overwrite code.
• E-Mail: Nominate one partner. Send all of your code to that partner and they will be the one responsible for merging them together.
• Other: You may use whatever method you like, so long as it promotes academic honesty and successfully shares code among partners.