# rocks An experimental terminal-based game about rocks ## File Structure and Entry Point ``` | rocks.py ; the entry point, runs curses and manages explore/graphics | explore.py ; provides Explore, a class which manages saving, loading, movement, some graphics, inventory, and rock positioning | inv.py ;one line: "quantity = 0". This sections off the inventory into inv.quantity for explore and could permit more extension in the future | isrock.py ; makes use of sorter.py and manages all items as rocks (including portals to prevent intersection --- however, "type of rock" is noted) | isportal.py ; also makes use of sorter.py. manages all portals' saving, movement, and interlinking | sorter.py ; creates a new, efficient data type that automatically insorts coordinates with bisection and allows indexing, removal, etc. | README.md ; you're reading it right now | worlds ; a directory which holds all files created by save data ``` ## Necessary Tools Python3.7.2 was used to develop this app, and to run it, `curses`, `hashlib`, and `math` must be available. ## Controls `rocks.py` runs as a full window terminal application with a few controls, namely: - `q`: quits the program and returns to normal terminal mode - `s`: saves at a requested file location in worlds - `l`: loads from a file in worlds (if not available, does nothing) - arrow keys: moves cursor around world and through portals - `.` picks up rocks - `/` puts down rocks in your inventory - `\` puts down portals (cost 10 rocks)