Advertisement
makispaiktis

Player

Dec 10th, 2018 (edited)
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.43 KB | None | 0 0
  1. public class Player {
  2.     int playerId;
  3.     int playerTileId;
  4.     String name;
  5.     int score;
  6.     Board board;
  7.    
  8.     public Player() {
  9.         playerId = 0;
  10.         name = "";
  11.         score = 0;
  12.         board = new Board();
  13.     }
  14.    
  15.     public Player(int playerId, String name, int score, Board templateBoard) {
  16.         this.playerId = playerId;
  17.         this.name = name;
  18.         this.score = score;
  19.         board = new Board(templateBoard);
  20.     }
  21.    
  22.     public Player(Player templatePlayer) {
  23.         this.playerId = templatePlayer.playerId;
  24.         this.name = templatePlayer.name;
  25.         this.score = templatePlayer.score;
  26.         this.board = new Board(templatePlayer.board);
  27.     }
  28.    
  29.     public void setPlayerId(int playerId) {
  30.         this.playerId = playerId;
  31.     }
  32.    
  33.     public void setName(String name) {
  34.         this.name = name;
  35.     }
  36.    
  37.     public void setScore(int score) {
  38.         this.score = score;
  39.     }
  40.    
  41.     public void setBoards(Board board) {
  42.         this.board = board;
  43.     }
  44.    
  45.     public int getPlayerId() {
  46.         return playerId;
  47.     }
  48.    
  49.     public String getName() {
  50.         return name;
  51.     }
  52.    
  53.     public int getScore() {
  54.         return score;
  55.     }
  56.    
  57.     public Board getBoard() {
  58.         return board;
  59.     }
  60.    
  61.     public void setPlayerTileId(int tile) {
  62.         playerTileId = tile;
  63.     }
  64.    
  65.     public int getPlayerTileId() {
  66.         return playerTileId;
  67.     }
  68.    
  69.     public int[] move(int id, int dice) {
  70.         int tileNow = id + dice;
  71.         int snakeBites = 0;
  72.         int laddersUsed = 0;
  73.         int redApplesEaten = 0;
  74.         int blackApplesEaten = 0;
  75.         int[] arrayReturned = new int[5];
  76.        
  77.         // Search if tileNow == SnakeHead
  78.         for(int i=0; i<board.snakes.length; i++) {
  79.             if(board.snakes[i].getHeadId() == tileNow) {
  80.                 snakeBites++;
  81.                 tileNow = board.snakes[i].getTailId();
  82.                 System.out.println("A little snake bit you!");
  83.                 break;
  84.             }  
  85.         }
  86.        
  87.         // Search if tileNow == LadderUp
  88.         for(int i=0; i<board.ladders.length; i++) {
  89.             if(board.ladders[i].getDownStepId() == tileNow && !board.ladders[i].getBroken()) {
  90.                 laddersUsed++;
  91.                 tileNow = board.ladders[i].getUpStepId();
  92.                 board.ladders[i].setbroken(true);
  93.                 System.out.println("Lucky you! You found a ladder.");
  94.                 break;
  95.             }
  96.         }
  97.        
  98.         // Search if tileNow = appleTileId
  99.         for(int i=0; i<board.apples.length; i++) {
  100.             if(board.apples[i].getAppleTileId() == tileNow) {
  101.                 switch(board.apples[i].getColor()) {
  102.                
  103.                     case "red":
  104.                         score += board.apples[i].getPoints();
  105.                         redApplesEaten++;
  106.                         System.out.println("You ate a red apple. You earned " + board.apples[i].getPoints() + " points.");
  107.                         board.apples[i].setAppleTileId(-100);
  108.                         break;
  109.                    
  110.                    
  111.                     case "black":
  112.                         score -= board.apples[i].getPoints();
  113.                         blackApplesEaten++;
  114.                         System.out.println("You ate a black apple... You lost " + board.apples[i].getPoints() + " points.");
  115.                         board.apples[i].setAppleTileId(-100);
  116.                         break;
  117.                        
  118.                     default:
  119.                         System.out.println("Apples are red or black!");
  120.                 }
  121.             }
  122.         }
  123.        
  124.         arrayReturned[0] = tileNow;
  125.         arrayReturned[1] = snakeBites;
  126.         arrayReturned[2] = laddersUsed;
  127.         arrayReturned[3] = redApplesEaten;
  128.         arrayReturned[4] = blackApplesEaten;
  129.        
  130.         return arrayReturned;
  131.        
  132.        
  133.         }
  134.    
  135.     public int heuristicMove(int id, int dice) {       
  136.         int tileNow = id + dice;
  137.        
  138.         // Search if tileNow == SnakeHead
  139.         for(int i=0; i<board.snakes.length; i++) {
  140.             if(board.snakes[i].getHeadId() == tileNow) {
  141.                 tileNow = board.snakes[i].getTailId();
  142.                 break;
  143.             }  
  144.         }
  145.        
  146.         // Search if tileNow == LadderUp
  147.         for(int i=0; i<board.ladders.length; i++) {
  148.             if(board.ladders[i].getDownStepId() == tileNow && !board.ladders[i].getBroken()) {
  149.                 tileNow = board.ladders[i].getUpStepId();
  150.                 break;
  151.             }
  152.         }
  153.        
  154.         // Search if tileNow = appleTileId
  155.         for(int i=0; i<board.apples.length; i++) {
  156.             if(board.apples[i].getAppleTileId() == tileNow) {
  157.                 switch(board.apples[i].getColor()) {
  158.                
  159.                     case "red":
  160.                         score += board.apples[i].getPoints();
  161.                         break;
  162.                    
  163.                    
  164.                     case "black":
  165.                         score -= board.apples[i].getPoints();
  166.                         break;
  167.                        
  168.                     default:
  169.                         System.out.println("Apples are red or black!");
  170.                 }
  171.             }
  172.         }
  173.         return tileNow;
  174.     }
  175.    
  176.     public double evaluate(int currentPos, int dice) {
  177.         int pointsBefore = score;
  178.         int finalPos = heuristicMove(currentPos, dice);
  179.         double weight;
  180.         /*if(opponentPos > currentPos) {
  181.             weight = (finalPos - currentPos) * 0.65 + (score - pointsBefore) * 0.35;
  182.         }*/
  183.        
  184.    
  185.         weight = (finalPos - currentPos) * 0.2 + (score - pointsBefore) * 0.8;
  186.        
  187.         score = pointsBefore;
  188.         return weight;
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement