Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Audio;
- using Microsoft.Xna.Framework.Content;
- using Microsoft.Xna.Framework.GamerServices;
- using Microsoft.Xna.Framework.Graphics;
- using Microsoft.Xna.Framework.Input;
- using Microsoft.Xna.Framework.Media;
- namespace football
- {
- public class BlueTeam
- {
- private static int Last_Team_Ball = 1;
- private static int Pass = 1;
- public static void action(Player[] myTeam, Player[] enemyTeam)
- {
- for (int i = 0; i < myTeam.Length; i++) //Loopar över alla spelare
- {
- Player me = myTeam[i];
- Player closest = GetClosest(myTeam[i],myTeam);
- Player closestenemy = GetClosest(myTeam[i], enemyTeam);
- Player closestToBall = GetClosestToBall(myTeam);
- float closestEnemyDistance = GetClosestEnemyDistance(myTeam[i], enemyTeam);
- float closestFriendlyDistance = GetClosestFriendlyDistance(myTeam[i], myTeam);
- if (myTeam[i].Identifier == "Forward")
- {
- if (Ball.Taken == false)
- {
- if (Last_Team_Ball == 1) //om senaste bollinnehavet är mitt lag
- {
- if (closestFriendlyDistance > me.Dist(Ball.Pos))
- myTeam[i].action(ActionCode.goBall, 5);
- else if (Pass==i)
- myTeam[i].action(ActionCode.goBall, 10);
- else
- {
- if (i == 1)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 1 / 3);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 2)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 2 / 3);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 3)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 1 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 4)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 2 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 3 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- }
- }
- else //om senaste bollinnehavet är motståndarna
- {
- if (closestFriendlyDistance > 100)
- myTeam[i].action(ActionCode.goBall, 5);
- else
- {
- myTeam[i].action(ActionCode.goHome, 5);
- }
- }
- }
- else if (Ball.getOwner.Team == myTeam[i].Team) //tillhör mitt lag
- {
- Last_Team_Ball = 1;
- if (myTeam[i] == Ball.getOwner) //tillhör Den här gubben
- {
- if (myTeam[i].Position.X < Game1.graphics.PreferredBackBufferWidth / 8)
- {
- if (myTeam[i].Position.Y > Game1.graphics.PreferredBackBufferHeight / 2)
- myTeam[i].action(ActionCode.shootMiddle, 5);
- else
- myTeam[i].action(ActionCode.shootMiddle, 5);
- }
- else
- {
- if (closestEnemyDistance > 20)
- {
- myTeam[i].action(ActionCode.go, new Vector2(Game1.graphics.PreferredBackBufferWidth / 8, Game1.graphics.PreferredBackBufferHeight / 2), 10);
- }
- else
- {
- Pass = GetBestPass(myTeam[i], myTeam, enemyTeam, i);
- myTeam[i].action(ActionCode.pass, myTeam[Pass], 5);
- }
- }
- }
- else // Tillhör mitt lag men inte denna gubbe
- {
- if (closestEnemyDistance < 1)
- {
- if (closestFriendlyDistance > 100)
- {
- Vector2 Move_Towards = new Vector2(closestenemy.Position.X - myTeam[i].Position.X, closestenemy.Position.Y - myTeam[i].Position.Y);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else
- {
- if (i==1 || i==3)
- {
- Vector2 Move_Towards = new Vector2(closest.Position.X - myTeam[i].Position.X, closest.Position.Y+100);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else
- {
- Vector2 Move_Towards = new Vector2(closest.Position.X - myTeam[i].Position.X, closest.Position.Y-100);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- }
- }
- else
- {
- if (closestFriendlyDistance > 2000)
- {
- Vector2 Move_Towards = new Vector2(closestenemy.Position.Y - 100, closestenemy.Position.Y - myTeam[i].Position.Y);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else
- {
- if (i == 1)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 1 / 3);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 2)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 2 / 3);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 3)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 1 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else if (i == 4)
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 2 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- else
- {
- Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 3 / 4);
- myTeam[i].action(ActionCode.go, Move_Towards, 5);
- }
- }
- }
- }
- }
- else //Tillhör motståndarlaget
- {
- Last_Team_Ball = 2;
- if (closestFriendlyDistance > 100)
- myTeam[i].action(ActionCode.goBall, 5);
- else
- myTeam[i].action(ActionCode.goHome, 3);
- }
- }
- if (myTeam[i].Identifier == "Goalie")
- {
- if (Ball.getOwner != myTeam[i])
- {
- myTeam[i].action(ActionCode.goHome, 3);
- }
- else
- {
- if (Ball.getOwner == myTeam[i])
- {
- Pass = GetBestPass(myTeam[i], myTeam, enemyTeam, i);
- myTeam[i].action(ActionCode.pass, myTeam[Pass], 10);
- }
- }
- }
- if (myTeam[i].Dist(Ball.Pos) < 10 && !Ball.Taken)
- {
- myTeam[i].action(ActionCode.pickUpBall);
- }
- if (closestToBall.Identifier != "Goalie")
- closestToBall.action(ActionCode.goBall, 10);
- else if (closestToBall.Position.X>Game1.graphics.PreferredBackBufferWidth * 9/10)
- closestToBall.action(ActionCode.goBall, 10);
- }
- }
- public static Player GetClosest(Player me, Player[] myTeam)
- {
- Player closest = new Player();
- float dist = 1000, tempDist;
- for (int i = 0; i < myTeam.Length; i++)
- {
- if (myTeam[i] != me)
- {
- tempDist = me.Dist(myTeam[i].Position);
- if (tempDist < dist)
- {
- closest = myTeam[i];
- dist = tempDist;
- }
- }
- }
- return closest;
- }
- public static Player GetClosestToBall(Player[] myTeam)
- {
- Player player = new Player();
- float dist = 1000,tempDist;
- for (int i = 0; i < myTeam.Length; i++)
- {
- tempDist = myTeam[i].Dist(Ball.Pos);
- if (tempDist < dist)
- {
- player = myTeam[i];
- dist = tempDist;
- }
- }
- return player;
- }
- public static float GetClosestEnemyDistance(Player me, Player[] enemyTeam)
- {
- float dist=me.Dist(enemyTeam[0].Position), tempDist;
- for (int i = 0; i < enemyTeam.Length; i++)
- {
- tempDist = me.Dist(enemyTeam[i].Position);
- if (tempDist < dist)
- {
- dist=tempDist;
- }
- }
- return dist;
- }
- public static float GetClosestFriendlyDistance(Player me, Player[] myTeam)
- {
- float dist = me.Dist(myTeam[0].Position), tempDist;
- for (int i = 0; i < myTeam.Length; i++)
- {
- tempDist = me.Dist(myTeam[i].Position);
- if (tempDist < dist)
- {
- dist = tempDist;
- }
- }
- return dist;
- }
- public static int GetBestPass(Player me, Player[] myTeam, Player[] enemyTeam, int me_number)
- {
- double dist = myTeam[0].Position.X, tempX;
- int Pass = new int();
- Pass = 0;
- for (int i = 0; i < myTeam.Length; i++)
- {
- if (i != me_number)
- {
- tempX = (Game1.graphics.PreferredBackBufferWidth-myTeam[i].Position.X) * GetClosestEnemyDistance(myTeam[i], enemyTeam);
- if (tempX > dist && me.Dist(myTeam[i].Position)>100)
- {
- dist = tempX;
- Pass = i;
- }
- }
- }
- return Pass;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement