联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2019-05-06 11:15

SCC110: Software Development Term 3. Programming Project.

Project Title: Programming Project

Moodle Submission Deadline: 16:00 Friday Week 25

Assessment Mode: IN LAB ASSESSMENT IN YOUR OWN WEEK 25 LAB SESSION

Aims

In this final term of your first year, there is a single programming task - a project that is designed to

bring together many of the programming techniques that you have learned over the year. This

project represents the final piece of practical coursework for SCC110.

You have a choice of which project to undertake, to be selected from the three choices below, and

you need to pick just one of these projects. Read each of them carefully before choosing which

project to undertake. Please note that the projects state which programming language you must use

for that project (either C or Java).

SCC110: Software Development Term 3. Programming Project.

Assessment

This work will be assessed through a practical demonstration and code inspection of your work.

You will be asked to present your work in your Week 25 lab session. Be prepared to take the lead

in demonstrating your project, and to answer questions about it posed by your markers.

- You MUST submit your code to Moodle by the advertised deadline.

- You MUST demonstrate your work IN YOUR OWN LAB SESSION.

- The standard University regulation on permitting late submission of coursework DOES

NOT APPLY TO THIS COURSEWORK ASSIGMENT.

FAILURE TO ADHERE TO THE ABOVE WILL RESULT IN A FAIL MARK (F4) BEING RECORDED.

Marking Scheme

Your work will be marked based on the following four categories. Your final grade will be determined

based on a weighted mean of these grades according to the weighting shown in the table below.

Project Functionality

- See individual project descriptions below for indicative levels of the

functionality required.

50%

Code Structure and Elegance

- Modularity of code

- Use of appropriate data types and libraries

- Use of appropriate language constructs (arrays, loops, functions,

methods, classes)

20%

Code Style

- Appropriate comments, code indentation

- Appropriate name/scope of variables and functions / methods

10%

Project Presentation

- Practical demonstration

- Code review

- Ability to answer questions

10%

Use of GIT version control

- Clean and regular commits

- Appropriate commit messages

10%

In all cases a grade descriptor (A, B, C, D, F) will be used to mark your work in each category. The

following sections provide an indication of the level of functionality expected.

Markers can also recommend the award of a distinction (+) category overall if they feel a piece of

work exhibits clearly outstanding practice. If you feel your work warrants a distinction category, it is

your responsibility to ensure that the marker is made aware of why.

SCC110: Software Development Term 3. Programming Project.

Project Title: Project 1: Missile Command

Language: C

Project Overview:

Computer games are excellent way to practice computational and algorithmic thinking, and stretch

your programming ability, especially in C in this case. The aim of this project is to recreate your

version of an arcade game classic: missile command!

Missile Command was developed in 1980 during the “golden age” of arcade games. The game logic

is simple. The player must defend six cities from missiles raining down from the sky. The missiles can

themselves sub-divide – making it important to intercept the missiles early in their flight path. The

player destroys the missiles by launching their own counter-missiles – of which they have a limited

number. Points are gained by reaching the end of a round with bonus points for intact cities and

unused counter-missiles.

Figure 1: A Screenshot of the Atari version of Missile Command

If you are unfamiliar with the game, you can play a version of it here:

https://my.ign.com/atari/missile-command

Project Requirements:

Your task is to implement a working single player version of a game based on Missile Command. A

fully featured implementation of the game is a lot to ask in the time available, so the game can and

should be simplified to make the problem more tractable. It’s wise to start conservatively with the

basic functionality and add more features should the time be available. Minimally, you should aim to

create a game that should:

- Display a landscape at the bottom of the screen with six cities and one or more missile

bases.

SCC110: Software Development Term 3. Programming Project.

- One or more missiles are launched by the attackers and descend to the bottom the screen.

- The player can control the a cursor that they use to aim their counter-missiles.

- The player can launch a counter missile targetted at the cursor position.

- Collisions between the counter missile and the incoming missile are detected and incoming

missile destroyed.

- Keep score.

- The game can be won/lost (all cities destroyed).

Advanced features (sub-dividing missiles, multiple missile bases, space-ships, increasing speed of

missiles etc.) can be added for more credit as time allows (see the marking scheme).

Getting Started

You’ll need to do some research to learn the rules of operation of the game, and you’ll need to learn

how to use a library of C functions that can assist you in drawing ASCII based graphics to the screen –

the ncurses library. To get started, we recommend that you:

Watch the YouTube video of the game to get an idea of how it works:

https://www.youtube.com/watch?v=nokIGklnBGY

Make notes on the features of the game you can see – what is displayed on the screen and

how does it change as game play unfolds?

Read the introduction to the ncurses library (sections 1-1.3):

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/intro.html

Look back over term 1 and remind yourself of how use the Linux development tools, how to

edit, compile & debug C programs.

Try the ‘hello world’ example: http://tldp.org/HOWTO/NCURSES-ProgrammingHOWTO/helloworld.html

- you’ll need to #include <curses.h> in your C file and

compile using:

‘gcc -o <target> <src>.c -Incurses’

Now try to create a C program that uses the curses library to let you control the position of a symbol

(e.g. ‘*’) on the screen using keyboard input. Tips: lookup mvprintw, getch and timeout in the

man pages/online. See the example in the slides.

SCC110: Software Development Term 3. Programming Project.

Marking Scheme:

Marks will be awarded according to the marking scheme shown at the start of this document. Marks

for the ‘Functionality’ section will be awarded based on individual merit, but the following table

gives an indicative overview of the level of functionality expected for each grade band:

A: Working program that meets the criteria for a B, plus:

- Richer game (demonstrating good design and algorithms) – e.g. sub-dividing

missiles, multiple missile bases, space-ships, increasing speed of missiles,

high-score table etc.

B: Working program that meets the criteria for a C, plus:

- Missiles can be destroyed by counter-missiles

- Scoring reflects counter-missiles left

- Game resets at the end of a level

C: Working program that meets the criteria for a D, plus:

- Counter-missiles can be launched

- Cities are destroyed when hit by a missile

- Score updated when cities are destroyed

- Score displayed on the screen

D: Working program that:

- Basic single player game including:

- Display of landscape, cities etc.

- Incoming missiles descend from the sky

F: No working program demonstrated, or program does not meet any requirements

listed above.

SCC110: Software Development Term 3. Programming Project.

Project Title: Project 2: Graph Modelling and Traversal

Language: Java

Project Overview:

This project is based on the graphs discussed in SCC120 and will give you an excellent opportunity to

explore building different data structures. The process of building these data structures will also aid

in your understanding of both data structures and object orientation. However, it is not

recommended if you don’t take SCC120!

The aim of this project is to build a graph data structure and, using the GameArena classes, visualise

your graphs. New Arrow, Line and Text classes have been added to GameArena for this purpose, so

be sure to get the latest GameArena classes before you get started. You’ll find the latest version in

this git repository: https://github.com/finneyj/GameArena

Once completed, your program should enable users to create multiple different graphs, visualize

them on screen, and traverse the graph.

SCC110: Software Development Term 3. Programming Project.

Project Requirements:

Your task is to implement and visualise a program that can represent a graph. Your program should

both internally reflect the graph’s nodes and arcs and visually display them using the GameArena

classes you saw in Term 2. The design of the object structure for this project is quite important, so

this would be best started with a design on paper. Feel free to discuss your ideas with TAs in the

labs. You should then slowly build your program up. Initially, you will need to:

- Create the classes relevant to representing a graph data structure

- Use GameArena to visualise the relevant elements of the graph, with a Ball representing a

node and a Line representing an arc, and so on.

- Link the visualisation in GameArena with the creation of the relevant graph elements and

ensure that the internal and visual structure are always identical

- Create a textual output that is capable of printing the state of the graph and its components.

For example, each node should display its name and a list of other nodes it is connected to.

With these features in place, you can then progress to more complex elements of the graph

representation. More advanced features include:

- Self-arcs

- Directed graphs, using arrows instead of lines and having a directional component between

nodes

- Two-way arrows

- The ability to visually traverse the graph breadth first, and to print the result

- The ability to visually traverse the graph depth first, and to print the result

SCC110: Software Development Term 3. Programming Project.

Guidance:

To aid in the testing process, we have provided a number of graphs to build in your program, and

ultimately to traverse. You should start by building graph1, which is easier, and slowly work your

way through the others. The nodes do NOT need to match their placement in the diagram, but they

should be equivalent and appropriately labelled.

Graph 1

Graph 2

Graph 3 Graph 4

Graph 5

SCC110: Software Development Term 3. Programming Project.

Marking Scheme:

Marks will be awarded according to the marking scheme shown at the start of this document. Marks

for the ‘Functionality’ section will be awarded based on individual merit, but the following table

gives an indicative overview of the level of functionality expected for each grade band:

A: Working program that meets the criteria for a B, plus:

- Is able to undertake a depth first traversal of Graph 5.

- Is able to undertake a breadth first traversal of Graph 5.

- Can demonstrate the order in which nodes are visited, both visually and

textually to the command line.

B: Working program that meets the criteria for a C, plus:

- Can represent, and visualise a directed graph (example Graph 3)

- Capable of visualising a self-arc on the graph (example Graph 4)

C: Working program that meets the criteria for a D, plus:

- Visual and internal representation of graph are properly linked

- Capable of representing example Graph 2

- Able to print out nodes and their connections

D: Working program that:

- Shows nodes and arcs on the screen and can visualise Graph 1

- Has a sensibly chosen set of classes to represent the graph

F: No working program demonstrated, or program does not meet any requirements

listed above.

SCC110: Software Development Term 3. Programming Project.

Project Title: Project 3: Twooter Client

Language: Java

Project Overview:

Following the global success of the Twitter social media platform, you have recently been recruited

as a Software Engineer for a rival, object-oriented, social media platform called Twooter. The

Twooter executives want you to build the end-user Twooter application. So that the application can

be run on any platform, you’ve been asked to build this using Java and the Swing APIs for graphical

components (or alternatively for the daring, JavaFX).

Once complete, your application will be able to send real messages between you and other students

on the course. Moreover, a single “Twoot” can contain a lot of data, allowing the future possibility of

rich messages, with fonts, emoji, and images! Exactly how you do this is up to you…

SCC110: Software Development Term 3. Programming Project.

Project Requirements:

All the computer networking software necessary to send twoots has already been written by the

Twooter team and has been made available to you as a set of Java classes. Your task is to develop

Java software that uses these classes to create a working application capable of sending and

receiving messages, and more advanced features to improve the user experience. You will find these

classes and associated JavaDoc documentation alongside this specification document on the SCC110

moodle page. Remember to read the API documentation thoroughly!

The Twooter website http://twooter.johnvidler.co.uk/ provides a simple view of the Twooter

service, including the last few messages in the system along with a list of known users. However, it

doesn’t have any way to register users or post messages. This must be down through the application

you create, using the Java classes you have been given.

You have been given these specific requirements:

Your program should have a graphical user interface (GUI) built using either Java Swing or

JavaFX technologies.

Account creation and sign-in should be done via his GUI. Ideally the user experience should

be smooth for creating new users and continuing with a pre-existing user name.

Once signed up, unless the account expires, your application should re-use the same

credentials even when the program is restarted.

Once an account has been created, it needs to be ‘refreshed’ periodically to prevent it

expiring. Your application should do this automatically.

The program should be able to both post and read messages.

There should be a way to retrieve the latest Twoot messages, retrieve the specific user’s

messages, and retrieve messages containing specific #tags.

Your application should connect to the live feed service and reflect the live data on the GUI

interactively.

Some mechanism should be provided to identify and search for messages via #hashtags..

Have some way to see if specific users have posted new things (following users)

Remember this is an individual project exercise, so you must not work in a group on this

project. However, you may collaborate with others to agree on a format to post messages to

the service. The way your application handles the messages and shows them to the user must

be your own work.

SCC110: Software Development Term 3. Programming Project.

Advanced Features:

You are free to implement any advanced GUI features, but just to spark some ideas, here are some

ideas you might want to consider if you want to stretch yourself:

Take advantage of the large message size of Twoots to create a rich media experience.

Twooter supports up to 1MB of text in each message (1048576 bytes!). Consider how this

relatively large amount of data could be used to enable additional features (even non-text)

in your posts.

Perhaps implement some way of ‘replying’ to a Twoot. The service has no existing way of

doing this, but as messages have a unique ID, it is possible to do this in the messages

themselves. Consider, for example, how having [reply:some-other-message-id] in your

messages might work. Naturally, having a user-friendly way to show this in your GUI is also

important here.

Provide an icon (or icons) in the system taskbar that allows the user to get to the application

even after closing all the windows, or notifications on the desktop for new messages from

people the user follows.

Guidance:

The Twooter classes that you have been provided with deal with the network connectivity, and the

JavaDoc for this can be found alongside these classes in the zip file on moodle. The classes are part

of a ‘twooter’ package, so you’ll need to keep the given .class files in a folder called ‘twooter’ (must

be lowercase) in the same place as your own .java files. The file structure should look something like

the following:

SCC110: Software Development Term 3. Programming Project.

Depending on if you’re working on your own computers or the lab machines, you may need to

compile with the additional -cp flag set to the project’s root directory (which tells the compiler

where to find additional classes). You’ll know if you need this if the Java compiler complains about

not being able to find any of the twooter classes. An example of how to use the -cp flag is shown

below. This should be executed in the folder containing your .java files as normal (the

‘TwooterProject’ folder in example above):

javac *.java -cp .

In your own Java classes, you’ll also need to state that you want to be able to use the classes from

the twooter package, so be sure to add the matching import statement to the start of your java files:

import twooter.*;

The Oracle Java SDK documentation includes many examples of Swing usage and describes in detail

how the components work. You might want to pay particular attention to classes such as JList and

ScrollArea for live updates: https://docs.oracle.com/javase/9/docs/api/index.html?overviewsummary.html

If you want to use the more sophisticated JavaFX library, you might want to view the documentation

for the JavaFX classes here: http://www.oracle.com/technetwork/java/javase/overview/javafxoverview-2158620.html

SCC110: Software Development Term 3. Programming Project.

Marking Scheme:

Marks will be awarded according to the marking scheme shown at the start of this document. Marks

for the ‘Functionality’ section will be awarded based on individual merit, but the following table

gives an indicative overview of the level of functionality expected for each grade band:

A: Working program that meets the criteria for a B, plus:

- Additional GUI features (scrolling, animation, desktop interactions, etc.)

- Handles all live feed messages, updating the GUI or data structures as

appropriate

- A working implementation of one or more of the `Advanced Features'

B: Working program that meets the criteria for a C, plus:

- Have some way to see if specific users have posted new things (following

users)

- Connects to the live feed service and reflects the live data on the GUI

interactively

- Provides some mechanism for identifying and searching for #hashtags

C: Working program that meets the criteria for a D, plus:

- Maintains a user token across program restarts

- Refreshes the user's token as required

- Can post multiple messages, and retrieve them by ID

- Maintains a list of known or saved users

D: Working program that:

- Connects to the web service and creates a user

- Is able to post messages

- Is able to read the latest messages

- Has some form of graphical interface

F: No working program demonstrated, or program does not meet any requirements

listed above.


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp