Subversion Repositories QTron

Compare Revisions

Regard whitespace Rev 9 → Rev 3

/bike.h
19,7 → 19,6
Bike(QTcpSocket *sock, int i);
void draw(QPainter *painter);
void run(QList<Bike *> bikes);
bool hasCollided();
void reset();
bool isReady;
bool dead;
33,12 → 32,11
int id;
bool isDisconnected;
bool hasHadGo;
QColor colour;
bool collided;
 
private:
QTcpSocket *socket;
float velocity;
QColor colour;
 
private slots:
void readyRead();
/bike.cpp
13,6 → 13,7
x = rand() % 800;
y = rand() % 600;
linePoints.append(QPoint(x, y));
linePoints.append(QPoint(x, y));
 
velocity = 1;
angle = 0;
21,7 → 22,6
isReady = false;
hadGo = false;
dead = false;
collided = false;
 
colour.setBlue(0);
colour.setRed(0);
61,10 → 61,6
painter->drawLine(point1, point2);
}
 
if (!collided)
{
collided = hasCollided();
 
if (angle == 0)
{
y -= velocity;
81,11 → 77,6
{
x -= velocity;
}
}
else
{
linePoints.clear();
}
 
if (angle == 0 || angle == 180)
{
121,19 → 112,11
socket->write(QString::number(bike->x).toAscii());
socket->write(" ");
socket->write(QString::number(bike->y).toAscii());
socket->write(" ");
socket->write(QString::number(bike->colour.red()).toAscii());
socket->write(" ");
socket->write(QString::number(bike->colour.green()).toAscii());
socket->write(" ");
socket->write(QString::number(bike->colour.blue()).toAscii());
socket->write("\n");
}
}
}
 
linePoints.append(QPoint(x, y));
 
if (dead)
{
show = false;
162,51 → 145,6
hasHadGo = true;
}
 
int sign(float x){
if(x > 0){
return 1;
}
if(x < 0){
return -1;
}
return 0;
}
 
bool Bike::hasCollided()
{
// Do collision detection here
// use linePoints
int i = linePoints.count() - 1;
if(linePoints[i-1].x() < 0 || linePoints[i-1].x() > 800 || linePoints[i-1].y() < 0 || linePoints[i-1].y() > 600)
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++)
{
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()))
{
// If not parallel
if(linePoints[j].x() == linePoints[j+1].x())
{
// 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;
}
}
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())
{
if((sign(linePoints[i-1].x() - linePoints[j].x()) != sign(linePoints[i-1].x() - linePoints[j+1].x())))
return true;
}
}
}
}
return false;
}
 
void Bike::reset()
{
x = rand() % 800;
214,6 → 152,7
linePoints.clear();
 
linePoints.append(QPoint(x, y));
linePoints.append(QPoint(x, y));
 
velocity = 1;
angle = 0;
221,7 → 160,6
isReady = true;
hadGo = false;
dead = false;
collided = false;
 
socket->write("RESET\n");
}
235,6 → 173,7
 
if (line == "L")
{
linePoints.append(QPoint(x, y));
angle -= 90;
 
if (angle >= 360)
249,6 → 188,7
}
else if (line == "R")
{
linePoints.append(QPoint(x, y));
angle += 90;
 
if (angle >= 360)
263,16 → 203,19
}
else if (line == "A")
{
linePoints[linePoints.size() - 1] = QPoint(x, y);
velocity += 0.1;
hadGo = true;
}
else if (line == "D")
{
linePoints[linePoints.size() - 1] = QPoint(x, y);
velocity -= 0.2;
hadGo = true;
}
else if (line == "N")
{
linePoints[linePoints.size() - 1] = QPoint(x, y);
hadGo = true;
}
else if (line.startsWith("NAME "))
288,11 → 231,11
{
colour.setRed(list[1].toInt());
}
if (list.count() >= 3)
else if (list.count() >= 3)
{
colour.setGreen(list[2].toInt());
}
if (list.count() >= 4)
else if (list.count() >= 4)
{
colour.setBlue(list[3].toInt());
}