Advertisement
Guest User

Negotiator.java

a guest
Nov 20th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 5.53 KB | None | 0 0
  1. package personality;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.concurrent.ThreadLocalRandom;
  6.  
  7. import main.PlayerStruct;
  8. import main.Utilities;
  9. import main.Utilities.Outcome;
  10.  
  11. public class Negotiator implements Personality {
  12.     private static final int UNKNOWN = -1;
  13.  
  14.     @Override
  15.     public Action decideAction(HashMap<String, PlayerStruct> playerMap, PlayerStruct ownStruct) {
  16.         Integer[] knownPlayers = {0};
  17.         Integer[] neutralPlayers = {0};
  18.         playerMap.forEach((key, value)->{
  19.             if(value.getTeam() != UNKNOWN ) {
  20.                 knownPlayers[0]++;
  21.                 Outcome outcome = Utilities.getOutcome(ownStruct.getTeam(), value.getTeam());
  22.                 if(outcome == Outcome.SAME_TEAM || outcome == Outcome.NEUTRAL) {
  23.                     neutralPlayers[0]++;
  24.                 }
  25.             }
  26.         });
  27.         double randomDouble = Math.random();
  28.         randomDouble = randomDouble * 100 + 1;
  29.         int randomInt = (int) randomDouble;
  30.         float probability = neutralPlayers[0]/knownPlayers[0] * knownPlayers[0]/playerMap.size();
  31.         boolean retval2 = probability >= 50 ? true: false;
  32.         if(retval2 || randomInt < 10)
  33.             return Action.Duel;
  34.         else
  35.             return Action.Negotiate;
  36.     }
  37.  
  38.     @Override
  39.     public String decideWhoToBattle(HashMap<String, PlayerStruct> playerMap, PlayerStruct ownStruct) {
  40.         ArrayList<ArrayList<String>> myTeam = new ArrayList<ArrayList<String>>();
  41.         ArrayList<ArrayList<String>> neutralTeam = new ArrayList<ArrayList<String>>();
  42.         ArrayList<ArrayList<String>> iKillTeam = new ArrayList<ArrayList<String>>();
  43.         ArrayList<ArrayList<String>> killsMeTeam = new ArrayList<ArrayList<String>>();
  44.         ArrayList<ArrayList<String>> idkTeam = new ArrayList<ArrayList<String>>();
  45.         idkTeam.add(new ArrayList<String>());
  46.         neutralTeam.add(new ArrayList<String>());
  47.         iKillTeam.add(new ArrayList<String>());
  48.         killsMeTeam.add(new ArrayList<String>());
  49.         myTeam.add(new ArrayList<String>());
  50.         playerMap.forEach((key, value)->{
  51.             if(!value.isAlive())
  52.             {
  53.             }
  54.             else if(value.getTeam() == UNKNOWN ) {
  55.                 ArrayList<String> a = idkTeam.get(0);
  56.                 a.add(key);
  57.             }
  58.             else {
  59.                 switch(Utilities.getOutcome(ownStruct.getTeam(), value.getTeam()))
  60.                 {
  61.                 case VICTORY:
  62.                 {
  63.                     iKillTeam.get(0).add(key);
  64.                     break;
  65.                 }
  66.                 case LOSS:
  67.                 {
  68.                     killsMeTeam.get(0).add(key);
  69.                     break;
  70.                 }
  71.                 case SAME_TEAM:
  72.                 {
  73.                     if(!key.equals(ownStruct.getName()))
  74.                         myTeam.get(0).add(key);
  75.                     break;
  76.                 }
  77.                 case NEUTRAL:
  78.                 {
  79.                     neutralTeam.get(0).add(key);
  80.                     break;
  81.                 }
  82.                 }
  83.             }
  84.         });
  85.         if(!iKillTeam.get(0).isEmpty()) {
  86.             return iKillTeam.get(0).get(0);
  87.         }
  88.         else if(!idkTeam.get(0).isEmpty()) {
  89.             return idkTeam.get(0).get(0);
  90.         }
  91.         else if(!killsMeTeam.get(0).isEmpty()) {
  92.             return killsMeTeam.get(0).get(0);
  93.         }
  94.  
  95.         return null;
  96.     }
  97.  
  98.     @Override
  99.     public boolean acceptNegotiation(HashMap<String, PlayerStruct> playerMap, String proposedPlayer) {
  100.         int a = ThreadLocalRandom.current().nextInt(0, 100);
  101.         return a > 30;
  102.     }
  103.  
  104.     @Override
  105.     public String decideWhoToNegotiate(HashMap<String, PlayerStruct> playerMap, PlayerStruct ownStruct) {
  106.         ArrayList<ArrayList<String>> neutralTeam = new ArrayList<ArrayList<String>>();
  107.         ArrayList<ArrayList<String>> iKillTeam = new ArrayList<ArrayList<String>>();  
  108.         ArrayList<ArrayList<String>> idkTeam = new ArrayList<ArrayList<String>>();
  109.         idkTeam.add(new ArrayList<String>());
  110.         neutralTeam.add(new ArrayList<String>());
  111.         iKillTeam.add(new ArrayList<String>());
  112.  
  113.         playerMap.forEach((key, value)->{
  114.             if(!value.isAlive())
  115.             {
  116.             }
  117.             else if(value.getTeam() == UNKNOWN ) {
  118.                 ArrayList<String> a = idkTeam.get(0);
  119.                 a.add(key);
  120.             }
  121.             else {
  122.                 switch(Utilities.getOutcome(ownStruct.getTeam(), value.getTeam()))
  123.                 {
  124.                 case VICTORY:
  125.                 {
  126.                     iKillTeam.get(0).add(key);
  127.                     break;
  128.                 }
  129.                 case NEUTRAL:
  130.                 {
  131.                     neutralTeam.get(0).add(key);
  132.                     break;
  133.                 }
  134.                 default:
  135.                     break;
  136.                 }
  137.             }
  138.         });
  139.  
  140.         if(!neutralTeam.get(0).isEmpty()) {
  141.             return neutralTeam.get(0).get(0);
  142.         }
  143.         else if(!iKillTeam.get(0).isEmpty()) {
  144.             return iKillTeam.get(0).get(0);
  145.         }
  146.         else if(!idkTeam.get(0).isEmpty()) {
  147.             return idkTeam.get(0).get(0);
  148.         }
  149.  
  150.         return null;
  151.     }
  152.  
  153.     @Override
  154.     public String decideWhatToNegotiate(HashMap<String, PlayerStruct> playerMap, PlayerStruct ownStruct) {
  155.  
  156.         String[] retVal = {null};
  157.         playerMap.forEach((key, value)->{
  158.             if(value.getTeam() != -1 && Utilities.getOutcome(ownStruct.getTeam(), value.getTeam()) == Outcome.LOSS) {
  159.                 retVal[0] = key;
  160.             }
  161.         });
  162.  
  163.         if(retVal[0] == null){
  164.             playerMap.forEach((key, value)->{
  165.                 if(value.getTeam() != -1 && value.getTeam() != ownStruct.getTeam()) {
  166.                     retVal[0] = key;
  167.                 }
  168.             });
  169.         }
  170.         if(retVal[0] == null){
  171.             playerMap.forEach((key, value)->{
  172.                 if(value.getTeam() != -1) {
  173.                     retVal[0] = key;
  174.                 }
  175.             });
  176.         }
  177.         return retVal[0];
  178.     }
  179.  
  180.     public String decideWhatToCounterNegotiate(HashMap<String, PlayerStruct> playerMap, PlayerStruct ownStruct, String proposal) {
  181.         String[] retVal = {null};
  182.         playerMap.forEach((key, value)->{
  183.             if(value.getTeam() != -1 && Utilities.getOutcome(ownStruct.getTeam(), value.getTeam()) == Outcome.LOSS && proposal != key) {
  184.                 retVal[0] = key;
  185.             }
  186.         });
  187.  
  188.         if(retVal[0] == null){
  189.             playerMap.forEach((key, value)->{
  190.                 if(value.getTeam() != -1 && value.getTeam() != ownStruct.getTeam() && proposal != key) {
  191.                     retVal[0] = key;
  192.                 }
  193.             });
  194.         }
  195.         if(retVal[0] == null){
  196.             playerMap.forEach((key, value)->{
  197.                 if(value.getTeam() != -1 && proposal != key) {
  198.                     retVal[0] = key;
  199.                 }
  200.             });
  201.         }
  202.         return retVal[0];
  203.     }
  204.  
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement