Good start, maybe the next thing you can learn is how to save your screenshots in pngs instead of jpgs :P
Ynot speaks the truth, a good design is paramount to success, every detail should be worked out before any code is written. Here is the design for the side scroller that I've started, I'll probably write it this weekend:
Spoiler for Top Down Design:Code:Mavio
Engine
GUI
GLUT
User Input
GLUT keyboard callbacks
Graphics
OpenGL
World
Background
Large Bitmap, scrolling at 10%
Immediate Background
Various sprites (not collidable)
World Data
Displayed as blocks
Sprites
Displayed on top of blocks
Special effects
Clouds
Fog
Main Engine
Animation
Modulus on frame count
Sprites
Mobile Sprite
Mavio (Controlled by player)
Player States - Polymorphic motion and display classes
Mavio
Super Mavio
Fireball Mavio
Tail Mavio
Swimming
Enemy Sprites
Not active until first render
Mindless
One-way roaming, run off cliffs
Mushrooms
Turtles
Armoured Turtles
Two-way roaming, turn around at end of cliffs
Turtles
No Gravity
Fish
Squid
Bullets
Fireballs
Intelligent
Boss
Ghosts
Fish
Powerups
1Up
Super Mushroom
Tail
Invincible Star
Gold Coin
Silver Coin
Level End Flag
Peach (Princess)
Mavio's Weapon
Fireball
Stationary Sprites
Enemies
Flowers
Powerups
Fire Flower
Floating Coin
Background (Not Collidable)
Blocks
Collidable
Hidden Prize
Bricks
Hidden
Question Marks
Breakable
Weak Ice
Bricks
Regular
Ground
Ice
Lava
Non-collidable
Cloud
Semi-Collidable
Tube
Vine
Ground, but can jump up through and walk through
Water
Motion
Speed
Direction
Handles Collision Detection
Return State
Success
Failure
Collision?
Top / Bottom / Left / Right
Injury
Map
Choose Level
Undirected Graph
Level State
Next node for up, down, left, right (can be null)
Already beaten
Position on map
Bitmap
Level
Loaders
Block Loader (LiveJSON)
Uses JSON to map a block to it's polymorphic class
Sprite Loader (LiveJSON)
Uses JSON to map a sprite to it's polymorphic class
Level Loader (LiveJSON)
Creates block and sprite templates
Creates a 2D array of blocks
Game Save (JSON)
Map Levels beaten
Lives
Current Mavio State
Points
Data (all JSON)
Level
Enumerated Blocks
Enumerated Sprites
Level
XSize
YSize
Background Image
Immediate Background Data
World Data
Special Effect Name
Block
Collidable?
Breakable?
Images (Array of images if animated)
Animation loop start
Animation loop end
Sprite
Collidable?
Pixel Perfect Collisions?
With other Sprites?
Images (Array of images if animated)
Animation loop start
Animation loop end
Enemy?
Mindless or Intelligent?
Powerup
Powerup Script
Mavio's weapon?