代写SWEN20003、代做Java,c++编程

2023-09-20 代写SWEN20003、代做Java,c++编程
SWEN20003 Object Oriented Software Development Project 2, 2023The University of MelbourneSchool of Computing and Information SystemsSWEN20003 Object Oriented Software DevelopmentProject 2, Semester 2, 2023Released: Friday, 8th September 2023 at 4:30pm AESTProject 2A Due: Wednesday, 20th September 2023 at 4:30pm AESTProject 2B Due: Friday, 13th October 2023 at 4:30pm AEDTPlease read the complete specification before starting on the project, because thereare important instructions through to the end!OverviewIn this project, you will create a music arcade game called ShadowDance in the Java programminglanguage, continuing from your work in Project 1. We will provide a full working solution forProject 1; you may use all or part of it, provided you add a comment explaining where you foundthe code at the top of each file that uses the sample code.This is an individual project. You may discuss it with other students, but all of the implementation must be your own work. By submitting the project you declare that you understandthe University’s policy on academic integrity and are aware of consequences of any infringement,including the use of artificial intelligence.You may use any platform and tools you wish to develop the game, but we recommend using IntelliJIDEA for Java development as this is what we will support in class.Extensions & late submissions: If you need an extension for the project, please complete theExtension form in the Projects module on Canvas. Make sure you explain your situation withsome supporting documentation such as a medical certificate, academic adjustment plan, weddinginvitation, etc. You will receive an email saying if the extension was approved or if we need moreinformation.If you submit late (either with or without an extension), please complete the Late form in theProjects module on Canvas. For both forms, you need to be logged in using your universityaccount. Please do not email any of the teaching team regarding extensions or late submissions.All of this is explained again in more detail at the end of this specification.There are two parts to this project, with different submission dates. The first task, Project2A, requires that you produce a class design demonstrating how you plan to implement the game.This should be submitted in the form of a UML diagram showing all the classes you plan to implement, the relationships (e.g. inheritance and associations) between them, and their attributes,as well as their primary public methods. You do not need to show constructors, getters/setters,dependency, composition or aggregation relationships. If you so choose, you may show the relationship on a separate page to the class members in the interest of neatness, but you must use correctUML notation. Please submit as a PDF file only on Canvas.1SWEN20003 Object Oriented Software Development Project 2, 2023The second task, Project 2B, is to complete the implementation of the game as described in therest of this specification. You do not need to strictly follow your class design from Project 2A;you will likely find ways to improve the design as you implement it. Submission will be via GitLaband you must make at least 5 commits throughout your project.Game Overview‘The aim is simple : the player has to hit the corresponding musical notes that appear on screenin different lanes on time to score points. To win each level, you need to beat a target score. Thesecond level features a special lane that has special notes such as bomb, speed up, slow downand double score. The third level includes enemies who try to steal notes from the lanes and aguardian who will shoot projectiles at these enemies when a key is pressed. Can you beat thetarget scores and win the game?”The game features three levels : Level 1, Level 2 and Level 3. In Level 1, the notes will descend from the top vertically in the 4 lanes. The player has to press the corresponding arrow keywhen the note overlaps with the stationary note symbol at the bottom. The accuracy of how closethe note was to the stationary note when the key was pressed, will determine the points given.There will be hold notes that require the player to hold down the key. To finish the level, theplayer needs to beat the target score of 150 when all the notes have fallen. If the player’s score islower, the game ends. You have already implemented Level 1 in Project 1 (the only change requiredis to the start/end screens which is explained later).Level 2 features the same game-play as above but the player now has to deal with additional featuressuch as a special lane that has special notes. Similar to a normal note, if the corresponding key ispressed for the special note, its effect is applied (this is explained in detail later). To win the level,the player must beat a score of 400.Level 3 is the final level. It includes all of the above as well as extra features such as enemies anda guardian. An enemy moves horizontally and it will steal notes from nearby lanes by collidingwith them. The guardian will shoot projectiles at the nearest enemy when the corresponding keyis pressed. To win the level, the player must beat a score of 350.Note that the game does not need to be played progressively. You can choose which level to playfrom the start screen and also at the end of each level.An Important NoteBefore you attempt the project or ask any questions about it on the discussion forum, it is crucialthat you read through this entire document thoroughly and carefully. We’ve covered every detailbelow as best we can without making the document longer than it needs to be. Thus, if there isany detail about the game you feel was unclear, try referring back to this project spec first, as itcan be easy to miss some things in a document of this size. And if your question is more to do onhow a feature should be implemented, first ask yourself: ‘How can I implement this in a way that2SWEN20003 Object Oriented Software Development Project 2, 2023both satisfies the description given, and helps make the game easy and fun to play?’ Moreoften than not, the answer you come up with will be the answer we would give you!Figure 1: Start Screen Screenshot(a) Completed Level 2 Screenshot (b) Completed Level 3 ScreenshotFigure 2: Level ScreenshotsNote : the actual positions of the entities in the levels we provide you may not be the same as inthese screenshots.3SWEN20003 Object Oriented Software Development Project 2, 2023The Game EngineThe Basic Academic Game Engine Library (Bagel) is a game engine that you will use to developyour game. You can find the documentation for Bagel here.CoordinatesEvery coordinate on the screen is described by an (x, y) pair. (0, 0) represents the top-left of thescreen, and coordinates increase towards the bottom-right. Each of these coordinates is called apixel. The Bagel Point class encapsulates this.FramesBagel will refresh the program’s logic at the same refresh rate as your monitor. Each time, thescreen will be cleared to a blank state and all of the graphics are drawn again. Each of these stepsis called a frame. Every time a frame is to be rendered, the update() method in ShadowDance iscalled. It is in this method that you are expected to update the state of the game.Your code will be marked on 120Hz screens. The refresh rate is now typically 120 times persecond (Hz) but some devices might have a lower rate of 60Hz. In this case, when your game isrunning, it may look different to the demo videos as the constant values in this specification havebeen chosen for a refresh rate of 120Hz. For your convenience, when writing and testing your code,you may change these values to make your game playable (these changes are explained later). Ifyou do change the values, remember to change them back to the original specification valuesbefore submitting, as your code will be marked on 120Hz screens.The LevelsOur game will have three levels, each with elements to implement that are described below.Window and BackgroundThe background (background.png) should be rendered on the screen to completely fill up yourwindow throughout the game (for the start screen and all the levels). The default window sizeshould be 1024 * 768 pixels. The background has already been implemented for you in the skeletonpackage.Start ScreenEach level has the same start screen. The screen has a title message that reads SHADOW DANCEshould be rendered in the font provided in res folder (FSO8BITR.ttf), in size 64. The bottom leftcorner of this message should be located at (220, 250).4SWEN20003 Object Oriented Software Development Project 2, 2023Additionally, an instruction message consisting of 4 lines:SELECT LEVELS WITHNUMBER KEYS1 2 3should be rendered below the title message, in the font provided, in size 24. The bottom left ofthe first line in the message should be calculated as follows: the x-coordinate should be increasedby 100 pixels and the y-coordinate should be increased by 190 pixels.There must be adequate spacing between the 4 lines to ensure readability (you can decide onthe value of this spacing yourself, as long as it’s not small enough that the text overlaps or too bigthat it doesn’t fit within the screen). You can align the lines as you wish.The player chooses which level to play by pressing the corresponding key (1, 2 or 3). Once the levelis over, the player will be re-directed back to the start screen. To help when testing your game,you can allow the player to pause the game whilst in a level (i.e. everything in the window willstop moving) by pressing the Tab key (this is not assessed but will help you when coding!)World FileThe lanes and the notes will be defined in a world file, describing the type and their position ortime of appearance in the window. The world files for each level are level1.csv, level2.csv andlevel3.csv correspondingly. (For 60Hz screens, use the corresponding ‘-60” file, i.e. for Level 1use level1-60.csv). A world file is a comma-separated value (CSV) file with rows in one of thefollowing formats:Lane, type of lane, x-coordinate(or)Type of lane, type of note, frame-numberAn example of a world file:Lane,Special,200Lane,Right,742Down,Normal,776Down,Hold,1357Special,DoubleScore,2370The type of lane refers to either the arrow key which it corresponds to or if it is a special lane,for example: the first entry in the above example is for the lane corresponding to the special lane.The type of note refers to whether the note is normal, a hold note or a special note, and theframe number is the frame in which the note starts appearing on screen. For example, the lastentry in the above example refers to a special note of the double score type that appears from the2370th frame onwards in the special lane.5SWEN20003 Object Oriented Software Development Project 2, 2023You must actually load the files—copying and pasting the data, for example, is not allowed. Youhave been provided with extra world files to test on (test1.csv, test2.csv, test3.csv). Markingwill be conducted on a hidden different CSV file of the same format. Note: You can assumethat there will always be only one special lane in both Levels 2 and 3, and that there will be amaximum of four normal lanes in each level. The number of notes in the CSV may vary however.End ScreenEach level has the same end screen. The end screen has two messages - a win/loss message andan instruction message.When all the notes in the CSV file have fallen, if the player’s score is higher than the target scorefor that level, this is considered as a win. Hence, the first message is a winning message that readsCLEAR! The x-coordinate of this message should be centered horizontally and the y-coordinate is300. The font size to be used is 64. If the player’s score is less than the target score of the level,this is a loss. In this case, the message reads TRY AGAIN. The coordinates and the font size are thesame as previously mentioned. The target scores for each level are 150, 400 and 350 respectively.The second message on the end screen is an instruction message that reads PRESS SPACE TO RETURNTO LEVEL SELECTION. This should be rendered below the first message. The x-coordinate shouldbe centered horizontally and the y-coordinate is 500. The font size to be used is 24.When the player presses the space key, the start screen should be rendered again as described inthe Start Screen section and the player can choose to play again. The player can terminate thegame window at any point (by pressing the Escape key or by clicking the Exit button) - the windowwill simply close and no message will be shown.Hint: The drawString() method in the Font class uses the given coordinates as the bottom left ofthe message. So to center the x-coordinate of the message, you will need to calculate the coordinateusing the Window.getWidth() and Font.getWidth() methods.The Game EntitiesThe following game entities have an associated image (or multiple!) and a starting location (x,y). Remember that all images are drawn from the centre of the image using these coordinates.LaneIn this game, there are four normal lanes for the four arrow keys (left, right, up and down)represented by the images shown on the next page. The (x, y) coordinate of the centre of eachimage is as follows : the x-coordinate is given in the CSV file and the y-coordinate is 384. Theposition of the lane stays constant throughout the game.6SWEN20003 Object Oriented Software Development Project 2, 2023(a) laneLeft.png (b) laneRight.png (c) laneUp.png (d) laneDown.pngFigure 3: The lane images (note that the size has been reduced to fit on the page)A lane can have any number of notes and hold notes. Each lane has a stationary note symbol atthe bottom which is the target. The player needs to press the corresponding arrow key when thefalling note overlaps with the stationary note to score points. The y-coordinate of the centre of thefour stationary notes is 657.Special LaneThis is a special type of lane shown below that features in Level 2 and 3. Only special notes willfall down this lane. The player needs to press the space key when the falling special note overlapswith the stationary symbol at the bottom of the lane, to activate the effect of the special note.Only one special lane will be present in one level. The y-coordinates mentioned in the previoussection are the same for special lanes too.Figure 4: laneSpecial.png7SWEN20003 Object Oriented Software Development Project 2, 2023Note(a) noteLeft.png (b) noteRight.png (c) noteUp.png (d) noteDown.pngFigure 5: The note imagesThere are four types of normal notes for the four arrow keys represented by the above images.Each note will descend vertically from the top of the screen in the corresponding lane, for example:a left note should descend in the left lane and an up note should descend in the up lane. Thestarting (x, y) coordinate of the centre of each note image is as follows : the x-coordinate is thesame as the x-coordinate of the lane it corresponds to and the y-coordinate is 100.Each note moves downwards at a speed of 2 pixels per frame (for 60Hz screens, increase thisvalue to 4). The frame number from which the note starts being drawn on screen is given inthe CSV file. The note will continue to be drawn until either it either leaves the window fromthe bottom of the screen or the player presses the corresponding key for the note (and a score iscalculated as described below).Note ScoringThe score for each key press is calculated based on the accuracy of how close the given note wasto the stationary note symbol in the lane when the key was pressed. When the key is pressed, theabsolute distance in pixels between the y-coordinate of the centre of the falling note and they-coordinate of the centre of the stationary note is calculated. The method to determine the scorefrom this distance is shown below.• If distance <= 15, this is a PERFECT score and receives 10 points• If 15 < distance <= 50, this is a GOOD score and receives 5 points• If 50 < distance <= 100, this is a BAD score and receives -1 points• If 100 < distance <= 200, this is a MISS and receives -5 points.If the note leaves the window from the bottom of the screen without the corresponding key beingpressed, this is considered as a MISS too and receives -5 points.When a score is calculated, the corresponding score message (shown in the list above) must berendered on screen, roughly centered horizontally and vertically. The font size must be set to 40and the message must be rendered for 30 frames (15 frames for 60Hz screens). For example, whenthe score is perfect, the text rendered must be PERFECT.8SWEN20003 Object Oriented Software Development Project 2, 2023Figure 6: ScoreThe player’s current total score must also be rendered on screen. Thescore is rendered in the top left corner of the screen in the format of"SCORE k" where k is the current score. The bottom left corner of thismessage should be located at (35, 35) and the font size should be 30.Hold NoteA hold note is a different type of normal note, where the player has to hold down thecorresponding arrow key for the duration in which the falling hold note overlaps with the stationarynote in the lane. Once again, there are four types of hold notes for the four arrow keys shown inthe figure below.The starting (x, y) coordinate of the centre of each image is as follows : the x-coordinate is thesame as the x-coordinate of the lane it corresponds to and the y-coordinate is 24. The speed isthe same as for a normal note and the frame number is also given in the CSV file.(a) holdNoteLeft.png(b) holdNoteRight.png (c) holdNoteUp.png(d) holdNoteDown.pngFigure 7: The hold note imagesHold Note ScoringFor hold notes, the scoring is calculated in a similar manner but the difference is that two scoresare calculated - first when the hold is started and the second when the hold is released. Hint:To check if a hold has been released, you will find the wasReleased() method in the Input classhelpful.9SWEN20003 Object Oriented Software Development Project 2, 2023When the hold starts, the y-coordinate at the bottom of the image of the holding note needs to beused to calculate the distance (instead of the centre of the image like in a normal note). Likewisewhen the hold is released, the y-coordinate at the top of the image needs to be used. Hint: Tocalculate the y-coordinate at the bottom of the hold note image, add 82 to the centre y-coordinate,and for the y-coordinate at the top of the image, subtract 82.The method of determining the score from the distance is the same as given in the Note Scoringsection (bottom of page 8). If the hold note leaves the window from the bottom of the screenwithout the hold starting, this is considered as a MISS and receives -5 points. If the hold wasreleased at a distance greater than 200 pixels, this is a MISS too.Similar to normal notes, the score messages should also be rendered on screen and the scores fromhold notes, need to be added to the total score too.Special NoteA special note is a special type of normal note that features in Levels 2 and 3. Similar to normalnotes, each note has a starting (x, y) coordinate, where the x-coordinate is the same as thex-coordinate of the lane it corresponds to and the y-coordinate is 100.Instead of a score, each special note has an effect that activates when the key for the lane itcorresponds to is pressed. The distance calculation is simpler than the other notes - if the distancebetween the y-coordinate of the stationary note (at the bottom of the lane) and the y-coordinateof the special note is <= 50, it is considered as activated. When activated, a message is renderedon screen similar to the scoring messages for normal and hold notes. The 4 types of special notesare described below.Double Score NoteFigure 8: note2x.pngThis note can only appear in the special lane and is represented by theimage on the right. The special effect of this note is that all scores aredoubled temporarily. The message to be rendered when activated readsDouble Score. The effect lasts for 480 frames and scoring returns to normal after this elapses.Speed Up NoteFigure 9: noteSpeedUp.pngThis note can only appear in the special lane and is represented by theimage on the left. Its special effect is that the speed of all notes is increased by 1. The message to be rendered when activated reads SpeedUp and 15 points is added to the score. The effect lasts until a slow downnote is activated.10SWEN20003 Object Oriented Software Development Project 2, 2023Slow Down NoteFigure 10: noteSlowDown.pngThis note can only appear in the special lane and is representedby the image on the right. The special effect of this note is thespeed of all notes is decreased by 1. The message to be rendered when activated reads Slow Down and 15 points is added to thescore.Bomb NoteFigure 11: noteBomb.pngThis note can appear in any of the normal lanes or in the speciallane. It is represented by the image on the left. The special effect of this note is that all notes in that lane will be removed fromthe screen. The message to be rendered when activated reads LaneClear.EnemyFigure 12: enemy.pngThe enemy is an entity that appears in Level 3 and is represented bythe image on the right. In Level 3, every 600 frames, an enemy must becreated. At creation, the enemy’s (x, y) coordinates must be chosen asfollows : the x-coordinate must be randomly chosen between 100 and900, the y-coordinate must be randomly chosen between 100 and 500.An enemy can move horizontally at a speed of 1 pixel per frame either in the left direction orright direction, and this must also be chosen randomly at creation.When the enemy’s x-coordinate reaches either 100 or 900, the enemy must start moving in theopposite direction (i.e. the enemy will reverse direction at these coordinates). The enemy’s goal isto steal normal notes from lanes by colliding with them. Collisions are detected as follows: if thedistance between the centre-coordinates of the enemy image and the centre-coordinates of the noteimage is <= 104, this is considered as a collision. If collided with, the note will disappear from thescreen.GuardianFigure 13:guardian.pngThe guardian is an entity that appears in Level 3 and is represented bythe image on the left. The guardian does not move and remains at (800,600) throughout. When the left shift key is pressed, the guardian willfire a projectile at the nearest enemy to its location. The nearest enemyis found by finding the enemy with the closest distance calculated onceagain using the centre of the respective images.11SWEN20003 Object Oriented Software Development Project 2, 2023ProjectileFigure 14: arrow.pngA projectile gets created by the guardian when attacking an enemy and isrendered using the image on the right. A projectile moves at a speed of6 pixels per frame in the direction of the enemy target which is set atcreation. Its image should be rotated in the direction of the enemy.For example, if the guardian is at the coordinate (3,3) and the enemy is at the coordinate (13,8),the projectile should be fired with its image rotated by 0.464 radians. The diagram belowillustrates how this can be calculated (note that the positions given are for explanation and maynot reflect in-game positions).Figure 15: Projectile ExplanationIf the projectile collides with the enemy, the enemy will disappear from the screen. Collisionsare detected as follows: if the distance between the centre-coordinates of the enemy image andthe centre-coordinates of the projectile image is <= 62, this is considered as a collision. If theprojectile reaches the edges of the window without colliding with an enemy, the projectile needs tostop being updated (rendered).Hint: To deal with velocities, you many find it useful to use the Vector2 class in Java. To rotate anImage in Bagel, you can include a DrawOptions parameter in the draw() method. A DrawOptionsinstance allows you to specify detailed options for drawing images, and has a setRotation() methodfor setting the rotation value, measured in radians. You may need to use one of the trigonometricfunctions from Java’s inbuilt Math class to calculate this value. Feel free to round up the value youcalculate as needed, as long as the image’s final rotation looks correct.SoundNote that this section is optional and you will not be assessed on this.If you want to add sound, you may use the same music demo from Project 1. Two new tracks12SWEN20003 Object Oriented Software Development Project 2, 2023(track2.wav and track3.wav) have been provided in the res folder for you to use with Level 2and 3.Your CodeYou must submit a class called ShadowDance that contains a main method that runs the game asprescribed above. You may choose to create as many additional classes as you see fit, keeping inmind the principles of object oriented design discussed so far in the subject. You will be assessedbased on your code running correctly, as well as the effective use of Java concepts. As always insoftware engineering, appropriate comments and variables/method/class names are important.Implementation ChecklistTo get you started, here is a checklist of the game features, with a suggested order for implementingthem (in addition to the features in Project 1):• Implement the new level start screen.• Implement the Level end screen.• Read the Level 2 CSV file.• Implement the special lane and special notes’ behaviour/logic.• Implement Level 2.• Read the Level 3 CSV file.• Implement the enemy, guardian and projectile behaviour/logic.• Implement Level 3.Supplied Package and Getting StartedYou will be given a package called project-2-skeleton.zip that contains the following: (1)Skeleton code for the ShadowDance class to help you get started, stored in the src folder. (2) Allgraphics and fonts that you need to build the game, stored in the res folder. (3). The pom.xmlfile required for Maven. You should use this template exactly how you did for Project 1, that is:1. Unzip it.2. Move the content of the unzipped folder to the local copy of your [username]-project-2]repository.3. Push to Gitlab.4. Check that your push to Gitlab was successful and to the correct place.13SWEN20003 Object Oriented Software Development Project 2, 20235. Launch the template from IntelliJ and begin coding.6. Commit and push your code regularly.Customisation (optional)We want to encourage creativity with this project. We have tried to outline every aspect of thegame design here, but if you wish, you may customise any part of the game, including the graphics,types of actors, behaviour of actors, etc (for example, an easy extension could be to introduce anew level with different entities). You can also add entirely new features. For your customisation,you may use additional libraries (other than Bagel and the Java standard library).However, to be eligible for full marks, you must implement all of the features in the above implementation checklist. Please submit the version without your customisation to [username]-project-2repository, and save your customised version locally or push it to a new branch on your Project 2repository.For those of you with far too much time on your hands, we will hold a competition for the best gameextension or modification, judged by the lecturers and tutors. The winning three will have theirgames shown at the final lecture, and there will be a prize for our favourite. Past modificationshave included drastically increasing the scope of the game, adding jokes and adding polish to thegame, and even introducing networked gameplay.If you would like to enter the competition, please email the head tutor, Tharun Dharmawickremaat dharmawickre@unimelb.edu.au with your username, a short description of the modificationsyou came up with and your game (either a link to the other branch of your repository or a .zip file).You can email Tharun with your completed customised game anytime before Week 12. Note thatcustomisation does not add bonus marks to your project, this is completely for fun. We can’t waitto see what you come up with!Submission and MarkingProject 2APlease submit a .pdf file of your UML diagram for Project 2A via the Project 2A tab in theAssignments section on Canvas.Project 2B - Technical requirements• The program must be written in the Java programming language.• Comments and class names must be in English only.• The program must not depend upon any libraries other than the Java standard library andthe Bagel library (as well as Bagel’s dependencies).• The program must compile fully without errors.14SWEN20003 Object Oriented Software Development Project 2, 2023• For full marks, every public attribute, method and class must have a short, descriptiveJavadoc comment (which will be covered later in the semester).Submission will take place through GitLab. You are to submit to your <username>-project-2repository. At the bare minimum you are expected to follow the structure below. You can createmore files/directories in your repository if you want.username -project-2resresources used for project 2srcShadowDance.javaother Java filesOn 13th October 2023 at 4:30pm, your latest commit will automatically be harvested from GitLab.CommitsYou are free to push to your repository post-deadline, but only the latest commit on or before 13thOctober 2023 4:30pm will be marked. You must make at least 5 commits throughout the development of the project, and they must have meaningful messages (commit messages must match thecode in the commit). If commits are anomalous (e.g. commit message does not match the code,commits with a large amount of code within two commits which are not far apart in time) you riskpenalization.Examples of good, meaningful commit messages:• implemented movement logic• fix the projectile’s collision behaviour• refactored code for cleaner designExamples of bad, unhelpful commit messages:• fesjakhbdjl• yeah easy finished the bomb note• fixed thingzZZZGood Coding StyleGood coding style is a contentious issue; however, we will be marking your code based on thefollowing criteria:• You should not go back and comment your code after the fact. You should be commentingas you go. (Yes, we can tell.)15SWEN20003 Object Oriented Software Development Project 2, 2023• You should be taking care to ensure proper use of visibility modifiers. Unless you have avery good reason for it, all instance variables should be private. (Constants are allowed to bepublic or protected).• Any constant should be defined as a final variable. Don’t use magic numbers!• Think about whether your code is written to be easily extensible via appropriate use of classes.• Make sure each class makes sense as a cohesive whole. A class should have a single well-definedpurpose, and should contain all the data it needs to fulfil this purpose.Extensions and late submissionsIf you need an extension for the project, please complete Extension form in the Projects moduleon Canvas. Make sure you explain your situation with some supporting documentation such as amedical certificate, academic adjustment plan, wedding invitation, etc. You will receive an emailsaying if the extension was approved or if we need more information.The project is due at 4:30pm sharp on Wednesday 20th September 2023 (Project 2A) and onFriday 13th October 2023 (Project 2B). Any submissions received past this time (from 4:30pmonwards) will be considered late unless an extension has been granted. There will be no exceptions.There is a penalty of 1 mark for a late project, plus an additional 1 mark per 24 hours. If yousubmit late (either with or without an extension), please complete the Late form in the Projectsmodule on Canvas. For both forms, you need to be logged in using your university account.Please do not email any of the teaching team regarding extensions or late submissions (as you willbe redirected to the online forms).MarksProject 2 is worth 20 marks out of the total 100 for the subject. You are not required to use anyparticular features of Java. For example, you may decide not to use any interfaces or generic classes.You will be marked based on the effective and appropriate use of the various object-orientedprinciples and tools you have learnt throughout the subject.• Project 2A is worth 8 marks.– Correct UML notation for methods: 2 marks– Correct UML notation for attributes: 2 marks– Correct UML notation for associations: 2 marks– Good breakdown into classes: 1 mark– Appropriate use of inheritance, interfaces and abstract classes/methods: 1 mark• Project 2B (feature implementation) is worth 8 marks.– Correct implementation of start screen and level selection: 0.5 marks– Correct implementation of lanes and special lanes: 0.5 marks16SWEN20003 Object Oriented Software Development Project 2, 2023– Correct implementation of notes and hold notes: 0.5 marks– Correct implementation of each special note’s behaviour (including images, movementand effects): 4 marks– Correct implementation of enemy’s behaviour: 1 mark– Correct implementation of guardian and projectiles: 1 mark– Correct implementation of end screen: 0.5 marks• Coding Style is worth 4 marks.– Delegation: breaking the code down into appropriate classes: 0.5 marks– Use of methods: avoiding repeated code and overly complex methods: 0.5 marks– Cohesion: classes are complete units that contain all their data: 0.5 marks– Coupling: interactions between classes are not overly complex: 0.5 marks– General code style: visibility modifiers, magic numbers, commenting etc.: 1 mark– Use of Javadoc documentation: 1 mark17