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; }
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(); }
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; }
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; } } }
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()); } } }
line_t lineFromTwoPoints(const vector_t a, const vector_t b) { vector_t direction = subtractVectors(b,a); return initLine(direction,a); }
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); }