Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tca166/minecraftballistics
Tools for performing ballistics calculations in as many languages as possible
https://github.com/tca166/minecraftballistics
ballistics c cpp d-lang fortran90 minecraft objective-c
Last synced: about 1 month ago
JSON representation
Tools for performing ballistics calculations in as many languages as possible
- Host: GitHub
- URL: https://github.com/tca166/minecraftballistics
- Owner: TCA166
- Created: 2024-02-20T16:27:51.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-10T18:16:53.000Z (7 months ago)
- Last Synced: 2024-09-30T02:21:15.989Z (about 1 month ago)
- Topics: ballistics, c, cpp, d-lang, fortran90, minecraft, objective-c
- Language: C++
- Homepage:
- Size: 129 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minecraft ballistics
A cool little project that aims to create tools that allow to calculate data regarding minecraft arrow trajectories, while also using as many programming languages as possible.
## Tools
So far only two tools have been produced:
- consoleCalculator - A console utility that acts as a rudimentary minecraft ballistics calculator
- guiCalculator - a gui version of console calculator that also visualizes the trajectory## Compilation
As of right now the tools utilize four different programming languages (Fortran 90, C, D, C++, objC).
Just run```sh
make requirements*DNF/APT*
make all
```To install all necessary requirements on your system and compile everything.
The requirements target comes in two flavors, depending on which package manager you like best.
Feel free to play around with the CFLAGS variable, all the compilers come from GNU so they use the same console frontend.
Also generally a good idea with this project is to stick with GNU compilers as it minimizes chances for name mangling shenanigans or some other compile time nightmares.## Architecture
### Languages
In order to maximize the amount of languages being used, while also keeping things semi reasonable I imposed upon myself a set of rules:
1. Each language used must be justified in some way
2. All languages must be compiled
3. One use for each language - otherwise why not just use one for everything?
4. No wrapping for the sake of wrapping - otherwise I could just wrap functions in functions until the end of timeSo as of right now five languages are used, each for a different purpose:
1. Fortran - for math
2. C - for the C csv library
3. Objective C - for the console utility frontend
4. D - for the OOP Fortran wrapper (Did you know that D has a crazy level of linkage support?)
5. C++ - for the GUI app### Dependency Tree