Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.59 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Xna.Framework;
  6. using Microsoft.Xna.Framework.Audio;
  7. using Microsoft.Xna.Framework.Content;
  8. using Microsoft.Xna.Framework.GamerServices;
  9. using Microsoft.Xna.Framework.Graphics;
  10. using Microsoft.Xna.Framework.Input;
  11. using Microsoft.Xna.Framework.Media;
  12.  
  13. namespace football
  14. {
  15.     public class BlueTeam
  16.     {
  17.  
  18.         private static int Last_Team_Ball = 1;
  19.         private static int Pass = 1;
  20.  
  21.         public static void action(Player[] myTeam, Player[] enemyTeam)
  22.         {
  23.             for (int i = 0; i < myTeam.Length; i++) //Loopar över alla spelare
  24.             {
  25.                 Player me = myTeam[i];
  26.                 Player closest = GetClosest(myTeam[i],myTeam);
  27.                 Player closestenemy = GetClosest(myTeam[i], enemyTeam);
  28.                 Player closestToBall = GetClosestToBall(myTeam);
  29.                 float closestEnemyDistance = GetClosestEnemyDistance(myTeam[i], enemyTeam);
  30.                 float closestFriendlyDistance = GetClosestFriendlyDistance(myTeam[i], myTeam);
  31.                 if (myTeam[i].Identifier == "Forward")
  32.                 {
  33.                     if (Ball.Taken == false)
  34.                     {
  35.                         if (Last_Team_Ball == 1) //om senaste bollinnehavet är mitt lag
  36.                         {
  37.                             if (closestFriendlyDistance > me.Dist(Ball.Pos))
  38.                                 myTeam[i].action(ActionCode.goBall, 5);
  39.                             else if (Pass==i)
  40.                                 myTeam[i].action(ActionCode.goBall, 10);
  41.                             else                                
  42.                             {
  43.                                 if (i == 1)
  44.                                 {
  45.                                     Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 1 / 3);
  46.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  47.                                 }
  48.                                 else if (i == 2)
  49.                                 {
  50.                                     Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 2 / 3);
  51.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  52.                                 }
  53.                                 else if (i == 3)
  54.                                 {
  55.                                     Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 1 / 4);
  56.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  57.                                 }
  58.                                 else if (i == 4)
  59.                                 {
  60.                                     Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 2 / 4);
  61.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  62.                                 }
  63.                                 else
  64.                                 {
  65.                                     Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 3 / 4);
  66.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  67.                                 }
  68.                             }
  69.                         }
  70.                         else   //om senaste bollinnehavet är motståndarna
  71.                         {
  72.                             if (closestFriendlyDistance > 100)
  73.                                 myTeam[i].action(ActionCode.goBall, 5);
  74.                             else
  75.                             {
  76.                                 myTeam[i].action(ActionCode.goHome, 5);
  77.                             }
  78.                         }
  79.                     }
  80.                     else if (Ball.getOwner.Team == myTeam[i].Team) //tillhör mitt lag
  81.                     {
  82.                         Last_Team_Ball = 1;
  83.                         if (myTeam[i] == Ball.getOwner)  //tillhör Den här gubben
  84.                         {
  85.                             if (myTeam[i].Position.X < Game1.graphics.PreferredBackBufferWidth / 8)
  86.                             {
  87.                                 if (myTeam[i].Position.Y > Game1.graphics.PreferredBackBufferHeight / 2)
  88.                                     myTeam[i].action(ActionCode.shootMiddle, 5);
  89.                                 else
  90.                                     myTeam[i].action(ActionCode.shootMiddle, 5);
  91.                             }
  92.                             else
  93.                             {
  94.                                 if (closestEnemyDistance > 20)
  95.                                 {
  96.                                     myTeam[i].action(ActionCode.go, new Vector2(Game1.graphics.PreferredBackBufferWidth / 8, Game1.graphics.PreferredBackBufferHeight / 2), 10);
  97.                                 }
  98.                                 else
  99.                                 {
  100.                                     Pass = GetBestPass(myTeam[i], myTeam, enemyTeam, i);
  101.                                     myTeam[i].action(ActionCode.pass, myTeam[Pass], 5);
  102.                                 }
  103.  
  104.                             }
  105.                         }
  106.                         else    // Tillhör mitt lag men inte denna gubbe
  107.                         {
  108.                             if (closestEnemyDistance < 1)
  109.                             {
  110.                                 if (closestFriendlyDistance > 100)
  111.                                 {
  112.                                     Vector2 Move_Towards = new Vector2(closestenemy.Position.X - myTeam[i].Position.X, closestenemy.Position.Y - myTeam[i].Position.Y);
  113.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  114.                                 }
  115.                                 else
  116.                                 {
  117.                                     if (i==1 || i==3)
  118.                                     {
  119.                                         Vector2 Move_Towards = new Vector2(closest.Position.X - myTeam[i].Position.X, closest.Position.Y+100);
  120.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  121.                                     }
  122.                                     else
  123.                                     {
  124.                                         Vector2 Move_Towards = new Vector2(closest.Position.X - myTeam[i].Position.X, closest.Position.Y-100);
  125.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  126.                                     }
  127.                                 }
  128.                             }
  129.                             else
  130.                             {
  131.                                 if (closestFriendlyDistance > 2000)
  132.                                 {
  133.                                     Vector2 Move_Towards = new Vector2(closestenemy.Position.Y - 100, closestenemy.Position.Y - myTeam[i].Position.Y);
  134.                                     myTeam[i].action(ActionCode.go, Move_Towards, 5);
  135.                                 }
  136.                                 else
  137.                                 {
  138.                                     if (i == 1)
  139.                                     {
  140.                                         Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 1 / 3);
  141.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  142.                                     }
  143.                                     else if (i == 2)
  144.                                     {
  145.                                         Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 2, Game1.graphics.PreferredBackBufferHeight * 2 / 3);
  146.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  147.                                     }
  148.                                     else if (i == 3)
  149.                                     {
  150.                                         Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 1 / 4);
  151.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  152.                                     }
  153.                                     else if (i == 4)
  154.                                     {
  155.                                         Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 2 / 4);
  156.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  157.                                     }
  158.                                     else
  159.                                     {
  160.                                         Vector2 Move_Towards = new Vector2(Game1.graphics.PreferredBackBufferWidth / 4, Game1.graphics.PreferredBackBufferHeight * 3 / 4);
  161.                                         myTeam[i].action(ActionCode.go, Move_Towards, 5);
  162.                                     }
  163.                                 }
  164.                             }
  165.                         }
  166.                     }
  167.                     else //Tillhör motståndarlaget
  168.                     {
  169.                         Last_Team_Ball = 2;
  170.                         if (closestFriendlyDistance > 100)
  171.                             myTeam[i].action(ActionCode.goBall, 5);
  172.                         else
  173.                             myTeam[i].action(ActionCode.goHome, 3);
  174.                     }
  175.                 }
  176.                 if (myTeam[i].Identifier == "Goalie")
  177.                 {
  178.                     if (Ball.getOwner != myTeam[i])
  179.                     {
  180.                         myTeam[i].action(ActionCode.goHome, 3);
  181.                     }
  182.                     else
  183.                     {
  184.                         if (Ball.getOwner == myTeam[i])
  185.                         {
  186.                             Pass = GetBestPass(myTeam[i], myTeam, enemyTeam, i);
  187.                             myTeam[i].action(ActionCode.pass, myTeam[Pass], 10);
  188.                         }
  189.                     }
  190.                 }
  191.  
  192.                 if (myTeam[i].Dist(Ball.Pos) < 10 && !Ball.Taken)
  193.                 {
  194.                     myTeam[i].action(ActionCode.pickUpBall);
  195.                 }
  196.                 if (closestToBall.Identifier != "Goalie")
  197.                     closestToBall.action(ActionCode.goBall, 10);
  198.                 else if (closestToBall.Position.X>Game1.graphics.PreferredBackBufferWidth * 9/10)
  199.                     closestToBall.action(ActionCode.goBall, 10);
  200.  
  201.             }
  202.         }
  203.  
  204.         public static Player GetClosest(Player me, Player[] myTeam)
  205.         {
  206.             Player closest = new Player();
  207.             float dist = 1000, tempDist;
  208.             for (int i = 0; i < myTeam.Length; i++)
  209.             {
  210.                 if (myTeam[i] != me)
  211.                 {
  212.                     tempDist = me.Dist(myTeam[i].Position);
  213.                     if (tempDist < dist)
  214.                     {
  215.                         closest = myTeam[i];
  216.                         dist = tempDist;
  217.                     }
  218.                 }
  219.             }
  220.             return closest;
  221.         }
  222.         public static Player GetClosestToBall(Player[] myTeam)
  223.         {
  224.             Player player = new Player();
  225.             float dist = 1000,tempDist;
  226.             for (int i = 0; i < myTeam.Length; i++)
  227.             {
  228.                 tempDist = myTeam[i].Dist(Ball.Pos);
  229.                 if (tempDist < dist)
  230.                 {
  231.                     player = myTeam[i];
  232.                     dist = tempDist;
  233.                 }
  234.             }
  235.             return player;
  236.         }
  237.         public static float GetClosestEnemyDistance(Player me, Player[] enemyTeam)
  238.         {
  239.             float dist=me.Dist(enemyTeam[0].Position), tempDist;
  240.             for (int i = 0; i < enemyTeam.Length; i++)
  241.             {
  242.                 tempDist = me.Dist(enemyTeam[i].Position);
  243.                 if (tempDist < dist)
  244.                 {
  245.                     dist=tempDist;
  246.                 }
  247.             }
  248.             return dist;
  249.         }
  250.         public static float GetClosestFriendlyDistance(Player me, Player[] myTeam)
  251.         {
  252.             float dist = me.Dist(myTeam[0].Position), tempDist;
  253.             for (int i = 0; i < myTeam.Length; i++)
  254.             {
  255.                 tempDist = me.Dist(myTeam[i].Position);
  256.                 if (tempDist < dist)
  257.                 {
  258.                     dist = tempDist;
  259.                 }
  260.             }
  261.             return dist;
  262.         }
  263.         public static int GetBestPass(Player me, Player[] myTeam, Player[] enemyTeam, int me_number)
  264.         {
  265.             double dist = myTeam[0].Position.X, tempX;
  266.             int Pass = new int();
  267.             Pass = 0;
  268.             for (int i = 0; i < myTeam.Length; i++)
  269.             {
  270.                 if (i != me_number)
  271.                 {
  272.                                      
  273.  
  274.                     tempX = (Game1.graphics.PreferredBackBufferWidth-myTeam[i].Position.X) * GetClosestEnemyDistance(myTeam[i], enemyTeam);
  275.                     if (tempX > dist && me.Dist(myTeam[i].Position)>100)
  276.                     {
  277.                         dist = tempX;
  278.                         Pass = i;
  279.                     }
  280.                 }
  281.             }
  282.             return Pass;
  283.         }
  284.     }
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement