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);
}
Esempio n. 2
0
File: main.c Progetto: Touzen/snake
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;
}
Esempio n. 4
0
File: main.c Progetto: Touzen/snake
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);
    }
}
Esempio n. 5
0
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();
}
Esempio n. 6
0
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 );
}
Esempio n. 7
0
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);
}