Exemplo n.º 1
0
line_t lineFromListedPoints(const points_t points, const list_t list)
{
  vector_t p=averageListedPoints(points,list);
  vector_t n=directionOfListedPoints(points,list);
  line_t l=initLine(n,p);
  return l;
}
Exemplo n.º 2
0
void init(void)
{
  mapState.border = createPanelBorder(X_BORD, Y_BORD, WIDTH_BORD);
  mapState.button_rect = initRect();
  mapState.button_triangle = initTriangle();
  mapState.button_line = initLine();
  mapState.button_circle = initCircle();
  
  mapState.points_storage = createLinkedList();
  mapState.edges_storage = createLinkedList();
}
Exemplo n.º 3
0
int main(int argc, char const *argv[])
{
    char line[MAX_EXPRESSION_LENGTH];
    double value;
    int n;

    while (fgets(line, MAX_EXPRESSION_LENGTH, stdin) != NULL)
    {
        line[strlen(line) - 1] = '\0';
        initLine(line);
        value = parseLine(line);
        printf(">> %lf\n", value);
    }

    return 0;
}
Exemplo n.º 4
0
void AdActor::followPath() {
	// skip current position
	_path->getFirst();
	while (_path->getCurrent() != nullptr) {
		if (_path->getCurrent()->x != _posX || _path->getCurrent()->y != _posY) {
			break;
		}
		_path->getNext();
	}

	// are there points to follow?
	if (_path->getCurrent() != nullptr) {
		_state = STATE_FOLLOWING_PATH;
		initLine(BasePoint(_posX, _posY), *_path->getCurrent());
	} else {
		if (_afterWalkDir != DI_NONE) {
			turnTo(_afterWalkDir);
		} else {
			_state = STATE_READY;
		}
	}
}
Exemplo n.º 5
0
void AdActor::getNextStep() {
	if (_walkSprite) {
		_currentSprite = _walkSprite->getSprite(_dir);
	} else {
		AdSpriteSet *anim = getAnimByName(_walkAnimName);
		if (anim) {
			_currentSprite = anim->getSprite(_dir);
		}
	}

	if (!_currentSprite) {
		return;
	}

	_currentSprite->getCurrentFrame(_zoomable ? ((AdGame *)_gameRef)->_scene->getZoomAt(_posX, _posY) : 100, _zoomable ? ((AdGame *)_gameRef)->_scene->getZoomAt(_posX, _posY) : 100);
	if (!_currentSprite->isChanged()) {
		return;
	}


	int maxStepX, maxStepY;
	maxStepX = abs(_currentSprite->_moveX);
	maxStepY = abs(_currentSprite->_moveY);

	maxStepX = MAX(maxStepX, maxStepY);
	maxStepX = MAX(maxStepX, 1);

	while (_pFCount > 0 && maxStepX >= 0) {
		_pFX += _pFStepX;
		_pFY += _pFStepY;

		_pFCount--;
		maxStepX--;
	}

	if (((AdGame *)_gameRef)->_scene->isBlockedAt((int)_pFX, (int) _pFY, true, this)) {
		if (_pFCount == 0) {
			_state = _nextState;
			_nextState = STATE_READY;
			return;
		}
		goTo(_targetPoint->x, _targetPoint->y);
		return;
	}


	_posX = (int)_pFX;
	_posY = (int)_pFY;

	afterMove();


	if (_pFCount == 0) {
		if (_path->getNext() == nullptr) {
			_posX = _targetPoint->x;
			_posY = _targetPoint->y;

			_path->reset();
			if (_afterWalkDir != DI_NONE) {
				turnTo(_afterWalkDir);
			} else {
				_state = _nextState;
				_nextState = STATE_READY;
			}
		} else {
			initLine(BasePoint(_posX, _posY), *_path->getCurrent());
		}
	}
}
Exemplo n.º 6
0
line_t lineFromTwoPoints(const vector_t a,
                         const vector_t b)
{
  vector_t direction = subtractVectors(b,a);
  return initLine(direction,a);
}
Exemplo n.º 7
0
void test_lex()
{
    char *line;
    Token token;
    int n;

    line = "1 + 2";

    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 2);

    n = getToken(&token);
    assert(token.type == END_OF_LINE_TOKEN);

    line = "  1   +   2   ";
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 2);

    n = getToken(&token);
    assert(token.type == END_OF_LINE_TOKEN);
    
    line = "  1 + 1. 2 ";
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SYNTAX_ERROR);

    line = "  1 + 1.2.2 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SYNTAX_ERROR);

    line = "  .1 + 1.2.2 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == SYNTAX_ERROR);

    line = "  1 + .12 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SYNTAX_ERROR);

    line = "  a1 + .12 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == BAD_CHAR);

    line = "  1a + .12 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == BAD_CHAR);

    line = "  1 1. + .12 "; 
    initLine(line);
    n = getToken(&token);

    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SYNTAX_ERROR);

    line = "( 1 + 2 ) * ( 2 / 3 )";
    initLine(line);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == LEFT_PARENTHESIS_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 1);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == ADD_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 2);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == RIGHT_PARENTHESIS_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == MUL_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == LEFT_PARENTHESIS_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 2);  

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == DIV_OPERATOR_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == NUMBER_TOKEN);
    assert(token.value == 3);  

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == RIGHT_PARENTHESIS_TOKEN);

    n = getToken(&token);
    assert(n == SUCCESS);
    assert(token.type == END_OF_LINE_TOKEN);
}