Overview of the Assignment
A4 Final Big Picture: With the series of closely connected efforts on simulating a mainly autonomous ecosystem, we’d like to end it with a more open ended iteration that will focus more on active human activities and dynamic environmental variations, so that it will provide you with an opportunity to wield your imagination and creativities while meeting some technical requirements.
Along this line, you have the options to continue to build on top of what you have accomplished as of Assignment 4 Phase 1, or just a portion of it (by removing some of the features achieved so far) if desirable, or even, if you like, start from scratch with a different theme in a different environment.
2.1 Learning objectives for Phase 2
By doing this assignment you will learn how to:
- Create objects using factory pattern
- Add features dynamically using decorator
- Create custom irregular shapes
- Add sound effects to the simulation world
- Handle properly runtime exceptions
- Use packages to organize code properly
- Turn some creative ideas of your own into virtual existence2.2. Requirements
In the final code, the concept should revolve around simulation of a process inside an environment, which is designed cohesively to achieve certain designated goal, which fits well to the theme and the environment. For instance, simulating the process of a human character feeds and grows farm animals while defending them by driving away and/or killing all their predators, or planting in a garden that involves with seedling, watering, fertilizing, growing, fruiting, and harvesting etc.
- The simulation should be rich in application of multimedia, must include graphics and/or images, sound effects, animations and sensible interactions that are appropriate in the environment
- Beyond graphics/images/animations/sounds, you should also provide appropriate text messages wherever appropriate, e.g. instructions for procedures to proceed and feedbacks regarding state changes.I. Application requirements
. 1) The application needs to involve active human activities, which may or may not have a human avatar for taking the actions. In the case of no human avatar, the action will be carried out by way of GUI based interactions (e.g. using buttons for planting related actions). If however it does involve a human character, make it
under keyboard and/or mouse control
- . 2) The environment should incorporate at least two different types of complex shapes chosen among polygons done using GeneralPath*, complex shapes drawn using Perlin noise*, and fractals created using recursion*. Beyond just having them, their sophistication and appropriateness toward the process and environment will be the two major factors for getting more credits in grading (Please refer to III. ECOs below).
- . 3) You need to place a proper imagery (graphic drawing or an image**) into the background that reflects features of the simulated environment, which should have appropriate animations (e.g. sun shining, cloud variations, sea weed waving, bubbling up and popping etc.) and/or variations along timeline (e.g. day/night shifts, seasonal changes, etc. – with potential to win ECO points depends on how well and how meaningful for so doing)
- . 4) You should involve using decorator pattern* to add at least two features to either the environment by user actions e.g. by clicking some buttons on control panel (basic features with little potential for ECO points), or to human/creatures at run time as a result of their mutual interaction (e.g. damaging marks added based on combating activities etc.) (Preferred with good potential for ECO points)
- . 5) Both human and creatures (preys or predators) should (if you haven’t done before) implement micro-animations (e.g. walking by leg alternating, weapon wielding, wing flapping, tail wiggling, …, etc.)
- . 6) You need to change creatures’ (or equivalent characters’ if it’s a new theme) behaviors based on FSM, so that they will behave differently when they are in different states – we expect each of them would have at least two states with more states being appreciated (again with potential for ECO points). E.g. creatures can have two states either hungry or satiated, so that when they are not hungry (satiated), they would take a rest by hanging around a fixed location without hunting for food or bothering human, and will go back to food hunting state once they become hungry again. Use textural display to indicate their different states dynamically that can be turned on and off by pressing d key
- . 7) Add sound effects* to all interactions (e.g. beating, shooting, picking, etc.) in the process and some ambient sound for the environment (e.g. bird singing, cricket twitching, animal howling for forest) that should keep on going till the process terminates
- . 8) The application should have an intro screen that introduces what the app is supposed to do with text and image(s), which has a button for start the process, and an ending screen when the goal is achieved, which, beyond some ending message and image(s), has a restart button that allows the process to relaunch (Hint: use FSM for flow-control)* These topics will be covered gradually in the coming weeks. Stay tuned.
** All images used should be created by yourself using applications e.g. Photoshop, and will be credited with ECO points. Third party images are allowed but won’t be credited.
- . 1) At least 4 named packages (default package is NOT allowed) that group your classes properly and name them descriptively (e.g. main, garden, pond …). Irrelevant naming will be discredited. Naming convention must be followed for packages as well as classes, methods and fields/variables
- . 2) All classes must follow strict encapsulation (use private or protected for access restriction) that provides minimal public interface to clients. Must use inheritance that involves at least one abstract superclass or interface, and at least two cases of inclusion polymorphism: one goes with superclass/interface as parameter for a method, the other with superclass/interface typed ArrayList/Array that mixed objects of at least two subclasses
- . 3) Each class must provide a block comments at the top of the file for a class regarding what the class is about. Provide appropriate inline comments to fields, methods, statements when their meanings are not intuitively clear to readers4) Major objects must be created using factory pattern (for the superclass involved in creating the factory, it’s up to you to decide if you use an abstract class or a non- abstract one for the factory at the super level)
5) Code must be refactored to have NO redundant code between superclasses and subclasses, i.e. subclasses do not repeat any field and/ or method that the superclass
already have (except for method overriding). Do pull-up operation if subclasses possess
fields and/or methods that serve exactly the same functionalities
6) Use try-catch to handle potential runtime exceptions. Please note if a runtime error
occurs at the beginning of launching your program that leads to crash, you will get 0, or lose at least half of the total marks if it occurs in- between of its running.
As an open ended assignment, there will be some credits allocated toward Effort, Creativity, and Originality (ECOs like in IAT-167) for features that go well above the basic requirements as outlined in the requirements above. As a general rule of thumb: the more ECOs you put in, the more credits you’ll earn!
IV. Final Report
Please submit with your code a final report for about 2 pages, which should include the following items.
- A brief introduction to your application’s concept (what it is about), and how to interact with it (i.e. use what keyboard keys or mouse buttons to do what)
- Requirements implemented
o Describe how Application Requirements 2, 3, 4, 6, and Coding
Requirements 4~6 are met in your application
o What ECO features you believe you have done above the basic requirements that deserve you more credits
o List sources of any images, audios, or code that are not created by you
o If any of them are self-created, please specify so. Otherwise list where they are
originally taken from (provide URLs if applicable), and what and/or where they are used in your application
2.3 Tips and Tricks
- Choose an idea, and then create a draft plan for the whole design, which doesn’t need to be perfect but would be refined and tweaked dynamically along the way
- Break the general design into different features and prioritize them for the order of implementation (i.e. which one goes 1st, 2nd, 3rd, , and done by which week … etc.)
- Following the Spiral approach for implementing each of the futures: Design a little (e.g. one object at a time), implement a little, test a little. Repeat like this until reach the final objective
- START NOW
本网站支持淘宝 支付宝 微信支付 paypal等等交易。如果不放心可以用淘宝交易！
E-mail: [email protected] 微信:itcsdx