Graphic by Keith Ohlfs

CS111, Wellesley College, Spring 2000

Problem Set 1

Due: Friday, February 11 by 4:00 p.m.

[CS111 Home Page] [Syllabus] [Lecture Notes] [Assignments] [Programs] [Documentation] [Software Installation] [FAQ] [CS Dept.] [CWIS]

Reading

About this Problem Set

Download the ps1_programs folder from the download directory on nike. Make your modifications to the Writing.java, Rings.java, and Writing2.java files to solve the 3 problems defined in tasks 1 - 3 below. The problems are intended to give you practice writing simple Java code and to introduce you to using methods. All three problems use the BuggleWorld microworld you have been studying in lecture. Do not attempt to do task 3 until you have learned about methods in lecture!

How to turn in this Problem Set

Save the modified Writing.java, Rings.java, and Writing2.java files in the ps1_programs folder to be turned into your drop folder. Turn in a hardcopy of the modified Writing.java, Rings.java, and Writing2.java files.

Put the ps1_programs folder containing the completed source code into your ps1 drop folder on the cs111 server.

When submitting your hardcopies, we ask that you turn in only one package of materials. Please staple your files together with a cover page, and submit your hardcopy package by placing it in the box outside of Stanzi's office (E106, across from E101).

IMPORTANT NOTES:

  1. Pay careful attention to upper and lower case letters in the filenames.
  2. Once you have used Fetch to upload a file to the cs111 server, you should be sure to doublecheck that the file was actually uploaded. You can do this in Fetch by verifying that the file is now listed in your directory. Not only should you check that the file is listed, but you should check that it does not have a size of 0K. If the file isn't listed or if the size for the document is 0K, this means that there was an error in transferring it via Fetch and you must re-upload the document. When transferring a folder, you should check that its contents have been uploaded correctly. That is, you should be sure to check that every single file that you wish to submit has been uploaded correctly. Often times, although not always, you will see a message "Connection Failed" when there is an error in transferring your files.
  3. It is your responsibility to keep a personal back-up of every file that you submit electronically until you have received a grade for the assignment.

Task 1: Buggle Name Writing

In lecture and lab, we have learned that in BuggleWorld, buggles can be used to make patterns or write letters within a grid. Below, a single buggle has written the name "ELLIE" in multiple colors:

.

Your assignment:

In the ps1_programs folder there is a file, Writing.java, which contains a Java program to create a single buggle ellie. Add code to the run method to write the name "ELLIE" as shown above.

You must conform to the following rules:

  1. You may not invoke the "setPosition" or "setHeading" methods.
  2. You should use the methods "brushUp" and "brushDown" where appropriate.
  3. Each letter should fit in a 3x5 grid, and should be separated from the next letter by one blank space.
  4. Ellie must draw the letters in the appropriate colors (use "setColor" to change colors).
  5. Ellie must end up in the position shown above, facing the correct direction (EAST).

Task 2: The Buggle Olympic Symbol

In BuggleWorld, the buggles regularly hold competitions in which they run the hurdles or traverse obstacle courses. Because they enjoy these competitions so much, they have decided to hold the first Buggle Olympics. To prepare for the big event, they have decided they need an appropriate symbol. They like the idea of interlocking rings, but due to the constraints of BuggleWorld, their rings have to be squares instead of circles. They have designed the following logo for their olympics:

Five buggles--becky, bobby, bertie, billy and benny--have agreed to help out in drawing the rings. becky wants to draw the red ring, bobby the yellow ring, bertie the blue ring, billy the cyan ring and benny the magenta ring. Each would prefer to draw only in one color and not change colors in the middle of their ring. Furthermore, they would prefer not to have to put their brushes up and down while drawing their rings. They have asked you to help them choreograph their movements so that the rings get drawn the correct way, with each ring overlapping the others as shown above.

Your assignment:

The file "Rings.java" contains the initial set-up for drawing the olympic rings. becky, bobby, bertie, billy and benny are all in the appropriate starting position and are the appropriate color. Fill in the java code to move each buggle around a 7 x 7 square, so that the rings overlap each other as shown.

You must conform to the following rules:

  1. You may not invoke setColor, brushUp, brushDown or setPosition methods beyond what is given you in the initial set-up file (i.e. setColor and setPosition are used only once for each buggle). The buggles use only the forward(n) and left() methods.
  2. Each buggle should traverse their square ring only once. They should not revisit any square they have already visited, except for the starting square, which they end on.
  3. Pay careful attention to the color of the squares where the rings intersect. You must get the buggle of the appropriate color to cross these intersections after the other buggle. This means that a buggle may have to stop in the middle of its drawing and wait for another buggle to complete a portion of its ring.

Task 3: Buggle Name Writing using Methods

It is possible to use methods to expand the capabilities of the buggle name writing program from task 1. For example, using a larger grid, but fewer actual lines of code, a buggle can write the name "ELLIE" multiple times, around the perimeter of the grid, as shown below:

Your assignment:

Using methods, create the above grid. The file Writing2.java contains Java code which creates a larger grid and defines a LetterBuggle, a new class of objects which extends the Buggle class. A new LetterBuggle named ellie has also been created for you, along with two LetterBuggle methods; writeName, and writeE, as shown below:


// write the name "ELLIE" around the perimeter of the grid

public void run () {
  LetterBuggle ellie = new LetterBuggle();
  ellie.writeName();

  // add your code here
  // statements which will write the name around the perimeter of the grid

}


class LetterBuggle extends Buggle {

  // write the name "ELLIE", in the appropriately colored letters, by setting the color,
  // and then by invoking methods for writing the individual letters
  public void writeName () {


    this.setColor(Color.red);
    this.writeE();    // write the first "E", in red

    // add your code here
    // statements which will write the "L L I" in the correct colors

    this.setColor(Color.green);
    this.writeE();    // write the last "E", in green

  }


  //write the letter "E"
  public void writeE() {
    this.brushDown();
    this.forward(2);

    // add your code here
    // the rest of the statements for writing an "E"

  }


  // add your code here
  // methods for writing the other letters in the name

}

Perform the following steps to solve the problem:

You must conform to the following rules:

  1. Follow all rules as stated above for task 1.
  2. Use methods to solve the problem.