if (x == right) goto gheyness; // testing for x == right in the next if statement fucks it up for some reason if (y != bottom) { index[ii] = i; index[ii+1] = i+1; index[ii+2] = i+((right-left)/step)+1; index[ii+3] = i+1; index[ii+4] = i+((right-left)/step)+2; index[ii+5] = i+((right-left)/step)+1; ii += 6; }gheyness: j += step; //etc.....
Funny source code/documentation/comments?
This made its way into a terrain generating/heightmap renderer thing I wrote a month or two ago for a project. This crept in late at night after spending several days trying to debug the same function (and this is probably the cleanest part code-wise O_o). Even now, I'm still not sure what the hell I was even thinking when I wrote this.
------------------------------BASIC programmers don't die, they just GOSUB and don't return.
From the server data gathering code I wrote for CSports.Net
and from the old CSports system (or the bits I wrote at least) and some support programs
I seem to recall others around my code, something about being on crack when I wrote some code and not knowing why or how it worked, but i'll be buggered if i can find 'em [grin]
ProcessError(true,"", error); //TODO: put sane error code here//////////////////////////////////////////////////////////////////////////// BattleField 1942 server parser// Complete with dumb key_hash detection, coz you know it makes sense ;)//////////////////////////////////////////////////////////////////////////// we've got a pos <insert other swear words here> return, time to play fudge it :)// this is primaryly a hack for stupid UT2 servers... why oh why couldnt that have enforced a standard order ;(if(namestart == std::string::npos || score1start == std::string::npos || score2start == std::string::npos || score3start == std::string::npos || core4start == std::string::npos) return; // should never happen.if(nameend == std::string::npos) break; // regardless of which comes first we should ALWAYS find thiscatch (std::exception &e) {throw; // something went wrong, probably an out-of-bounds exception}//////////////////////////////////////////////////////////////////////////// Super happy fun Quake3 parser//// Note: this is a mild cheat when compare with the old version. // Once i'd looked at the Quake3 returns it became very quickly apprent// that the getinfo request was basicaly, errm, useless for our needs// as the only extra bit of data it returns is the clients connected and// frankly, we can count that ourselves :)// So instead, we are only using the getstatus command, which is half// the network wait time, yey me!//// Also, I'll be using a cute stringstream trick to parse the data sanely.// The basic plan is to throw the string into a stringstream, then read back// a line at a time, as each section is \n delimited this should make things // a lot easier.// So the first line read is the \xff\xff\xff\xffstatusResponce line, the // next will hold all of the \key\value pairs and then every line after that // will hold the score and player details (<score> <ping> "name")// bish bash bosh, how smooth is that ;)//// Note: pull server game port from data supplied for this game... errm.. somehow :E ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Null Delimited parser// Based on the data we found when looking at the BF:V returns // !!!!!IMPORTANT!!!!!// While this has been written to be generic there ISNT enuff details// On this format to make this true for the future as yet.// I'm HOPING that this is basicaly the ASE format so this can be reused// however i'm not counting on that// !!!!!IMPORTANT!!!!!// From the network setup code :throw std::exception(); // throw an exception, we'll put something sane here laterthrow std::exception(); // as before, throw back an exception as this shouldnt happenthrow std::exception(); // as abovereturn false; // some other error, so run away!namespace Parsers{ // parser function defs go here}/** hax0red microsecond clock*/
and from the old CSports system (or the bits I wrote at least) and some support programs
// cleaner for painkiller color coding (why cant every game use the same bloody codes)Sleep(0); // sleep for a bit and around we go again :)Sleep(10); // task switching friendly :)int id; // if we need more than a short OMFG!//MessageBox("meep");
A reason not to try and be lazy:// Now we need to work out the per vertex normal// the correct way would be to store which vertex is used in which face// add the face normals together and devide by the number of faces// however, as i'm lazy i'm gonna cheat for the moment and instead// just workout the face normal and apply it to all the vertices for// that face.// the above didnt work :( Need to come up with a cunning fi><0r!Other stuff : // Mesh done.// huzza!// TODO : sweet custom dialog code :)// we have found the start of a strike thought, joy.
I seem to recall others around my code, something about being on crack when I wrote some code and not knowing why or how it worked, but i'll be buggered if i can find 'em [grin]
Almost all of my comments are just source that doesn't work but could still be important. I should really start commenting my code.
From my Linked-List template class.
///////////////////////////////////////////////////////////////////////////////////////////////// LIST::GetHead//// 10/12/2003 J.C.//// Makes a $2 hooker appear at your doorstep and return the head of the list to you =)/////////////////////////////////////////////////////////////////////////////////////////////////template<typename TYPE>DDNODE<TYPE>* LIST<TYPE>::GetHead(void) const{ return(lpHead);}///////////////////////////////////////////////////////////////////////////////////////////////// LIST::GetTail//// 10/12/2003 J.C.//// Gets some booty from that same hooker... and returns the tail of the list./////////////////////////////////////////////////////////////////////////////////////////////////template<typename TYPE>DDNODE<TYPE>* LIST<TYPE>::GetTail(void) const{ return(lpTail);}
Something I seem to periodicly put in my games
// Below are a bunch of variables used to hold various dataint x, y, z, time, speed;char name, o;
After replacing 'break' with 'continue' to fix an error:
And a snippet of my partner's code:
continue;//break; this "breaks" stuff, no pun intended... haha...
And a snippet of my partner's code:
// UPDATE: initial experiments show that is is basically un-noticeable to the user// Update of Update: This causes big problems, gotta fix it
Quote: Original post by Dmytry
node1->MakeChild(node2);// O la-la!
I once received an email from my boss because I had written.
//NOT SAFE FOR WORK
node1->MakeChild(node2);
He absolutely loved it.
I teleported home one night; With Ron and Sid and Meg; Ron stole Meggie's heart away; And I got Sydney's leg. <> I'm blogging, emo style
Do comments fall under any NDAs you had to sign to get the code? Because I have a real good quote but I'm not sure if I should post it.
ROFL. That's a good one.
At any rate, I've had some fun ones. Naming variable names funny things (only small-scope local, of course) is good, and other techniques.
I've also seen comments like "This is uglier than <insert coworker's name here> girlfriend" followed by a piece of code that's such a hack it makes me sick. Although it makes me laugh more than it makes me sick, so it's okay...
At any rate, I've had some fun ones. Naming variable names funny things (only small-scope local, of course) is good, and other techniques.
I've also seen comments like "This is uglier than <insert coworker's name here> girlfriend" followed by a piece of code that's such a hack it makes me sick. Although it makes me laugh more than it makes me sick, so it's okay...
// Gordon: bleh, has no-one heard of switch statements...// Gordon: removing cuz, er, no-one knows why it's here!...// Gordon: looted corpses dont have any accsserories, evil looters :E// these are sent over the net as 8 bits (Gordon: upped to 9 bits, erm actually it was already at 9 bits, wtf? NEVAR TRUST GAMECODE COMMENTS, comments are evil :E, lets hope it doesnt horribly break anything....)
[Edited by - bani on February 11, 2005 9:41:23 PM]
[=^_^=]http://bani.anime.net/etpro/ - ETPro websitehttp://bani.anime.net/banimod/forums/ - ETPro discussion forums
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement