Example #1
0
void Step(SnakeParts* snake) {
	StoreXY(snake);
	if ((snake[0].dir == UP) && (snake[0].y_pos == 0)) {
		snake[0].y_pos = (MapHeight - 1) * SpriteSize;
		snake[0].sprite.setPosition(snake[0].x_pos, snake[0].y_pos);
	}
	else if (snake[0].dir == DOWN && snake[0].y_pos == (MapHeight - 1) * SpriteSize) {
		snake[0].y_pos = 0;
		snake[0].sprite.setPosition(snake[0].x_pos, snake[0].y_pos);
	}
	else if (snake[0].dir == RIGHT && snake[0].x_pos == 0) {
		snake[0].x_pos = (MapWidth - 1) * SpriteSize;
		snake[0].sprite.setPosition(snake[0].x_pos, snake[0].y_pos);
	}
	else if (snake[0].dir == LEFT && snake[0].x_pos == (MapWidth - 1) * SpriteSize) {
		snake[0].x_pos = 0;
		snake[0].sprite.setPosition(snake[0].x_pos, snake[0].y_pos);
	}
	else SnakeUpdate(snake);

	for (int i = 1; i < MaxLengthSnake; i++) {
		if (snake[i].draw == 1) {
			StoreXY(snake + i);
			snake[i].x_pos = snake[i - 1].x_store;
			snake[i].y_pos = snake[i - 1].y_store;
			snake[i].sprite.setPosition(snake[i].x_pos, snake[i].y_pos);
		}
	}
}
void Game::Update()
{
    srand((int)RF_Engine::instance->time->currentTime);

    deltaCount += RF_Engine::instance->time->deltaTime;
    if(deltaCount >= 0.05f)
    {
        deltaCount = 0.0f;

        if(false == losed)
        {
            InputUpdate();
            SnakeUpdate();
            GridUpdate();
        }
        else
        {
            if(RF_Engine::instance->key[_return])
            {
                restart();
            }
        }

        handiCam();
        shakeCam();
        pL->drawAlone(bg);
    }
}