aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 3a4d20a5b06b59c4feb2178493892b7be60b7564 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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)