Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

Department of Electronic Engineering

Resit Assessments 2021/22

ELE00041I

Java Programming

1   Task: Flocking Simulation

You are to design and implement a flocking simulation in Java using object-oriented programming techniques and Java libraries that have been introduced in lectures and labs. You must directly use the Canvas and geometry classes developed in your drawing” and geometry” packages from the laboratories – failure to use these will result in an overall mark of zero for the Project Code” component of the assignment. You may add to these classes as appropriate, but any additions should not supersede the original functionality, particularly the method signatures and instance fields. You should also make use of the classes/code developed in the “turtle” package – you should modify these as appropriate for the new task.

 

Figure 1: Flocking birds: the flock seems to be an entity in and of itself but is really a collection of

individuals, each following a set of simple rules.

Your application must simulate flocking behaviour in a two-dimensional world displayed graphically on the computer screen. Every individual in the flock should be able to move around and interact with others by following a set of simple rules that result in emergent flocking behaviour.

Your program must allow for the number of individuals and flocking parameters to be set and/or varied by the user through interacting directly with your application’s graphical interface.

There are three rectangular obstacles on the canvas: size (dx= 150, dy=80) with top-left corner at ( 100,100), size (dx=80, dy=150) with top-left corner at (350,200), size (dx=150, dy=120) with top-left corner at (550,300). These are impervious to any individuals – they cannot move into them or through them. You must implement these obstacles as part of the base specification.

To  achieve  high  marks,  the  project  should  demonstrate  good  object-oriented  design practices, such as inheritance and polymorphism, along with modular well-written code with good documentation and a well written and well-structured report.

To achieve high marks the program should be extended to include other complexities, such as control over simulation speed, obstacles, collision detection or other types of individuals for the flock to interact with (perhaps add predators into the simulation from which prey flee). However, a simple program that works is better than an unfinished, overly ambitious attempt that does not compile or execute correctly.

2   Academic Misconduct

This is an individual assignment – you MUST work on the program and report on your own. You are welcome to consult any sources of information you can find if you provide appropriate reference and attribution to the authors. If you use code written by anybody else (including your lecturers) you must make it clear which part is yours and which has been written by the other person. You should make this clear both in your report and in the code, itself.

Wholesale copying or reworking of large code chunks or a complete program written by someone else is not acceptable.

If the rules on what constitutes correct academic conduct are not clear, please consult the University guide on Academic Misconduct here:

https://www.york.ac.uk/students/studying/assessment-and-examination/academic-misconduct/

3   Submission

You are to write your program in standard Java, version 11 and it must compile and execute correctly

on the departmental laboratory computers using the Java command line tools or Eclipse. Submission will be via the VLE in two parts:

1.   Individual Report: a PDF report of maximum eight A4 pages in length. Anything beyond the limit will not be considered. A title page is not required but , if included, will not count towards the limit.

2.   Project Code: A zip file containing:

−   The Java source code for your program (fully commented and properly indented).

−   A simple text file named README.txt that explains which source files should be compiled and the entry point used to run your final program.

PLEASE NOTE: Anonymised marking - use your exam number only

Marking will be done anonymously so DO NOT put your name on or in any of the submission parts. Instead, your report, code comments and filenames should identify you using your exam number only.

4   Marking Guidelines

The marks are broken down into the categories below (all marks in percentages). The Project Code will  be  marked  under Object-Oriented  Design”  and  Program  Implementation”, the  Individual Report will be marked under “Report” .

Appropriate Object-Oriented Design Practices                                                          (30)

Use of multiple classes                                                                                                      6

Use of composition within your classes                                                                             4

Use of inheritance within your class structure                                                                   4

Use of polymorphism when referring to your objects                                                        4

Use of interfaces within your class structure                                                                     4

Use of inner and/or anonymous classes                                                                           4

Use of public, private and protected                                                                                  4

Program Implementation                                                                                              (35)

Compiles, executes and runs without error                                                                       5

Execution (how well does the actual program work)                                                         6

Completeness (how complete is the submitted program, how functional)                        4

Modular, non-duplicated code (short, reusable, single-purpose methods)                        4

Program documentation (commenting, formatting, suitable names of variables, etc)       4

Clarity and simplicity of program (good program structure, logical flow)                           4

Extended functionality (going beyond the basic specification)                                          8

Report                                                                                                                             (35)

Explanation of the flocking algorithm you used                                                                 5

Explanation of design                                                                                                       10

Explanation of program implementation                                                                           10

Summary of test procedures and results                                                                           5

Readability and formatting                                                                                                 5