int main(int argc, char* argv[]) { p1u_setup(); srand(time(0)); create_robot_world_with_dimensions(width, height); create_maze(); create_robot_with_direction(5, 0, get_north()); complete_maze(); char message[100]; sprintf(message, "Robot should be at Y = %d", height - 1); P1U_ASSERT_EQUAL(message, height - 1, get_current_robot_y()); P1U_ASSERT_FALSE("Robot should survive", is_robot_dead()); p1u_shutdown(); return (p1world_shutdown()); }
void main(int argc,char **argv) { int i,nowait=FALSE; setup_struct(); if(argc != 1) { for(i=1;i<argc;i++) { if(strcmp(argv[i],"-map") == 0) sm->mapdraw = TRUE; else if((strcmp(argv[i],"-server") == 0) || (strcmp(argv[i],"-s") == 0)) { i++; sm->sologame = FALSE; if(strlen(argv[i]) > 255) { fprintf(stderr,"Hostname too int!!\n"); exit(1); } strcpy(sm->hostname,argv[i]); } else if((strcmp(argv[i],"-help") == 0) || (strcmp(argv[i],"-h") == 0)) { usage(stdout); exit(0); } else if(strcmp(argv[i],"-name") == 0) { i++; if(strlen(argv[i]) >= MAXNAME) { fprintf(stderr,"Name too int. Maximum is %d character.\n",MAXNAME-1); exit(1); } strcpy(sm->ownname,argv[i]); } else if(strcmp(argv[i],"-tiny") == 0) sm->outputsize = 14; else if(strcmp(argv[i],"-small") == 0) sm->outputsize = 13; else if(strcmp(argv[i],"-huge") == 0) sm->outputsize = 11; else if(strcmp(argv[i],"-big") == 0) sm->outputsize = -1; else if(strcmp(argv[i],"-mono") == 0) sm->monomode = TRUE; else if((strcmp(argv[i],"-gray") == 0) || (strcmp(argv[i],"-grey") == 0)) sm->graymode = TRUE; else if(strcmp(argv[i],"-dither") == 0) sm->dithermode = TRUE; else if(strcmp(argv[i],"-nowait") == 0) nowait = TRUE; else if(strcmp(argv[i],"-camera") == 0) sm->camera = TRUE; else if(strcmp(argv[i],"-direct") == 0) sm->directdraw = TRUE; else if(strcmp(argv[i],"-sound") == 0) sm->usesound = TRUE; else if(!strcmp(argv[i],"-privatecmap")) sm->privatecmap = TRUE; else if(!strcmp(argv[i],"-noshmem")) sm->noshmem = TRUE; else if(!strcmp(argv[i],"-texture")) { sm->texturemode = TRUE; sm->privatecmap = TRUE; } else if(strcmp(argv[i],"-comment") == 0) { i++; if(strlen(argv[i]) >= MAXCOMMENT) { fprintf(stderr,"Comment too int. Maximum is %d character.\n",MAXCOMMENT-1); exit(1); } strcpy(sm->owncomment,argv[i]); } else { usage(stderr); exit(1); } } } #ifndef USE_SOUND if(sm->usesound) fprintf(stderr,"You haven't compiled netmaze with USE_SOUND.\n"); #endif if(sm->sologame && sm->usesound) { sm->usesound = FALSE; fprintf(stderr,"It's not possible to use sound in the solo testmode.\n"); } if( (sm->monomode + sm->graymode + sm->dithermode) > 2 ) { fprintf(stderr,"Sorry .. only -mono OR -gray OR -dither is allowed\n"); exit(1); } if( sm->texturemode && (sm->monomode || sm->graymode || sm->dithermode)) { fprintf(stderr,"Warning: Textures only usefull in colormode yet.\n"); } /* init Default-Maze */ create_maze(&(sm->std_maze)); /* Signals,Gfx,Network,(IPC:fork),keyboard initialisieren */ init_program(argc,argv); if(sm->sologame) { printf("Press '1' to start game!\n"); } else { printf("OK .. now wait for serverstart\n"); } /**** beginning of the mainloop (endless) ****/ while(!sm->exitprg) { int waitselect; #ifdef USE_IPC if(sm->sologame) x11_cntrl(); #else x11_cntrl(); #endif if(nowait) waitselect = FALSE; else waitselect = TRUE; if(sm->bgdraw) { draw_info(); sm->bgdraw = FALSE; x11_flush(); } if((sm->screendraw) && (sm->redraw)) { if(sm->drawwait >= DRAWWAIT) { sm->redraw = FALSE; sm->drawwait = 0; draw_screen(); waitselect = FALSE; } } if((sm->winnerdraw) && (sm->redraw)) { sm->redraw = FALSE; draw_end(sm->playfeld,sm->winner); /* does XSync() */ } if((sm->statchg2) && (!sm->gameflag)) /*update Screen after the Gameover*/ { sm->statchg = TRUE; sm->statchg2 = FALSE; draw_status(-1,sm->playfeld); x11_flush(); } if((sm->killchg) && (!sm->gameflag)) /*update Screen after the Gameover*/ { draw_kills(sm->shownumber,sm->playfeld); x11_flush(); } if(waitselect) /* test! only a timeout-wait yet */ { /* this reduces the load enormous :) */ struct timeval timeout; #ifdef USE_IPC if(sm->gameflag) { timeout.tv_sec = 0; timeout.tv_usec = 1000; /* lower than the minval on most machines */ } else { #endif timeout.tv_sec = 0; /* in NON-IPC versions, the SIGIO-Signal */ timeout.tv_usec = 100000; /* also exits the select-command */ #ifdef USE_IPC } #endif select(0,NULL,NULL,NULL,&timeout); } } XCloseDisplay(sm->grafix.display); }