Implement the engine of game in Java

Assignment Help JAVA Programming
Reference no: EM132303123

Object-Oriented Programming - Java Programming Assignment

In this assignment, solution must be clearly separated into two separate parts, in separate Java packages:

Part 1: (in package boardgame.engine): your Game Engine classes with Unit Tests.

Part 2: (in package boardgame.gui): a JavaFX GUI that allows users to play your game.

Overview -

Your first task is to choose a simple one-player, two-dimensional (2D) board game, and then implement the 'engine' of that game in Java. You should write some unit tests to check that your game logic works correctly.

You second task is to use JavaFX to add a graphical user interface (GUI) to your game, which displays the 2D board and allows the user to play the game. So you must keep the basic game idea fairly simple, and ensure that it is not too hard to add the GUI to it. You MUST use JavaFX, not any other Java GUI libraries.

Learning Objectives -

1. Learn to use object-oriented design (OOD) to design Java programs;

2. Be able to use inheritance and subtyping relationships between classes;

3. Be able to use association or composition relationships between classes;

4. Be able to develop a comprehensive suite of unit tests for the core logic classes of an application (e.g., for the game engine);

5. Build simple graphical user interfaces using JavaFX.

Choice of Game -

Your game needs to be a simple 2D game that uses a discrete 2D grid for the playing board, like a chessboard, a Tetris board, a Crosswords board, or a maze.

You must choose one of the following games:

 1. Car Champ. A puzzle involving moving cars around to escape.

2. Word Grid. Like crosswords, but with a given set of words.

3. Minesweeper. A well-known logic puzzle.

4. Peggy. A bit like draughts/checkers but simpler.

5. Columns. This is like the classic Tetris game, but simpler. Or you could do ColorLines, which is also similar, but you will have to implement a 'path-finding' algorithm to move the balls around.

6. Raku. A color-flipping puzzle.

7. Sokoban. A block-pushing puzzle.

8. Concentration memory game

Or another simple game of your choice, if approved by the course coordinator.

Part 1: Game Engine

1. Set up your Git Repository. When you click on the Blackboard link for this assignment, you will automatically create your own private GitHub repository containing one module with two packages: boardgame.engine and boardgame.gui.

a. Clone this repository onto your computer using IntelliJ.

b. Make sure you also have Java JDK 11 installed on your computer.

2. Check you can run JavaFX. I have set up this project to use the 'Gradle' build tool, which means that it should automatically download and install the necessary JavaFX and JUnit libraries when you build and run the project on each new computer. To get Gradle to build your project: Open the boardgame-gui folder, right-click on build.gradle and do "Import Gradle project". Set the options as follows:

  • Turn on "Use auto-import"
  • Select "Use grade 'wrapper' task configuration
  • Click 'OK'

This should download JavaFX and build your whole project. Then you can right-click on "boardgame-gui/src/main/java/boardgame/gui/RunGame" and do "Run RunGame.main()". You should see a JavaFX GUI pop up with a single button that says 'game coming soon...' Use this RunGame class every time you want to run your GUI.

3. Data Design Decisions: Think carefully about whether each cell in your board should be a primitive value (like a boolean, an integer, or an enum value), or should it be an object? Using objects is more flexible, since it allows you to use Java subtyping to make different cells have different behaviour. But many of the games suggested above do not require the cells to have fancy behaviour, so a primitive value might be sufficient for your game.

4. Implement and Test Your Game Engine: I strongly suggest that you use TDD to develop your unit tests and game engine at the same time, in parallel. Recall: Write a test for each new feature and check that it fails, then implement that feature in your engine classes and rerun the test to check that it now passes. Repeat... You can refactor (rename and reorganise) your code at any stage, if you see a way of making it simpler and more elegant. By the time you have finished implementing your game engine, one (or several) of your tests should be stepping through a complete game from start to end, calling the methods of your engine API and checking the results, including the game win/lose verdict at the end.

5. Class Relationships: To get high marks, your engine needs to include several Java classes, with some association/composition relationships between them, and if possible, some inheritance relationships. Think about where you can best use these Java features.

Part 2: Game GUI

The goal of this stage is to use JavaFX to add an elegant and fully functional GUI to your game so that it can more easily be played on desktop computers. Your GUI should have the following features:

  • event-handling of mouse and/or keyboard events;
  • display of bitmap images (I recommend you use some large images for the background of the whole game or each panel, so that the game looks professional and entertaining);
  • multiple panels, with a main gaming panel to display the game, plus one or more panels around the edges to display game options, score information, and control and help buttons etc.;
  • correct resize behaviour when the user adjusts the main window to different sizes for different devices;
  • a clean separation between the back-end (game engine) and front-end (GUI) classes using different Java package names, as described above;
  • [optional] use of a timer to have ongoing real-time activity in the game (for example, to make the blocks fall in the Columns game).

Start by drawing one or two paper sketches of the GUI you plan to build. Take a photo of each sketch, as you will need to include these in your final report.

Attachment:- Assignment File.rar

Reference no: EM132303123

Questions Cloud

Describe the stage of program implementation : Describe the stage of program implementation in which the evaluation occurred, the informants, the questions asked, and the results.
Why do the economies of countries in places react to prices : What are the adverse effects of the use of these natural resources on populations and why do the economies of countries in places.
Explain the use of simulation in complex decisions : ACC544 Decision Support Tools - Charles Sturt University - How many units are required to earn a target level of profit before tax of $600? What is the margin
Develop a plan to pursue a fieldwork site prior : Describe a plan to incorporate self-care techniques for maintaining personal and professional health. Develop a plan to pursue a fieldwork site prior to Track.
Implement the engine of game in Java : ICT221 Object-Oriented Programming - Java Programming Assignment, University of the Sunshine Coast, Australia. Implement the engine of game in Java
Identify the target markets for each of the chosen brands : Identify the target markets for each of the chosen brands and the differing needs and expectations of these customers. Discuss current strategies each brand.
Describe a high-level timeline that includes key tasks : Describe a high-level timeline that includes key tasks and deadlines. Estimate the project's overall cost and any key staffing and non-staffing resources needed
Write a report on the financial condition of ServiceMaster : Company - ServiceMaster. Write a report on the financial condition of your corporation. The paper should be four to six pages
Develop the skills to master the course competencies : Objectives: This assignment helps you develop the skills to master the following course competencies: Apply theories, models, and practices of global.

Reviews

len2303123

5/10/2019 11:58:32 PM

Subject: Java Programming Assignment (Both Part 1 and Part 2). This is Task 2 of the ICT221 assessment, which is worth 30% of the course. Your solution must be clearly separated into two separate parts. Submission and Marking Criteria - You must submit a single Microsoft Word Report to Blackboard, based on the report template given in the Assessment / Task 2 area on Blackboard. You do NOT need to submit your code, as we already have access to your GitHub repository. You are reminded that your submission must be completely your own individual work, in your own words, and you must correctly reference any external sources that you use in your report, or in your code.

len2303123

5/10/2019 11:58:26 PM

Your submission will be marked using the following criteria: 1. [20%] Game Engine Java code: this will be marked using the following criteria: good OOD of the game engine classes with strong encapsulation of the data fields within classes; correct implementation of association or composition relationships between classes; good use of inheritance and subtype polymorphism; good choice of data structures; adherence to recommended Java coding style (naming conventions, code formatting etc.); and concise elegant code with no duplicated code.

len2303123

5/10/2019 11:58:20 PM

2. [20%] Game Engine JUnit Tests: these tests will be marked according to: how thoroughly they test all the Game Engine classes; and how well they follow correct JUnit naming conventions (eg. tests of mygame.engine.Foo.java should be in the Java source file mygame.engine.FooTest.java). 3. [20%] GUI functionality: this will be marked using the following criteria: a playable and robust game; good use of JavaFX widgets, layout panes, and controls to build an elegant and functional user interface; appropriate use of bitmap images in the GUI; good resize behaviour when the main window is resized; and saving/restoring of games states or high score tables. This will also demonstrate that your textual user interface still works after you have added the GUI.

len2303123

5/10/2019 11:58:14 PM

4. [20%] GUI code: this will be marked using the following criteria: good use of event-driven programming; good OOD of the GUI classes with strong encapsulation of the data fields within classes; good use of inheritance and subtype polymorphism; adherence to recommended Java coding style (naming conventions, code formatting etc.); concise elegant code with no duplicated code; and good use of exception handling to catch and report any I/O or game errors.

len2303123

5/10/2019 11:58:08 PM

5. [20%] Documentation (Report.docx): this should contain four sections: A. Introduction: one paragraph to explain what your game does, how a player can win the game, what features you implemented, etc. B. Your UML diagram: that shows full details of all your game engine classes, plus the GUI classes that you have written. It should also show the main JavaFX classes you have used (just the class name is enough – you do not need to include all their data fields and methods!), and the relationships between them and your classes. You do not need to include your unit testing classes in your UML diagram. GUI sketches: that shows your original ideas for the GUI you plan to build for your game. This should be drawn by hand and then scanned or photographed and inserted into the Microsoft Word document. It just needs to be a rough sketch, possibly with some labels to show the contents of each panel or the function of certain buttons, if that is not obvious. D. Reflection: a brief discussion of what went well in your game development, any difficulties that you encountered, and what you would do differently if you were doing it again.

Write a Review

JAVA Programming Questions & Answers

  Recursive factorial program

Write a class Array that encapsulates an array and provides bounds-checked access. Create a recursive factorial program that prompts the user for an integer N and writes out a series of equations representing the calculation of N!.

  Hunt the wumpus game

Reprot on Hunt the Wumpus Game has Source Code listing, screen captures and UML design here and also, may include Javadoc source here.

  Create a gui interface

Create GUI Interface in java programing with these function: Sort by last name and print all employees info, Sort by job title and print all employees info, Sort by weekly salary and print all employees info, search by job title and print that emp..

  Plot pois on a graph

Write a JAVA program that would get the locations of all the POIs from the file and plot them on a map.

  Write a university grading system in java

University grading system maintains number of tables to store, retrieve and manipulate student marks. Write a JAVA program that would simulate a number of cars.

  Wolves and sheep: design a game

This project is designed a game in java. you choose whether you'd like to write a wolf or a sheep agent. Then, you are assigned to either a "sheep" or a "wolf" team.

  Build a graphical user interface for displaying the image

Build a graphical user interface for displaying the image groups (= cluster) in JMJRST. Design and implement using a Swing interface.

  Determine the day of the week for new year''s day

This assignment contains a java project. Project evaluates the day of the week for New Year's Day.

  Write a java windowed application

Write a Java windowed application to do online quiz on general knowledge and the application also displays the quiz result.

  Input pairs of natural numbers

Java program to input pairs of natural numbers.

  Create classes implement java interface

Interface that contains a generic type. Create two classes that implement this interface.

  Java class, array, link list , generic class

These 14 questions covers java class, Array, link list , generic class.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd