X-Git-Url: https://git.ucc.asn.au/?p=progcomp10.git;a=blobdiff_plain;f=link%2FC%2FLink%2Fc-link-lib%2Fc-link.c;fp=link%2FC%2FLink%2Fc-link-lib%2Fc-link.c;h=0b8af583027a470b0a8bcf8e6403f852d5c9946b;hp=b7d62855ca0c731665725c0628606795c241ab0b;hb=3667187723faeadb1af1e52f412b31397afafc01;hpb=fbee9b555f7e2febaf604ceaeb24b40286eb85a2 diff --git a/link/C/Link/c-link-lib/c-link.c b/link/C/Link/c-link-lib/c-link.c index b7d6285..0b8af58 100644 --- a/link/C/Link/c-link-lib/c-link.c +++ b/link/C/Link/c-link-lib/c-link.c @@ -9,13 +9,71 @@ #include "c-link.h" #include +#include +#include + +/* If you just want to write a bot, you don't need to read this file. + This merely sets up the I/O for you, so all you have to do is define the bot + functions defined in + + The only reason you would care about this info is if you want to use pointChange + and/or childSpawned parameters from the RESULTS call, which are otherwise discarded. + */ + +char ITEMNAMES[3][MAXITEMLEN] = {"Rock", "Paper", "Scissors"}; + ITEMTYPE RandomAttack() { return (ITEMTYPE)rand()%3; } +ITEMTYPE stringToItem( char * str ) { + if (strcasecmp( str, "Rock" ) == 0) return rock; + if (strcasecmp( str, "Paper" ) == 0) return paper; + if (strcasecmp( str, "Scissors" ) == 0) return scissors; + /* If we reach this point, we've got real problems. */ + fprintf( stderr, "Attempt to convert invalid string \"%s\" into an ITEMTYPE! Aborting.\n", str ); + exit(EXIT_FAILURE); + return -1; +} + int main( int argc, char * argv[] ) { srand( time( NULL ) ); + + char command[MAXCOMMANDLEN]; + char foeName[MAXFOENAMELEN]; + char yourItem[MAXITEMLEN], theirItem[MAXITEMLEN], promisedItem[MAXITEMLEN]; + char didYouInstigate[MAXBOOLLEN], childSpawned[MAXBOOLLEN]; + int pointChange; + + ATTACKTYPE attack; + ITEMTYPE defence; + + scanf( "%s", command ); + + while (strcasecmp("BYE",command) != 0) { + + if (strcasecmp("ATTACK", command) == 0) { + scanf( "%s", foeName ); + attack = Attack( foeName ); + printf("ATTACKING %s %s\n", ITEMNAMES[attack.realAttack], ITEMNAMES[attack.promisedAttack]); + + } else if (strcasecmp("DEFEND", command) == 0) { + scanf( "%s %s", foeName, promisedItem ); + defence = Defend(foeName, stringToItem(promisedItem)); + printf("DEFENDING %s\n", ITEMNAMES[defence]); + + } else if (strcasecmp("RESULTS", command) == 0) { + scanf( "%s %s %s %s %s %d %s", foeName, didYouInstigate, yourItem, theirItem, promisedItem, &pointChange, childSpawned ); + Results(foeName, (strcasecmp("False",didYouInstigate)==0), + stringToItem(yourItem), stringToItem(theirItem), stringToItem(promisedItem)); + printf("OK\n"); + } + + // read the next command! + scanf( "%s", command ); + } + return 0; } \ No newline at end of file