Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- QPointF TWorld::Rule1(size_t shipNum) {
- QPointF massCenter;
- size_t ships = 0;
- for (int i = 0; i < Ships.size(); ++i) {
- if (i != shipNum &&
- Ships[i].PlayerId == Ships[shipNum].PlayerId &&
- Ships[i].Target == Ships[shipNum].Target)
- {
- massCenter += Ships[i].Position;
- ++ships;
- }
- }
- if (!ships) {
- return QPointF(0, 0);
- }
- massCenter /= ships;
- return (massCenter - Ships[shipNum].Position) / 160;
- }
- QPointF TWorld::Rule2(size_t shipNum) {
- QPointF c(0, 0);
- for (int i = 0; i < Ships.size(); ++i) {
- if (i != shipNum) {
- float distance = Distance(Ships[i].Position, Ships[shipNum].Position);
- if (distance < 21) {
- QPointF direction = Ships[i].Position - Ships[shipNum].Position;
- Normalize(direction);
- direction *= (33 - distance);
- c -= direction;
- }
- }
- }
- return c / 35;
- }
- QPointF TWorld::Rule3(size_t shipNum) {
- QPointF massCenter;
- size_t ships = 0;
- for (int i = 0; i < Ships.size(); ++i) {
- if (i != shipNum &&
- Ships[i].PlayerId == Ships[shipNum].PlayerId &&
- Ships[i].Target == Ships[shipNum].Target)
- {
- massCenter += Ships[i].Speed;
- ++ships;
- }
- }
- if (!ships) {
- return QPointF(0, 0);
- }
- massCenter /= ships;
- return (massCenter - Ships[shipNum].Speed) / 18;
- }
- QPointF TWorld::Rule4(size_t shipNum) {
- QPointF direction = Ships[shipNum].Target - Ships[shipNum].Position;
- LimitSpeed(direction, 0.85);
- return direction;
- }
- QPointF TWorld::Rule5(size_t shipNum) {
- QPointF c(0, 0);
- for (int i = 0; i < Planets.size(); ++i) {
- if (Ships[shipNum].Target != Planets[i].Position) {
- float distance = Distance(Planets[i].Position, Ships[shipNum].Position);
- if (distance < 10.0 + 1.4 * Planets[i].Radius) {
- QPointF direction = Planets[i].Position - Ships[shipNum].Position;
- Normalize(direction);
- direction *= (18.0 + 1.4 * Planets[i].Radius - distance);
- c -= direction;
- }
- }
- }
- return c / 8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement