Space Invaders clone built in pure C# and no frameworks.
Uses .Net Framework 3.5 and a few features from there but was originally developed for .net 1.1 (started in VB classic)
This code is here because I was talking to my daughters about computer games and mentioned that I had made Space Invaders clone and they really wanted to try it out.
So digging around I found it and added a 3 player version so we could have a little simple fun together.
In a darker age we couldn't just Stack Overflow things. We actually had to read manuals and figure things out from there. Frustrating as that was and dumbfoundingly much slower, I at least found it being fun and catalyzed deeper insights and alternative ways to solve certain problems. Since I had familiarity with the underlying operating systems it was usually just a question how to achieve my goals in this specific programming language.
The way I usually did it, was to program a simple game every time I added another programming language or platform to my proficiency. The games I used were just simple fun things from my childhood like Snake, Invaders, Tron or something similar. The reason being that games encompasses all the elements that you need in a front-end application. Things like display/UI, processing, and input.
I have implemented an Invaders clone in VB, VBA (YES EXCEL!), Java Swing, VB.Net and C#.
This code started its life in VB 6.0 when I was doing my first business applications for Win95/98 and NT 4.0 and this must have been around 1998 but I seem to have misplaced the original source in some disk crash or another.
Then back in around 2001 I looked at this new and shiny thing called dot net and dismissed it out of hand since it was buggy and hadn't the capabilities that I needed at the time. I was though aware of the "Law of Microsoft" (I may be crap now but in 3 versions we will be great and own the market) and kept an eye out for improvements.
Well, Microsoft broke its own law, and the 1.1 release was an actual well thought out and working software, even though we had to reprogram way too many things for every upgrade of the early framework. I can distinctly remember porting the old Visual Basic Invader clone to VB.Net and not really liking the experience, but "everybody" knew that it would be the future of front-end development, so I persisted and used it to train myself for porting quite a number of applications from VBA / VB to VB.Net and from there on I programmed all new front-end applications in ASP.Net and WinForms.
Pretty quickly it was obvious that I had bet on the wrong horse and C# would be the main language for Microsoft centric development so somewhere around 2005 I was developing full time in C# but was still supporting some asp classic applications and WinForms VB.Net at too many customer locations. So, I went back to the old Invader code and ported it to C# to see what worked and what didn't and never looked back to VB except for the odd VBA script that once in a blue moon was the easiest way to solve an issue. Then at some later time I upgraded it to .Net Framework 3.5, which is the code you are looking at now.
For me this is a fantastic piece of history. If you look at this code, you will see that it's quite verbose and the style old fashioned. And I think I even saw some old pieces retaining some leftover VB'esque style.
It is fascinating how the language has evolved into this terse and functional style that we use today.
You are free to use all of this, icluding the images that I made based on the original game. But the credit goes to where credit is due and that is Tomohiro Nishikado and Taito where he worked.