The Student Room Group

AQA COMP4: Need Some Advice

Scroll to see replies

If you use mySQL in your project, you will have to run a virtual server on the computer every time you use your application. I used (and would recommend using) SQLite which doesn't have this requirement. It's very clumsy to have to ask an end user to start a server just to use the database functionality.
Reply 21
Original post by benplumley
If you use mySQL in your project, you will have to run a virtual server on the computer every time you use your application. I used (and would recommend using) SQLite which doesn't have this requirement. It's very clumsy to have to ask an end user to start a server just to use the database functionality.



If it helps in this aspect I set up a free account on http://www.freemysqlhosting.net/ and give the user the database details for testing (my program had the table creation statement hard coded - you could also possibly hard code login details), although SQLite may be easier (cant remember if a remote server gets more marks)
(edited 9 years ago)
Reply 22
Original post by brilld
If it helps in this aspect I set up a free account on http://www.freemysqlhosting.net/ and give the user the database details for testing (my program had the table creation statement hard coded - you could also possibly hard code login details), although SQLite may be easier (cant remember if a remote server gets more marks)


Or you could install XAMPP which comes with MYSQL locally and if you have a host can just upload the database when local testing is done.


Posted from TSR Mobile
I've only skimmed the thread; I'm just going to mention what I did, since I did pretty well on the project and didn't really feel like I put that much effort in. I will say I'd consider my programming ability / experience to be way above the standard required for A-level though.

Anyway, some background on my project: My proposal was for a 2D platforming game where mathematical equations would be a manipulatable part of the environment, which could be used for destroying enemies and problem solving. I asked my mathematics teacher and he agreed to sign off interviews etc regarding the project. The program I actually produced was a "game engine" (not complete) and an "equation engine" (which mostly worked). It was the second project I'd started on (and my third idea, maybe fourth - I didn't begin any coding on my first concept, and I don't know if the second one was actually given any serious consideration).

The features of the game were that it would run at the same speed regardless of framerate, it had support for loading images and sprites as well as storing multiple levels in-memory, it had input mapping support (albeit no way for the user to actually customise input settings), and it had a character with a basic animation who you could move left/right and who would bounce up and down. Nothing really special there, although I did have a nice set of classes in place to start building up game structure. That came to some 350+ lines of fairly spaced code, including a fairly-trivial-but-lengthy library to hold vectors which had a bunch of deprecated code that I wasn't actually using any more.

The features for the equation engine (it was really more of a function engine) included holding mathematical functions, differentiating them, graphing them in text form (lines made out of x's, etc, although without any actual axes or labels), and estimating the integral between values using the trapezium rule. It used a nice set of classes, but was not user-accessible; you could only make use of the library if you were writing python code. It came to about 500 lines, and I finished the main backbone of it within a fairly short time of deciding to start this project. This was what I wrote both my user guide and technical manual about, both aimed at other programmers. I think I sort of cheated there. :P

My project came to something stupid like 120 pages (although that's not as bad as the 200+ page horror stories you hear) and got 78/80. For what it's worth, one of my friends came in with far less programming experience than me - it is quite likelyit was none at all, although I can't remember for sure - and got 80/80 over something like 175 pages, although he did put in a lot of work and was way more focused than me in class (and thus finished earlier too).

Choosing a graphics library

My project was written in Python, with PyGame (a games library, as you may have guessed) handling things like input and graphics rendering. I'd say this did a lot of the "heavy lifting"; I didn't have to do anything low-level like manually blitting pixels from one array to another, I just used the sprite.copy() method, or whatever it was. Likewise, input events could be gotten from a simple method too. It's been a while since I did games dev things in Java, but I remember doing some stuff like sprite blitting manually in LWJGL (although this may well have been down to my desire to build my own engine more than anything)? I'd say this is definitely overkill for A-level unless both a) you know what you're doing so it's not actually going to be difficult for you and b) you can't think of any ideas that are sufficiently complex so you just want easy complexity marks.

I've never touched libGDX but I doubt it does much more heavy lifting than PyGame does. If you're comfortable with it then go for it (is that a disappointing conclusion after six paragraphs of preamble? sorry ^^).

Deciding on a project

I'm going to say something that may seem counterintuitive: if you feel like you're a strong programmer, go for whatever. If you can make really solid code and approach something in a more elegant way than simply trying to go and brute force things, you can easily write a good chunk of code that's easily at top level complexity for A-level. My code didn't really actually do anything, and I'm pretty sure I still got 100% on the code section - I did a tiny amount of my initial planned featureset but that didn't matter because my code looked fancy so it seemed like I knew what I was doing (which I think I did! I hope!).

On the other hand, if you're not so confident, try and come up with a more complex feature set. Without being able to just sort of handwave your way to top marks, trying to go for something really tricky will put you in top complexity marks and thus let you get 100% on the code anyway (and make it easier to complete your writeup without having to resort to pages and pages of complete utter worthless waffle).

By this point, you may well have even completed your code. If so, nice! I'd suggest you still revisit it unless you're completely 110% happy with it, for a couple of reasons. First off, refactoring some of your code and documenting that shows the examiner that you're trying to improve your code - you could even say you were responding to feedback or something to pick up more marks in those sections. Refactoring could also help you pull out advanced-seeming methods which you could write up nicely in structured English and pseudocode to get more free marks in your write-up. Also, you can treat commenting as more documentation; if you're a comfortable coder you probably didn't comment too much on your first run through, but I feel for coursework it's nice to hand-hold a bit to stay on the safe side (although don't go mad and think you need to comment every line).

If you need more room for complexity (e.g. if your teacher doesn't think your code is worth 100% of the marks yet) there are also a couple of things I could suggest from your intiial post: if you're comfortable with the maths then you could try 3D SUVAT (you can waffle about this and I think that it would ramp you up to maximum complexity straight away in any place that you did). Also you say "millions of if/case statements" - millions of if/case statements are often not necessary. Of course it may well be good enough for all of the marks at A-level, but if you want to feel more comfortable about getting 100% of the code marks then you could try and fancy it up a little bit - if you can rewrite it in a more elegant way that is more adaptable or even just seems more complex then you can ramp yourself up to maximum complexity there too. Again if you feel okay about the code you could do this anyway then use it as "ammunition" to pick up more marks in your writeup.

I realize this writeup may be excessive and largely useless, but if you happen to need any pointers then hit me up. :L
Reply 24
Original post by Indivicivet
<quote>


Thanks for the reply :smile: I kind of started the project then left it :| I program a lot in Java in my free time but normally it's coding what I'm interested in. I'd love to make a survival game (which will probably make me a lot more productive) but I'm not sure how I could justify it; making it educational seems to be the only thing that I can think of but I'm not sure how I would do that without making it boring or even related to the gameplay.
(edited 9 years ago)
Reply 25
Original post by Nuvertion
Thanks for the reply :smile: I kind of started the project then left it :| I program a lot in Java in my free time but normally it's coding what I'm interested in. I'd love to make a survival game (which will probably make me a lot more productive) but I'm not sure how I could justify it; making it educational seems to be the only thing that I can think of but I'm not sure how I would do that without making it boring or even related to the gameplay.


Make a survival game that teaches you how to program lol. Code or die and all.
Reply 26
Original post by Harjot
Make a survival game that teaches you how to program lol. Code or die and all.


That's actually given me a really good idea, thanks :smile:
Reply 27
For my project I approached a local Charity. They are just about to start a fund raising excercise. They have very basic IT - a computer with MS Word and a simple web site that someone put together a couple of years ago. What they would like (apart from a load of money) is - a database to keep the names and addresses, bank details of donors, the levels of donations, to allow donors to complete online registartion and donation, to allow emailing/mailing lists to be prepared for future fund raisers. I think this will involve creating a fairly simple database of donors, but also linking to the web, encryption, security, data-protection, and some sort of user interface to allow running off of reports and generating mailing lists.
Frankly an easy way to do this would be with MS Access and this would probably be the easiest way for the Charity who would stand some chance of maintaining the system once I am gone. On the other hand, to get high marks, should I consider using something like SQLite and Free Pascal (Lazarus) and constructing everything myself????
Reply 28
Original post by camiano
For my project I approached a local Charity. They are just about to start a fund raising excercise. They have very basic IT - a computer with MS Word and a simple web site that someone put together a couple of years ago. What they would like (apart from a load of money) is - a database to keep the names and addresses, bank details of donors, the levels of donations, to allow donors to complete online registartion and donation, to allow emailing/mailing lists to be prepared for future fund raisers. I think this will involve creating a fairly simple database of donors, but also linking to the web, encryption, security, data-protection, and some sort of user interface to allow running off of reports and generating mailing lists.
Frankly an easy way to do this would be with MS Access and this would probably be the easiest way for the Charity who would stand some chance of maintaining the system once I am gone. On the other hand, to get high marks, should I consider using something like SQLite and Free Pascal (Lazarus) and constructing everything myself????


High marks = everything yourself. If you do a good job anyway, there need not be maintenance overhead. Or if you want the best of both worlds, use Pascal/Delphi with an MS Access database.


Original post by Nuvertion
That's actually given me a really good idea, thanks :smile:


And here's me still idealess :frown:
Reply 29
Original post by Harjot
And here's me still idealess :frown:


I'm already starting to doubt my idea as it seems too complicated. Originally you had to program the AI of a robot to fight another one using drag and drop coding (like Scratch) but then I decided why not outright make an alternative to Scratch? Making the UI is already starting to scare me (there's no WYSIWYG editor like .NET has), let alone programming the rest of it. I think I'll give it a try anyway and see how it goes. I could of course go back to making a robot fighting game but I still think it'll be just as complicated, if not more because most of the concepts are the same.
(edited 9 years ago)
Original post by Nuvertion
I'm already starting to doubt my idea as it seems too complicated. Originally you had to program the AI of a robot to fight another one using drag and drop coding (like Scratch) but then I decided why not outright make an alternative to Scratch? Making the UI is already starting to scare me (there's no WYSIWYG editor like .NET has), let alone programming the rest of it. I think I'll give it a try anyway and see how it goes. I could of course go back to making a robot fighting game but I still think it'll be just as complicated, if not more because most of the concepts are the same.

If you can nail the UI, the rest should be easy. Each block of pseudo-Scratch can be translated directly into a block of your chosen language, no context needed. What I'd watch out for in a project like that is scope creep - real languages have thousands upon thousands of built in functions, and that's before you start putting 'import' statements in. You need to pick a boundary for what your program should be capable of and stick to it. Even Scratch itself has too many functions to emulate them all in a computing project.
Reply 31
Original post by Nuvertion
I'm already starting to doubt my idea as it seems too complicated. Originally you had to program the AI of a robot to fight another one using drag and drop coding (like Scratch) but then I decided why not outright make an alternative to Scratch? Making the UI is already starting to scare me (there's no WYSIWYG editor like .NET has), let alone programming the rest of it. I think I'll give it a try anyway and see how it goes. I could of course go back to making a robot fighting game but I still think it'll be just as complicated, if not more because most of the concepts are the same.


What would give you brownie points is realtime multiplayer/network connectivity. Although there is a modded version of Scratch called BYOB that does this, it is not realtime and a bit cluttered.

The exam board have TCP stuff right up there.
Original post by Nuvertion
I'm already starting to doubt my idea as it seems too complicated. Originally you had to program the AI of a robot to fight another one using drag and drop coding (like Scratch) but then I decided why not outright make an alternative to Scratch? Making the UI is already starting to scare me (there's no WYSIWYG editor like .NET has), let alone programming the rest of it. I think I'll give it a try anyway and see how it goes. I could of course go back to making a robot fighting game but I still think it'll be just as complicated, if not more because most of the concepts are the same.

Just bear in mind you don't need to finish your project as initially planned, as long as what you have actually produced is complex enough and you can talk about which objectives you didn't meet.
Reply 33
Original post by Indivicivet
Just bear in mind you don't need to finish your project as initially planned, as long as what you have actually produced is complex enough and you can talk about which objectives you didn't meet.


I didn't think about that, thanks.

Quick Reply

Latest

Trending

Trending