csc207-uoft / course-project-circus Goto Github PK
View Code? Open in Web Editor NEWcourse-project-circus created by GitHub Classroom
License: GNU General Public License v3.0
course-project-circus created by GitHub Classroom
License: GNU General Public License v3.0
Since we want the order system to be extensible (i.e. to handle arbitrary orders), we might want to introduce an "order handler" system that is charge of responding to/handling a specific type (or specific types) of orders.
For example, we might have an order handler for PlaceOrder types, and another handler for MoveOrder types. This separation will allow us to have different handling logic for different orders.
Test as much stuff as we can :)
Complete the callback implementation for the "File/Save As" menu option in the Toolbar
class.
Very important for Phase 1 mark!
In real life, the Warehouse would send a robot an order along with a route, and then the robot would move along that path to fulfill the order. Once the Robot fulfilled the order, it would let the Warehouse know that it is available again.
However, since we don't actually have robots and we aren't writing multi threaded code, we need to write a simulator for the robots that moves them every frame along the path. This simulator can then be used in the UI code to display the robots "moving".
Ideally, we should have some sort of abstraction that would allow the "real world" implementation discussed above. This might look like an API that contain some sort of "updateRobotPosition" method, along with some other logic for syncing the robot positions with the Warehouse.
Complete the callback implementation for the "File/Save" menu option in the Toolbar
class.
Create a world controller that has a list of robots and dispatches them as items are received in the warehouse.
This requires rebuilding the icon font for the intended icon size.
Interface for implementing route-finding.
Route route(WarehouseLayout layout, Position source, Position target)
: takes in environment state (i.e. WarehouseLayout
, the source and target positions), and finds a route under a certain set of constraints.WarehouseLayout
Route
Position
We should confirm that the user wants to erase the tile before actually doing so.
Make sure that the grid shows up and is dynamic (changes when commands run in the program).
Every time step, the warehouse should try to match available Robots to orders that need to be fulfilled. This can be done through a variety of metrics: take the closest robot, take the first robot, etc...
When a Robot is matched, it can compute a route to the destination using a routefinder algorithm. Then, the route can be visualized.
Entity
Class for an item in the warehouse.
name
and description
to store in the warehousegetName
getDescription
setName
setDescription
getId
tostring
equals
hashCode
None
Entity
Class representing a storage unit in the warehouse storing items of any type.
Inherits: StorageUnit
addItem
removeItem
getCapacity
hasInfiniteCapacity
getSize
getQueryItems
Item
Implement inventory saving and loading.
Entity
Class representing a stateless 2D representation of the layout of a warehouse.
getTileAt
isTileCoordinateInRange
None
Implement A* path-finding algorithm (https://en.wikipedia.org/wiki/A*_search_algorithm).
As discussed in the specification documents
Use Case (??)
Class that creates a unit in the warehouse that can store items.
Parent Classes: Receivable
, Distributable
addItem
(abstract method)removeItem
(abstract method)recieveItem
, distributeItem
Item
, Query
Entity (??)
Class that creates a storage unit in the warehouse that can store items of a single type.
Inherits: StorageUnit
getCapacity
hasInfiniteCapacity
addItem
removeItem
getQueryItems
Item
Complete the callback implementation for the "File/New" menu option in the Toolbar
class.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Abstract class for implementing moving agents in the warehouse with arbitrary route-finders.
TODO
Router
Route
Warehouse
WarehouseLayout
Make sure we implement the correct design principles and we must mention these in our presentation.
We need to implement saving and loading of the Warehouse
object. We can probably use JSON to serialize the data.
Resource: https://www.baeldung.com/jackson-object-mapper-tutorial
A Robot
(with an arbitrary route-finder algorithm) with an obstacle avoidance strategy. This robot uses a local path planner to sidestep obstacles as it encounters it by trying to wait for it, go around it, or recomputing the route.
TODO
Robot
I've setup a simple messaging system inside the Warehouse so that whenever an item is added/removed from a storage unit, the warehouse is notified. Now, we need to use this to check:
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
These robots are in charge of organizing the warehouse
Currently, the StorageTileAssignmentPolicy constructor takes in a Warehouse, which doesn't really make much sense since we might want to re-use the same policy for different warehouses.
Entity
Class that creates an empty tile in the warehouse.
None
Complete the callback implementation for the "File/Open" menu option in the Toolbar
class.
Use Case
Abstract class for pathfinders that discovers the optimal path for packages.
pathfinder
findPath
(differs based on pathfinder used)Item
Implement Item save and load.
Use Case
Class that computes the cost of two items (distancebetween two items) by implementing abstract class Scorer
.
Parent Class: Scorer
Item
Implement the move tile tool. Allows for moving a tile from one grid position to another.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.