text-based 2048 clone