Example #1
1
void UpdateController::moveSnake(Snake &snake) {
    switch (input) {
        case KEY_LEFT:
            snake.movex(-1);
            break;
        case KEY_RIGHT:
            snake.movex(1);
            break;
        case KEY_UP:
            snake.movey(-1);
            break;
        case KEY_DOWN:
            snake.movey(1);
            break;
        default:
            snake.movex(1);
    }
    for ( auto iter = coins.begin(), endPtr = coins.end() ; iter != endPtr ; ++iter ) {
		if (snake.headLiesOn(iter->getxy())) {
			snake.grow(iter->getvalue());
			coinMutex.lock();
			*iter = Coin(getFreeCoord());
			coinMutex.unlock();
			break;
		}
	}
    auto head = snake.getHead();
    if (snake.bitItself() || !map.contains(head) || snakeWallCollision()) {
        stop();
    }
}