Subversion Repositories QTron

Compare Revisions

Ignore whitespace Rev 13 → Rev 14

/bike.cpp
36,7 → 36,7
}
}
 
void Bike::draw(QPainter *painter)
void Bike::draw(QPainter *painter, QList<Bike *> bikes)
{
if (show)
{
63,7 → 63,7
 
if (!collided)
{
collided = hasCollided();
collided = hasCollided(bikes);
 
if (angle == 0)
{
107,7 → 107,7
Bike *bike = bikes[i];
if (bike->isReady && bike->show)
{
if (bike->dead || bike->collided)
if (bike->dead || bike->collided)
{
socket->write("DEAD ");
socket->write(bike->name.toAscii());
172,7 → 172,7
return 0;
}
 
bool Bike::hasCollided()
bool Bike::hasCollided(QList<Bike *> bikes)
{
// Do collision detection here
// use linePoints
181,25 → 181,30
return true;
if(linePoints[i].x() < 0 || linePoints[i].x() > 800 || linePoints[i].y() < 0 || linePoints[i].y() > 600)
return true;
for(int j = 0; j < linePoints.count() - 2; j++)
int j;
Bike *bike;
foreach(bike,bikes)
{
if(!(linePoints[j].x() == linePoints[j+1].x() && linePoints[i].x() == linePoints[i-1].x()) && !(linePoints[j].y() == linePoints[j+1].y() && linePoints[i].y() == linePoints[i-1].y()))
for(j = 0; j < bike->linePoints.count() - 2; j++)
{
// If not parallel
if(linePoints[j].x() == linePoints[j+1].x())
if(!(bike->linePoints[j].x() == bike->linePoints[j+1].x() && linePoints[i].x() == linePoints[i-1].x()) && !(bike->linePoints[j].y() == bike->linePoints[j+1].y() && linePoints[i].y() == linePoints[i-1].y()))
{
// x equal
if(linePoints[i-1].x() > linePoints[j].x() && linePoints[i].x() < linePoints[j].x() || linePoints[i-1].x() < linePoints[j].x() && linePoints[i].x() > linePoints[j].x()){
if((sign(linePoints[i-1].y() - linePoints[j].y()) != sign(linePoints[i-1].y() - linePoints[j+1].y())))
return true;
// If not parallel
if(bike->linePoints[j].x() == bike->linePoints[j+1].x())
{
// x equal
if(linePoints[i-1].x() > bike->linePoints[j].x() && linePoints[i].x() < bike->linePoints[j].x() || linePoints[i-1].x() < bike->linePoints[j].x() && linePoints[i].x() > bike->linePoints[j].x()){
if((sign(linePoints[i-1].y() - bike->linePoints[j].y()) != sign(linePoints[i-1].y() - bike->linePoints[j+1].y())))
return true;
}
}
}
else if(linePoints[j].y() == linePoints[j+1].y())
{
if(linePoints[i-1].y() > linePoints[j].y() && linePoints[i].y() < linePoints[j].y() || linePoints[i-1].y() < linePoints[j].y() && linePoints[i].y() > linePoints[j].y())
else if(bike->linePoints[j].y() == bike->linePoints[j+1].y())
{
if((sign(linePoints[i-1].x() - linePoints[j].x()) != sign(linePoints[i-1].x() - linePoints[j+1].x())))
return true;
if(linePoints[i-1].y() > bike->linePoints[j].y() && linePoints[i].y() < bike->linePoints[j].y() || linePoints[i-1].y() < bike->linePoints[j].y() && linePoints[i].y() > bike->linePoints[j].y())
{
if((sign(linePoints[i-1].x() - bike->linePoints[j].x()) != sign(linePoints[i-1].x() - bike->linePoints[j+1].x())))
return true;
}
}
}
}
/mainwindow.cpp
63,13 → 63,13
}
}
 
for (int i = 0; i < bikes.count(); i++)
{
if (bikes[i]->show)
{
bikes[i]->draw(&painter);
}
}
for (int i = 0; i < bikes.count(); i++)
{
if (bikes[i]->show)
{
bikes[i]->draw(&painter,bikes);
}
}
}
 
checkClients();