Assignment 2: JavaScript
1/6
Assignment 2: JavaScript
100 Points Possible
2024/1/22 to 2024/6/30
Add comment
Details
COMP284 Scripting Languages (2023-24) --
Assignment 2: JavaScript
Your task for this assignment consists of two parts:
1. Develop a JavaScript program that provides the functi onality stated in the Requirements
secti on (htt ps://canvas.liverpool.ac.uk/courses/73095/assignments/265339) below.
2. Make the JavaScript program that you have created accessible and usable via the URL
https://student.csc.liv.ac.uk/~<your user name>/game.html
taking care of the requirements set out in Submission and Setup secti on
(htt ps://canvas.liverpool.ac.uk/courses/73095/assignments/265339) below.
Requirements
The JavaScript program implements a simple game that consists of three stages, setup, play and end.
During the play stage the game proceeds in rounds. The game is played on a grid with 10 x 10 cells.
It involves a spaceship that is controlled by the user, a couple of roboti c spaceships that are
controlled by the computer (that is, your program), asteroids, and (initi ally inacti ve) mines. The user
and your program are the two players of the game. All spaceships can move around on the grid and
the roboti c spaceships hunt the user's spaceship; the user's spaceship tries to avoid getti ng caught
while trying to acti vate all the mines on the grid, possibly destroying some or all the roboti c
spaceships in the process.
The game always starts in the setup stage. During that stage the user is shown the grid and can
place four different types of objects on the cells of the grid:
by clicking on a cell and typing the lett er "a", an asteroid is placed on a cell;
by clicking on a cell and typing the lett er "m", a mine is placed on a cell;
by clicking on a cell and typing the lett er "r", a roboti c spaceship is placed on a cell;
by clicking on a cell and typing the lett er "u", the user's spaceship is placed on a cell.
There is no limit on the number of asteroids, mines, and roboti c spaceships, but there is obviously
only one user's spaceship. No grid cell can initi ally contain more than one object. If the user types a
character that is not among "a", "m", "r" and "u", an error message should be shown.
Assignment 2: JavaScript
2/6
In additi on to the grid, there must be a butt on that allows the user to end the setup stage of the
game. If the user tries to end the setup stage of the game without placing the user's spaceship, then
an error message should be shown and the user remains in the setup stage. Otherwise the game
conti nues with the play stage.
At the start and during the play stage, the user is again shown the grid, initi ally with all the objects
that have been placed on the grid during the setup stage, plus additi onal status informati on: The
number of the round currently played, the number of inacti ve mines on the grid, and the number of
roboti c spaceships on the grid. In additi on, there must be butt on that allows the user to end
the play stage at any ti me.
While in the play stage, the game proceeds in rounds, each round starts with the user's turn
followed by the computer's turn. At the start of a round, the number of the round currently played is
increased by one (the first round has the number 1), and the status informati on shown to the user is
updated.
During his/her turn, the user can att empt to move his/her spaceship horizontally or verti cally on the
grid by typing one of four lett ers:
"a" att empts to move the user's spaceship one grid cell to the left ,
"d" att empts to move the user's spaceship one grid cell to the right,
"w" att empts to move the user's spaceship one grid cell up,
"s" att empts to move the user's spaceship one grid cell down.
If the user types any other character, then an error message should be shown, the user's turn does
not end, and the user has the possibility to type another character. If the att empted move would
result in the user's spaceship ending up outside the grid or on a cell occupied by an asteroid, then
the att empt to move fails, the user's spaceship does not move, an error message should be shown,
the user's turn does not end, and the user has the possibility to type another character. Otherwise,
the att empted move is successful and the user's spaceship changes cells:
If the cell to which the spaceship has moved was previously empty, then nothing special happens
and the user's turn is over.
If the user's spaceship ends up on a grid cell that contains an inacti ve mine, then the mine
is acti vated, the number of inacti ve mines shown in the status informati on is reduced by one. The
mine remains acti vated (and in place) for the remainder of the game. If a roboti c spaceship is on a
cell surrounding an acti vated mine, it is immediately destroyed and the number of roboti c
spaceships shown in the status informati on is changed accordingly. The user's turn is then over.
If the user's spaceship ends up on a grid cell that contains an acti vated mine, then nothing
special happens. The user's spaceship and the mine simply coexist on the cell. The user's turn is
over.
If the user's spaceship ends up on a grid cell that contains a roboti c spaceship, then the user's
spaceship is destroyed, and the game proceeds to the end stage.
During the computer's turn your program att empts to move each of the roboti c spaceships in an
order that allows each to move if at all possible. Unlike the user's spaceship, the roboti c spaceships
Assignment 2: JavaScript
3/6
are not only able to move horizontally and verti cally but also diagonally. Just like the user's
spaceship, each roboti c spaceship only moves at most one cell in a turn.
If the user's spaceship is on a grid cell immediately surrounding a roboti c spaceship, then that
roboti c spaceship must move to the cell occupied by the user's spaceship. If the user's spaceship
is on a cell surrounding an acti vated mine, then both the roboti c spaceship and the user's
spaceship are destroyed. Otherwise only the user's spaceship is destroyed. The status
informati on is updated accordingly and the game proceeds to the end stage.
If the user's spaceship is not on a grid cell immediately surrounding a roboti c spaceship, but one
or more of those grid cells contains an inacti ve mine, then the roboti c spaceship must move to
one of those mines, the mine is removed from the grid, the number of inacti ve mines shown in
the status informati on is reduced by one.
If none of the surrounding grid cells contains the user's spaceship nor an inacti ve mine, then a
roboti c spaceship can move to an arbitrary surrounding cell provided that this move does not
take it to a grid cell that is outside the grid or occupied by an asteroid or by another roboti c
spaceship.
If a roboti c spaceship were to move onto a cell surrounding an acti vated mine, then the roboti c
spaceship is destroyed and the number of roboti c spaceships shown in the status informati on is
reduced by one.
A roboti c spaceship is not allowed to stand sti ll if it can move. However, if a roboti c spaceship
cannot move at all, then the computer should simply proceed to the next roboti c spaceship.
Once an att empt has been made to move each of the roboti c spaceships, the computer's turn and
the current round ends, and the status informati on is updated.
The play stage ends if one of the following conditi ons becomes true:
the user ends the play stage (by pressing the butt on provided for that);
the user's spaceship is destroyed;
at the end of a turn there are no roboti c spaceships left on the grid;
at the end of a turn there are no inacti ve mines left on the grid;
neither the user's spaceship nor any of the roboti c spaceships is able to move.
Once the play stage has ended, the game is in the end stage. In the end stage the program
determines the outcome of the game. The outcome is a win for the user if there are no roboti c
spaceships left on the grid but the user's spaceship has survived; the outcome is a win for the
computer if the user's spaceship has been destroyed and at least one roboti c spaceship has
survived; otherwise, the outcome is a draw. The program should display a message indicati ng the
outcome of the game and then stop. During the end stage the program should not react to any user
input or acti ons.
Additi onal Requirements and Comments:
The bulk of your JavaScript code should be in a JavaScript library called game.js . Before
submitti ng your soluti on, you should create a copy of game.js named game.pretty.js in a
directory other than your public_html directory, say, your home directory. Then make the file
game.js indecipherable for humans using the command
Assignment 2: JavaScript
4/6
uglifyjs-3 $HOME/game.pretty.js --mangle --compress > $HOME/public_html/game.js
Make sure that aft er performing this operati on your game sti ll works. Also make sure that
game.pretty.js can only be read by yourself and is not in your public_html directory.
It is possible that during the setup stage the user does not place any mines on the grid. On
entering the play stage your program should recognise that, immediately proceed to
the end stage, and declare the outcome of the game.
It is also possible that during the setup stage the user does not place any roboti c spaceships on
the grid. On entering the play stage your program should recognise that, immediately proceed to
the end stage, and declare the outcome of the game.
It should be possible for the user to see whether a mine is inacti ve or has been acti vated.
Whether the cells surrounding an acti vated mine are visually disti nct is up to you.
You should carefully analyse in which situati ons the user's spaceship and the roboti c spaceships
might not be able to move in order to correctly end the play stage in such situati ons.
Ideally your program would move the roboti c spaceships in such a way that they increase their
chances of destroying the user's spaceship. This could be done by each roboti c spaceship trying
to decrease the distance to the user's spaceship with each move. But you could also implement a
strategy by which the roboti c killer spaceships try to `encircle' the user's spaceship in order to
increase their chances. They could also `guard' one specific inacti ve mine, knowing that the user
must eventually try to acti vate it.
Also, be aware that the requirement that a roboti c spaceship must move if it can, means that it
might have to move onto a cell surrounding an acti vated mine and be destroyed. But if
alternati ve moves exist, then they should be preferred.
JavaScript engines differ from browser to browser. You should make sure that your system works
in all commonly used browsers (e.g., Google Chrome, Microsoft Edge, Mozilla Firefox) and on all
commonly used platf orms (e.g., Linux derivati ves and Microsoft Windows).
Your JavaScript program should only depend on your own code. The use of JavaScript
libraries/frameworks, like jQuery, is not be used.
Your code should follow the COMP284 Coding Standard
(htt ps://canvas.liverpool.ac.uk/courses/73095/files/10520245?wrap=1) . This includes pointi ng out
which parts of your code have been developed with the help of on-line sources or textbooks and
references for these sources. You must also provide references for any language constructs or
functi ons that you have used that were not covered in the lectures.
A program that deals sati sfactorily with these additi onal requirements and comments, in additi on to
providing the basic functi onality required, will receive higher marks.
Submission and Setup
Make game.html, game.js, and other files (but not game.prett y.js) accessible via the departmental
web server so that the game can be played via the URL given at the beginning of the assignment.
This playable version of the game must remain available, working, and unchanged from the ti me of
submission to the end of July 2024.
Assignment 2: JavaScript
5/6
Permissions of the files in your filestore must be such that no other user can view their contents in
the filestore. The permissions on your public_html directory must be such that any user can obtain a
listi ng of its content.
From the files on the departmental server, create a single zip-file named COMP284-2.zip containing
all relevant files (game.html, game.js, game.prett y.js, any CSS file, and local images, but no
directories) and submit it via the departmental submission system
at htt ps://sam.csc.liv.ac.uk/COMP/Submissions.pl?module=comp284
(htt ps://sam.csc.liv.ac.uk/COMP/Submissions.pl?module=comp284) (COMP284-2: JavaScript).
The files submitt ed must be identi cal to those set up on the departmental web server. Furthermore,
no alterati ons are allowed to the latt er aft er files have been submitt ed. If a submitt ed file and the
corresponding file on the departmental web server have different ti mestamps, then the later
ti
mestamp will be used to determine lateness. This applies even if the earlier file is used for marking.
Deadline
The deadline for this assignment is
Thursday, 25 April 2024, 17:00
Earlier submission is possible, but any submission aft er the deadline att racts the standard lateness
penalti es. Please remember that a strict interpretati on of `lateness' is applied by the Department,
that is, a submission a minute aft er the deadline is considered to be a day late. Also remember that
late resubmissions are not allowed.
Assessment
This assignment will address the following learning outcomes of the module:
Develop computer-based or client-side web-based applicati ons using an appropriate scripti ng
language.
This assignment will contribute 50% to the overall mark of COMP284. Failure on this assignment
may be compensated by higher marks on other assignments for this module.
Marks will be awarded according to the following scheme, assessing the extend to which the
applicati on you have developed by the deadline meets the requirements, has been set up correctly,
and submitt ed correctly:
Submission, Setup, Error-freeness: 10
Quality of the interface design: 10
Correctness and quality of the implementati on of the setup stage: 12
Correctness and quality of the implementati on of the play stage: 46
Correctness and quality of detecti ng the end of the game and of the end stage: 10
Code layout, Comments, References, Quality of code: 12
Assignment 2: JavaScript
6/6
In more detail, the requirements above translate into about 32 criteria that your system must sati sfy.
Marks are given according to the extent to which the system is observed to behave in the expected
way and produces correct results, and, to a lesser extent, how well the code is writt en. Code that has
no observable effect will typically receive no marks.
As stated above, the University policy on late submissions applies to this assignment, as do the
University policy on coursework submission (available
at htt ps://www.liverpool.ac.uk/media/livacuk/tqsd/code-of-practi ce-on?assessment/appendix_Q_cop_assess.pdf (htt ps://www.liverpool.ac.uk/media/livacuk/tqsd/code-of?practi ce-on-assessment/appendix_Q_cop_assess.pdf) ) and the University policy on academic integrity
(available at htt p://www.liv.ac.uk/student-administrati on/student-administrati on-centre/policies?procedures/academic-integrity/ (htt p://www.liv.ac.uk/student-administrati on/student-administrati on?centre/policies-procedures/academic-integrity/) ). You should follow the COMP284 Lab Rules
(htt ps://cgi.csc.liv.ac.uk/~ullrich/COMP284/notes/COMP284LabRules.pdf) to ensure that you do not
breach the latt er policy.
Feedback
You can expect individual feedback for this assignment about three weeks aft er the deadline.
Generic feedback will be provided five days aft er the deadline. No work can be submitt ed more than
5 days aft er the deadline.
请加QQ:99515681 邮箱:99515681@qq.com WX:codinghelp
标签: