void creat_sanke(STRU_B(*p)[N]) { p[M / 2][N / 2].drection = RIGHT; strcpy(p[M / 2][N / 2].part, sHEAD); p[M / 2][N / 2 - 1].drection = RIGHT; strcpy(p[M / 2][N / 2 - 1].part, sBODY); p[M / 2][N / 2 - 2].drection = RIGHT; strcpy(p[M / 2][N / 2 - 2].part, sTAIL); add_food(p); }
void new_food() { int i = food_list->length; if (i > ((screen->max_x / 2) * screen->max_y)) { i = 1; } for (; i > 0; i--) { add_food(screen->max_x, screen->max_y, food_list); } }
int move_snake(STRU_B(*p)[N], char drection) { int i, j, NH = 0; for (i = 0; i < M; i++) for (j = 0; j < N; j++) { if (strcmp(p[i][j].part, bNONE) == 0 || strcmp(p[i][j].part, sBODY) == 0); else if (strcmp(p[i][j].part, sHEAD) == 0 && NH == 0) { p[i][j].drection = drection; switch (drection) { case UP:if (strcmp(p[i - 1][j].part, bBORDER) == 0) { lose(p); return 0; } if (strcmp(p[i - 1][j].part, bFOOD) == 0) add_food(p); else delete_tail(p); p[i - 1][j] = p[i][j]; break; case DOWN:if (strcmp(p[i + 1][j].part, bBORDER) == 0) { lose(p); return 0; } if (strcmp(p[i + 1][j].part, bFOOD) == 0) add_food(p); else delete_tail(p); p[i + 1][j] = p[i][j]; break; case LEFT:if (strcmp(p[i][j - 1].part, bBORDER) == 0) { lose(p); return 0; } if (strcmp(p[i][j - 1].part, bFOOD) == 0) add_food(p); else delete_tail(p); p[i][j - 1] = p[i][j]; break; case RIGHT:if (strcmp(p[i][j + 1].part, bBORDER) == 0) { lose(p); return 0; } if (strcmp(p[i][j + 1].part, bFOOD) == 0) add_food(p); else delete_tail(p); p[i][j + 1] = p[i][j]; break; } strcpy(p[i][j].part, sBODY); NH++; } } return 1; }
void init() { screen = new_screen(); int x_pos = screen->max_x/2; int y_pos = screen->max_y/2; snake = new_snake(x_pos, y_pos); move_list = new_move_list(); int i; food_list = new_food_list(); for(i = 0; i < FOOD_COUNT; i++) { add_food(screen->max_x, screen->max_y, food_list); } }
void LSystem::updateList() { mPerlin = Perlin( 8, Rand::randInt( 0, 100000 ) ); mSteps = mProduction.length(); if( mSteps > mProduction.length() ) { mSteps = mProduction.length(); } gl::pushModelView(); gl::translate( mLoc ); gl::pushModelView(); int countFood = 0; for( int i = 0; i < mSteps; i++ ) { char step = mProduction.at(i); if( step == 'F' || step == '|' ) { Vec2f current_loc = (gl::getModelView() * Vec4f( 0.0f, 0.0f, 0.0f, 1.0f )).xy(); current_loc -= mStartLength; current_loc += mLoc; boost::shared_ptr<Food> add_food( new Food( current_loc, ColorA( ColorA::black() ) ) ); mFood.push_back( add_food ); if( countFood > 0 ) { boost::weak_ptr<Food> weakFood(add_food); mFood[countFood-1]->setNext( weakFood ); } countFood++; gl::translate( 0, -mDrawLength + mPerlin.fBm( app::getElapsedFrames()*1.0f, i, 0.001f )*20000.0f ); } else if( step == '+' ) { gl::rotate( mTheta + mPerlin.fBm( app::getElapsedFrames()*1.0f, i, 0.001f )*(2000.0f * i/30.0f)); } else if( step == '-' ) { gl::rotate( -1*(mTheta + mPerlin.fBm( app::getElapsedFrames()*1.0f, i, 0.001f )*(2000.0f * i/30.0f))); } else if( step == '[' ) { gl::pushModelView(); } else if( step == ']' ) { gl::popModelView(); } } gl::popModelView(); gl::popModelView(); }
create() { ::create(); /* OBJEDIT { */ set_gender( 1 ); set_spd( 10 ); set_con( 10 ); set_str( 10 ); set_dex( 10 ); set_wil( 10 ); set_cha( 10 ); set_int( 10 ); set_emp( 10 ); set_hp( 59 ); set_distant( "Harry the affectionate" ); set_specific( "Harry the affectionate" ); set_look( "~Pron ~verbis wearing faded brown overalls, and has a look of puzzlment on ~poss face. ~Pron ~verblook a bit drunk." ); set_name( "harry" ); add_alt_name( "harry the affectionate" ); /* } OBJEDIT */ set_wimpy(100); // probably never want people to be able to butcher him, ne? :P clone_object("/ai/talk")->move(this_object()); add_talk_response( "hello", "say Hello! I love everything!" ); add_talk_response( "how are you", "say I'm just peachy, thanks!" ); add_talk_response( "your name", ({ "smile", "say Harry's my name! Don't wear it out!", #'give_coin }) ); } void give_coin( string text, object actor, object target ) { object ob = clone_object("/obj/coins"); ob->move(this_object()); command("give coin to " + actor->query_name(), this_object()); } void on_hunger() { add_food( 100 ); }
void do_get(char *cmd, t_player *player, int fd) { char *obj; if ((obj = get_name(cmd)) == NULL) send_ko(fd); if (strcmp(obj, "nourriture\n") == 0) add_food(fd, player->posx, player->posy); else if (strcmp(obj, "linemate\n") == 0) get_object(player, 1, fd); else if (strcmp(obj, "deraumere\n") == 0) get_object(player, 2, fd); else if (strcmp(obj, "sibur\n") == 0) get_object(player, 3, fd); else if (strcmp(obj, "mendiane\n") == 0) get_object(player, 4, fd); else if (strcmp(obj, "phiras\n") == 0) get_object(player, 5, fd); else if (strcmp(obj, "thystame\n") == 0) get_object(player, 6, fd); else send_ko(fd); }