Beispiel #1
0
void Snake::detectCrash()
{
    QAnimatedPixmapItem* head = snakelist.first();
    QList<QGraphicsItem *> l = head->collidingItems();
    for (QList<QGraphicsItem *>::Iterator it=l.begin(); it!=l.end(); ++it) {
        QGraphicsItem* item = *it;
        // check if snake ate a mouse
        if ( item->type() == mouse_rtti && item->collidesWithItem(head) ) {
            delete item;
            emit ateMouse();
            grow++;   // make the snake grow the next time it moves
            setScore(5);
            return;
        }
        // check if snake hit a wall
        if ( item->type() == wall_rtti && item->collidesWithItem(head) ) {
            emit dead();
            autoMoveTimer->stop();
            return;
        }
    }
    // check if snake hit itself
    for (int i = 3; i < snakelist.count(); i++) {
        if (head->collidesWithItem(snakelist.at(i)) ) {
            emit dead();
            autoMoveTimer->stop();
            return;
        }
    }
}