1. Homepage
  2. Programming
  3. FIT2102 Programming Paradigms - Assignment 1: Functional Reactive Programming

FIT2102 Programming Paradigms - Assignment 1: Functional Reactive Programming

Engage in a Conversation
MonashFIT2102Programming ParadigmsFunctional Reactive ProgrammingGuitar HeroTypescriptRxJS

FIT2102 Programming Paradigms 2024 CourseNana.COM

Assignment 1: Functional Reactive Programming CourseNana.COM

Due Date: Friday, 30 August 2024, 11:55 PM
Weighting: 30% of your final mark for the unit
Interview: During Week 7
Overview: Students will work independently to create a game using Functional Reactive Programming (FRP) techniques. Programs will be implemented in TypeScript and use RxJS Observable streams to handle animation, user interaction, and other similar stream behaviours. The goal is to demonstrate a good understanding of functional programming techniques as explored in the first five weeks of the unit, including written documentation of the design decisions and features. CourseNana.COM

Submission instructions CourseNana.COM

Submit a zipped file named <studentNo>_<name>.zip which extracts to a folder named <studentNo>_<name> CourseNana.COM

  • ●  It must contain all the code for your program along with all the supporting files as well as the report. CourseNana.COM

  • ●  It should include sufficient documentation that we can appreciate everything you have done. CourseNana.COM

  • ●  You also need to include a report describing your design decisions. CourseNana.COM

  • ●  The only external library should be RxJS libraries supplied with the starter CourseNana.COM

    code. CourseNana.COM

    The marking process will look something like this:
    1. Extract
    <studentNo>_<name>.zip
    2. Navigateintothefoldernamed<studentNo>_<name> 3. Executenpminstallandnpmrundev
    4. Openhttp://localhost:5173inabrowser CourseNana.COM

    Please ensure that you test this process before submitting. Any issues during this process will make your marker unhappy, and may result in a deduction in marks. CourseNana.COM

    Late submissions will be penalised at 5% per calendar day, rounded up. Late submissions more than seven days will receive zero marks and no feedback. CourseNana.COM

Make sure the code you submit executes properly. CourseNana.COM

● Do not submit the node_modules or dist folders. CourseNana.COM

Git Instructions CourseNana.COM

We will be using Git for the assignment, however, this will mostly be self directed. There are no requirements on how many commits you need to the repo. However, we do recommend following good practices, and having frequent commits with meaningful commit messages. If any issues arise with academic integrity or submission, this will be used as evidence if you have completed your own work on time, if you have no commits, this will likely make it harder for you to clear yourself of any possible academic integrity issues, so we highly recommend you follow good practices. CourseNana.COM

The assignment uploaded to moodle, will be used for marking, unless there are exceptional circumstances which prevented you from uploading to moodle, at which point, we will be marking the last version committed to Git before the due date. CourseNana.COM

The instructions for the setup are posted on Ed, and follow them to setup the repo and access the skeleton code. CourseNana.COM

Task description CourseNana.COM

In this assignment, we will use the RxJS Observable stream explored from Week 3 to create the classic Guitar Hero game in an SVG canvas. You will be provided with a starter code bundle similar to the applied sessions, including instructions on usage. CourseNana.COM

The image above and the Wikipedia page are meant to give you an idea of the gameplay, but yours needn’t look the same or work in precisely the same way, especially with regard to graphics. Note that only a subset of the features discussed in the link will be part of the requirements. CourseNana.COM

You will also need to write a report, as described below. CourseNana.COM

Requirements CourseNana.COM

The game must be implemented in a good functional reactive programming style to get marks. A subset of the game’s features will be required to get a passing grade. A greater subset of features will be required to get a higher grade. To achieve the maximum marks for this assignment, you will have to use a little creativity and add some non-trivial functionality of your own choice. CourseNana.COM

Minimum requirements CourseNana.COM

All of these requirements must be reasonably executed to achieve a passing grade CourseNana.COM

○ You can use any keys you want to, but this must be documented CourseNana.COM

somewhere easy to find for your marker. CourseNana.COM

Appear heuristically (a simple heuristic will suffice) across all four columns
Notes disappear when they have been played
CourseNana.COM

note is played for the correct duration in which they are played.
If the key press, does not correctly align with a note, it will be played for a
random duration between 0 and 0.5s CourseNana.COM

time a key is pressed
The correct note must be played if the circles align with the bottom row Otherwise, a
random note is played. CourseNana.COM

  • -  Scores must be kept track during the game, for both hitting and missing notes. CourseNana.COM

  • -  The game should end when the song finishes playing. CourseNana.COM

  • -  A short 1-2 page PDF report detailing your design decisions and use of CourseNana.COM

functional programming techniques discussed in the course notes CourseNana.COM

Full Game requirements CourseNana.COM

Meets minimum requirements and has additional features
- If the note is longer than one second, the notes must have tails, where the tail
CourseNana.COM

represents the length of the note. CourseNana.COM

CourseNana.COM

  • -  The user must hold down the correct key for the length of the tail to ensure it is ‘correctly’ played CourseNana.COM

    • ○  The score will update, iff the note is played for the correct duration CourseNana.COM

    • ○  If the player lets go of the key too early, the note stops playing CourseNana.COM

  • -  A score multiplier must be included, starting at 1x and increasing by 0.2 for every 10 consecutive notes hit (e.g., 10 notes = 1.2x, 20 notes = 1.4x), and CourseNana.COM

    resetting to 1x when a note is missed. CourseNana.COM

  • -  Smooth and usable gameplay. CourseNana.COM

  • -  See video for an idea of appropriate gameplay. Note: This is not a full CourseNana.COM

    implementation but is meant to showcase what a game might look like. CourseNana.COM

    Additional requirements CourseNana.COM

    See the Additional Information and How to get a High HD sections. Report CourseNana.COM

    Your report should be 300–600 words in length, plus up to 200 words for each significant additional feature, where you should: CourseNana.COM

  • -  Include basic report formatting headings/paragraphs and diagrams as necessary CourseNana.COM

  • -  Summarise the workings of the code and highlight the interesting parts (don’t just describe what the code does, we can read the source code!) CourseNana.COM

  • -  Give a high level overview of your design decisions and justification CourseNana.COM

  • -  Explain how the code follows FRP style and interesting usage of Observable CourseNana.COM

  • -  How state is managed throughout the game while maintaining purity and CourseNana.COM

    why CourseNana.COM

  • -  Describe the usage of Observable beyond simple input and why CourseNana.COM

  • -  Important: Need to explain why you did things CourseNana.COM

  • -  Do not include screenshots of code unless you have an exceptional CourseNana.COM

    reason CourseNana.COM

  • -  This should be concise and straightforward, you may use dot points CourseNana.COM

    Your marker will be instructed to stop reading if your report is too long, and only mark the first 600 (+200 per feature) words.  CourseNana.COM

Get in Touch with Our Experts

WeChat (微信) WeChat (微信)
Whatsapp WhatsApp
Monash代写,FIT2102代写,Programming Paradigms代写,Functional Reactive Programming代写,Guitar Hero代写,Typescript代写,RxJS代写,Monash代编,FIT2102代编,Programming Paradigms代编,Functional Reactive Programming代编,Guitar Hero代编,Typescript代编,RxJS代编,Monash代考,FIT2102代考,Programming Paradigms代考,Functional Reactive Programming代考,Guitar Hero代考,Typescript代考,RxJS代考,Monashhelp,FIT2102help,Programming Paradigmshelp,Functional Reactive Programminghelp,Guitar Herohelp,Typescripthelp,RxJShelp,Monash作业代写,FIT2102作业代写,Programming Paradigms作业代写,Functional Reactive Programming作业代写,Guitar Hero作业代写,Typescript作业代写,RxJS作业代写,Monash编程代写,FIT2102编程代写,Programming Paradigms编程代写,Functional Reactive Programming编程代写,Guitar Hero编程代写,Typescript编程代写,RxJS编程代写,Monashprogramming help,FIT2102programming help,Programming Paradigmsprogramming help,Functional Reactive Programmingprogramming help,Guitar Heroprogramming help,Typescriptprogramming help,RxJSprogramming help,Monashassignment help,FIT2102assignment help,Programming Paradigmsassignment help,Functional Reactive Programmingassignment help,Guitar Heroassignment help,Typescriptassignment help,RxJSassignment help,Monashsolution,FIT2102solution,Programming Paradigmssolution,Functional Reactive Programmingsolution,Guitar Herosolution,Typescriptsolution,RxJSsolution,