Academic Honesty

You are expected to work with your guild to develop a complete and playable scenario.

Do not copy code from the Internet or other sources without attribution. You may use helper classes from other sources, such as the instructor or Internet, but must attribute the code to the originator. Copying code snippets from the instructor's lesson examples or textbook without attribution is allowed.

You are encouraged to use the SmoothMover and Vector classes from the textbook.

Within your guild, you are expected to help each other develop code, artwork, music and sound according to your abilities.

However, for the parts of the quest marked "solo" and you must type all the code for your classes and not copy or modify it from another source. You may get help from your guild members if you get stuck. However, you must be able to explain and reproduce all code within your class.

You may get help from people other than your guild members if your guild members cannot help you, but only if they do not show or tell you the code to type. Instead they should show you other examples that you can adapt to your code.

You may get help from people other than your guild members on non-code aspects of the project but must attribute their work.

If you get stuck, take a break and come back to it later, talk to the professor, or ask a classmate for help. Remember, do not allow the classmate to type code for you or show you code to copy. Instead the classmate should show you techniques using other examples that you can adapt.

Guild Specifications

As a guild, create a side-view scenario that throws different projectiles combined from each guild member. The one object you cannot throw is a Cannonball because we used that example in class. Here are a few scenarios with projectiles to help you come up with ideas.

Solo Projectile Requirements

Each guild member creates one or more original projectile classes that subclass SmoothMover and makes use of gravity in the scenario, except for one guild member who creates the world subclass instead.

Use your originality to create a different projectile class. Name your projectile something else than Cannonball or any class we used in the lesson.

For each one of your solo classes, add and fill in a comment block at the top of each file like the following but include your name right after the @author tag, replacing the words Your Name with your first and last name.

Without your first and last name you may not receive any credit for your work.

Each guild member creating projectiles must also create a projectile-end class that ends the projectile motion with some special visual effect. Name this class the same as your projectile class with a suffix of End. For example, a Bird projectile class would have an BirdEnd class as a companion class.

Hint: see lesson 9.3.6: Simple Explosions for an example of this class and how to combine it with the projectile class. Notice that there is no requirement for an explosion. For example, the EndBird could just have a bird walk to the edge of the screen and disappear.

Create at least two constructors for every one of your solo classes: a default constructor and an overloaded constructor. The default constructor should make it easy to see the effects of the class while the constructor with parameters should allow for setting up more varied initial conditions.

Solo World Requirements

One guild member creates a World subclass and its supporting classes instead of a projectile class.

Use your originality to create a different world. Name your world something other than CannonWorld or any class we used in the lesson.

For each one of your solo classes, add and fill in in a comment block at the top of each file like the following but include your name right after the @author tag, replacing the words Your Name with your first and last name.

Without your first and last name you may not receive any credit for your work.

The world subclass must have a public static final Vector object named GRAVITY that is referred to by projectile classes of other guild members.

Please use the specified name exactly as it makes for easier grading. Hint: see an example in lesson 9.3.2.

As part of the scenario, write a support class that throws projectiles (like Cannon). Make sure the object thrower can be aimed and is fired at a correct, visually consistent angle. In the thrower class, restrict the firing rate so that objects are not fired in a continuous stream.

Guild Requirements

All guild members potentially receive the same credit for these specifications unless they have not contributed to the project in a significant way.

As a guild decide which projectiles to fire and who will create the world with supporting classes.

As a guild, make sure the entire project compiles and functions.

All classes have a file comment block with the @author field filled out correctly.

Update the README.TXT file for the scenario (Scenario Information) to:

Provide all the project information like your guild name, project title and version or date like the following example.

Under USER INSTRUCTIONS, list how to throw each projectile.

List all guild members and their solo classes like the following example.

PROJECT TITLE: Animal Shot
PURPOSE OF PROJECT: Throw different projectiles.
VERSION or DATE: MM/DD/20YY
HOW TO START THIS PROJECT: Press run after compiling,
AUTHORS: Your Guild Name
USER INSTRUCTIONS:
Use the up and down cursor keys to change the throwing angle.
Use the left and right cursor keys to move the thrower.
Press B to throw a Bird projectile.
Press H to throw a Hamster Projectile.
Member Classes:
-Ed Parrish classes: ThrowingWorld, Ground, Target, Cannon
-Emma Programmer classes: Bird projectile, EndBird
-Justa Member: Hamster projectile, EndHamster
-Leeroy Jenkins: No classes contributed.

Choose one person in your guild as the "submitter" who will submit the final project from which everyone is graded.

The submitter ensures that all the parts are combined correctly, zips the folder and submits the project into the Q8 quest slot of Canvas as explained in the section of this document: Deliverables.

Crafting Extra Credit

Publish your scenario on the Greenfoot Gallery and include the URL in your README.TXT file. (1 point for each guild member)

Use an array of GreenfootImage objects to store multiple end-projectile images that are displayed in a sequence using the following algorithm. (2 points solo)

Declare an array of images and assign each element a new GreenfootImage object.

Declare a private counting variable to index the array.

In act(), or a method called by act(), increment the counting variable.

In act(), or a method called by act(), call setImage() with an argument of the array indexed by the counting variable

Add an if-statement to decide when to delete the explosion.

Write a method named initializeImages() in the explosion-like-class that uses a loop to initialize the entire array of images for extra credit 2 above when or before the explosion-like end-projectile object is contructed. (2 points solo)

Hint: see how arrays were used in the Piano scenario for white notes (lesson 7.3.4).

Grading Criteria

The instructor will evaluate your assignment using the following criteria. Each criteria represents a specific achievement of your assignment and has a scoring guide. The scoring guide explains the possible scores you can receive.

Some scoring guides have a list of indicators. These indicators are a sign of meeting, or a symptom of not meeting, the specific criterion. Note that a single indicator may not always be reliable or appropriate in a given context. However, as a group, they show the condition of meeting the criterion.

Deliverables

Follow these instructions carefully and exactly to turn in your quest (assignment) to Canvas and maximize your XP:

Choose one person in your guild as the "submitter" who will submit the final project from which everyone is graded.

The submitter ensures that all the parts are combined correctly, zips the folder and submits the project to Canvas.

Do NOT submit solo versions of the project as the last submission by anyone in the guild will be counted as the final version for the entire guild.

As a guild or guild submitter, submit the project following these steps:

Create a folder named "project" (no extra characters) and place the guild's final Scenario Mashup Project into this folder.

Create a zip file containing the project and submit the zip file to the Q9: Gravitational Attraction slot of Canvas.

Please do not put any spaces or special characters like #, : or $ in zip file or folder names. Your assignment must work as submitted. Remember to test and double check your files before submitting them. If you make a mistake, you can resubmit up to the deadline but must resubmit all your assignment files.