i'm thinking that this app might best be served with a status bar to track everything. it would remove obstruction from the client area, at the very least. i guess it depends on how hard it's going to be to use.
time to add the countdown timer. [working] hmm. adding the statusbar and setting up panels on it was easy, but getting at the panels isn't. i'm not sure how to deal with Collections yet. [working] looked at InitComponents.. guess i can just ask for them by name, and not as a part of statusBar.Panels.somethingsomethingsomething.. yay! [working]
ok it won't let me use the panels like i want to. it looks like msdn boxes and then unboxes stuff that's MarshalByRef (whatever the hell that means). let's try that. [working] ... wtf? time to hit the chat. [working] nevermind the chat. i realized i should have been dealing with TimeSpans anyways and for some reason it let me use them fine. whatever, i have a working timer.
[working] now i have an accuracy tracker. i need to do something with the timer now, though. i'm going to have to have a game-over state and stuff to deal with. god, i really need to clean up my code..
ok wtf? you can get a negative for your hit/miss%. oops, i think i forgot to use shotsFired in the equation.. i also have to fix it so that the face can't get under the statusbar. [working] both fixed. now we could maybe throw up a MessageBox and reset everything after the time hits 0. [working]
just re-ordered Main's while(created) so that there's a game state switch. now we add the messagebox. [working] there. now it gives a gameover message and resets everything. i want to have some of the vars update their statusbar entry by making them properties. that will simplify some of the program. [working] yeah, that was cool. i had to be a little careful of how i was setting stuff because i was using values from other properties, and we want to be sure things are getting done in order.
anyways, the game is done enough for me. there's a zip for the game here. i'd tell you to enjoy it, but.. it sucks. i'll probably add a high-score table sometime.
[edit: i forgot to take into account the statusBar when the bullet hits the edge of the playfield - the ClientRectangle includes the statusBar, and the bullets have to go further off the visible area than they should because of it. easy to fix, maybe later]