I really love creating things using a programming language. It's why I got into programming in the first place and also why I quit a good career in computer forensics to take a computer science degree. This final year project is the first time I feel like I've been "let off the leash" so to speak, in terms of what we have to create. I'm starting to see results and it's encouraging.
Firstly, it may not blow your mind, but check this out:
This is a (admittedly massivly scaled down) image of the centipede program I've made. It looks a little more impressive when in motion. The mushrooms appear and dissapear at random and the centipede drops down a level and heads in the opposite direction every time it hits either a musroom or the side of the screen. When it reaches the bottom of the screen it's location is reset to the top. It's pretty simplistic but I think it serves my needs in terms of a representation of the old centipede gameplay. This playing field was constructed on classes that extend JPanel and JFrame. Each loop updates the location of the centipede and which mushrooms currently exist on the field, then the paint() method is called for the JPanel and the whole thing starts again. Really really basic stuff so far, but that's all I need right now.
The second thing I've been working on is the client/server software that is going to run the whole shebang. I believe I mentioned in a previous update, but I've been working entirely in java at the moment. I've been hampered slightly by the fact that my laptop power supply went astray and as such I've been trying to develop both the client and the server software simultainiously on the same machine. Probably not the best way of doing things. Once I finally recovered my power brick, I was able to commence debugging on two separate systems and uncovered a lot of problems causing me to more or less throw out 2 weeks worth of work and start again from the ground up. It's taken me a fraction of the time to get back from the same place however, as most of the initial development on the network side was spent researching and trying things out.
So now I have a server software that awaits incoming connections, then spawns threads out to deal with each one. Multiple connections can be handeled from the same system or different systems and each one closes down elegantly if exited correctly. The server software seems to throw a hissy fit if I manually kill the client process, but I'm sure I can fix that without too much problem. I can communicate with text commands using individual InputBuffer and PrintWriter classes for both the client and server software (the server having separate instances of these classes for each connection thread). Currently, I'm using a linked list to store all the threads that are created from incoming connections, but I may change this in future if I find a better way of doing it.
So, next step is to bring the graphical interface above together with the server software I have just described. I currently have a list of requirements for each part of the software recorded down in my logbook as well as a basic flowchart describing expecting behavior and also how each expects the other to react. It helps that I've start started a Concurrent Systems module this term. I may be able to gain some insight to the modelling process through that.
This is all good progress, but there is a lot of work to do. I have a presentation to make in three weeks time, by which point I'll have to have this prototype in a working condition.