I built this Tetris Playground for a class, and I built a few bots to play against it. I'd love to see what other people could build to play on it. The goal was to make it work in a way that building new bots would be very straightforward and not involve understanding or writing Tetris game code.
I'd love any feedback on the system, and pull requests are absolutely welcome! Thanks for looking!
Huge thumbs up for making the effort to share a simulated environment.
Having these kinds of "toy" environments can result in more research into some interesting problems.
Over the course of years I taught or helped teach several classes and I implemented a bunch of one-off systems for evaluating AI agents.
Feedback on the system:
* Implementation:
* I encourage a more modern use of C++, certain choices
unnecessarily complicate the code and make it less
flexible.
* Example:
Piece *p = new Piece(curPiece->getPieceID());
...
delete p;
* (use unique_ptr instead)
* Example 2:
in game/Piece.h you do not advertise constness on
simpler getter accessors.
* Example 3:
* the constants in game/Constants.h make
experimentation in Runtime not flexible enough.
There's no reason why most if not all of these
constants should not be configuration parameters
for a game.
* Example 4:
* Instead of documenting some errors with cerr,
consider using exceptions.
* Include a proper build file. I recommend CMake as it is
available for all popular platforms and easy to read for
simple projects like this. Otherwise a simple Makefile
will do.
* Features:
* Provide a way to automatically evaluate:
* A single agent performance using one or more proposed
scores.
* Agents against each others using the ELO system
* Simulate all nuances of the Tetris game
* Compare agent performance to that of human players
* Provide bindings to other languages that are fun to hack
in, such as Python and Lua. Extra credits to make the
bindings accessible to languages that do not share the
same machine model, such as JVM-based Scala/Java/Clojure
or functional languages such as Haskell or O'Caml.
... maybe Arc or Racket bindings as well? ;))
I built this Tetris Playground for a class, and I built a few bots to play against it. I'd love to see what other people could build to play on it. The goal was to make it work in a way that building new bots would be very straightforward and not involve understanding or writing Tetris game code.
I'd love any feedback on the system, and pull requests are absolutely welcome! Thanks for looking!
I made an animated, customizable loading indicator as my first cocoapod. It allows you to give an actual percentage instead of just a spinning wheel, which I wanted for a project I'm working on as well as control over colors, sizes, styles, and more. I also wanted the experience of making a pod. Please let me know what you think, and contributions are definitely welcome!
I'd love any feedback on the system, and pull requests are absolutely welcome! Thanks for looking!