Hallo,
schön, dass es Dir geholfen hat!
Also zu 1.) hat ja schon 
 Th69
Th69 geschrieben, wie das geht.
Zu 2.) Naja, ich persönich programmiere nun seit ca. 2 Jahren in C#. Würde mich eher im Feld der fortgeschrittenen Programmierer sehen. Programmierung ist halt ein sehr breites Feld. Habe davor in Delphi programmiert.
Mit den Büchern: das ist alles schön und gut, aber ich vertrete die Meinung, dass man Programmierung nur durch Praxis erlernt. Und nicht durch Theorie. Theoretisch kann ich auch vieles...
Muss aber auch zugeben, dass ich hier keinen Code poste, ohne ihn vorher getestet zu haben 
 
 
Aber dadurch lernt man auch 'ne Menge, da man sich immer mit neuen Themen beschäftigt.
Und so ist es wenigstens gewisss, dass der Code auch funzt.
Ansonsten: Immer wieder entdeckerfreundlich sein (z.B. mal schauen, was Dir IntelliSense so anbietet), oder einfach mal googlen wie man z.B. die Methode "KugelGenerieren" besser machen könnte, ohne 45x was zu schreiben. 
Aber zugegeben, das birgt natürlich auch Gefahren. Denn wenn Du die Properties.Resources abfragst, kannst Du Dir sicher sein, dass die abgefragte Resource existiert (weil die Klasse immer neu generiert wird). Bei meiner Methode bekommst Du eine Exception, wenn eine Resource nicht vorhanden ist.
Soviel erstmal,