Nicely done! Not many have achieve what you just did (I guess including me
)!
Guys, DON'T make a "engine" if you don't know which will be your game requisites exactly, in other words, don't make it if you didn't finished a few games before so you will know exactly what you'll need
Some true words here! "
Write Games, Not Engines!"
I've quickly gone through all the games and here's my feedback:
PongIs it just me or can the AI move its paddle faster than the player can?
SnakeKey input seems to be handle oddly, at least it's impossible to do two direction changes very quickly one after the other, which kind of kills the whole Snake game play. Also the sound for moving gets totally annoying and the movement speed could be faster.
ArkanoidInteresting that you didn't choose "Breakout" as name, since Arkanoid was based on the Atari Breakout and I believe it was more popular.
For playing it seems like the paddle should be able to move faster.
TetrisA more standard binding of the keys would be:
Arrow Left to move left
Arrow Right to move right
Arrow Up to rotate the pieces
Arrow Down to move the pieces down
Space to set the piece fully down.
I especially missed the option to directly place a block.
There also seems to be a bug. Even though I've filled 4 lines at once, it only removed 2 lines.
PacmanIt seems like the ghosts get somehow a bit stuck in the spawning location. Also looking at some original game play of Pacman it seems like all the ghost on the screen turn when eating the bigger coin, even the ones that are still in the spawning area.
As for the code, I've really only taken a glimpse and saw some manual memory management. With modern C++ in mind and some C++11 features at hand, it's really not needed to manually manage the memory, as you can see in
recent talk (jump to minute 20) of the creator of C++ Bjarne Stroustrup.
If you watch the linked video above you'll can also take away the points of passing around data. I've seen the use of some raw pointers, which most likely is not justified or stuff like
const int& which doesn't make sense and should rather be passed as an actual integer itself.
Other than that on the surface, which is what I've looked at, the code seems a lot better than many code examples I've seen in the past here on the forum.
I've added it to the huge list of new topics for the next
SFML News.