Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 4.62 KB | None | 0 0
  1. with montecarlo, ada.Text_IO, ada.Integer_Text_IO;
  2. use montecarlo, ada.Text_IO, ada.Integer_Text_IO;
  3.  
  4. package body botIO is
  5.  
  6.    function splitLine(line : String; line_length : Integer) return T_command is
  7.       word_begin : Integer := 1;
  8.       word_count : Integer := 0;
  9.       command :T_command;
  10.    begin
  11.  
  12.       for i in 1..line_length loop
  13.          if line(i) = ' '  or line(i) = ',' then
  14.             if(word_count = 0) then
  15.                command.pars(0) := To_Unbounded_String(line(line'First..i-1));
  16.                command.prefix := T_prefix'Value(line(line'First..i-1));
  17.             else
  18.                command.pars(word_count) := To_Unbounded_String( line(word_begin..i-1) );
  19.             end if;
  20.             word_begin := i+1;
  21.             word_count := word_count +1;
  22.          end if;
  23.       end loop;
  24.      
  25.       command.pars(word_count) :=
  26.         To_Unbounded_String(line(word_begin..line_length));
  27.       command.size := word_count;
  28.       return command;
  29.    end splitLine;
  30.    
  31.    
  32.    procedure readSettings(command : T_command; game : in out T_game) is
  33.    begin
  34.       if To_String(command.pars(1)) = "hand_per_level" then
  35.          game.settings.hands_per_lvl := Integer'Value(To_String(command.pars(2)));
  36.       elsif To_String(command.pars(1)) = "timebank" then
  37.          game.settings.timebank_max := Integer'Value(To_String(command.pars(2)));
  38.       elsif To_String(command.pars(1)) = "time_per_move" then
  39.          game.settings.timebank_sup := Integer'Value(To_String(command.pars(2)));
  40.       end if;
  41.    end readSettings;
  42.    
  43.    procedure readUpdateGame(command : T_command; game :  in out  T_game) is
  44.    begin
  45.       if(To_String(command.pars(1)) = "hand") then
  46.          game.round := Integer'Value(To_String(command.pars(2)));
  47.  
  48.       elsif (To_String(command.pars(1)) = "stack") then
  49.          if(command.pars(2) = "self") then
  50.             game.my_money := Integer'Value(To_String(command.pars(3)));
  51.          else
  52.             game.op_money := Integer'Value(To_String(command.pars(3)));
  53.          end if;
  54.  
  55.       elsif (To_String(command.pars(1)) = "button") then
  56.          game.button_is_mine := command.pars(2) = "self";
  57.  
  58.       elsif (To_String(command.pars(1)) = "small_blind") then
  59.          game.small_blind := Integer'value(To_String(command.pars(2)));
  60.  
  61.       elsif (To_String(command.pars(1)) = "big_blind") then
  62.          game.big_blind := Integer'value(To_String(command.pars(2)));
  63.       end if;
  64.  
  65.    end readUpdateGame;
  66.    
  67.    procedure readUpdateHand(command : T_command; game :  in out T_game; sample : in out T_Sample) is
  68.    begin
  69.      
  70.       if(To_String(command.pars(1)) = "hand") then
  71.          emptySet(game.hand);
  72.          addToSet(parseCard(To_String(command.pars(3))), game.hand);
  73.          addToSet(parseCard(To_String(command.pars(4))), game.hand);
  74.          initSample(sample, game.hand);
  75.          
  76.       elsif(To_String(command.pars(1)) = "table") then
  77.          emptySet(game.table);
  78.          initSample(sample, game.hand);
  79.          for i in 2..(command.size-1) loop        
  80.             addToSet(parseCard(To_String(command.pars(i))), game.table);
  81.             addToSampleSets(sample, parseCard(To_String(command.pars(i))));
  82.          end loop;
  83.  
  84.       elsif(To_String(command.pars(1)) = "pot") then
  85.          game.pot := Integer'Value(To_String(command.pars(2)));
  86.  
  87.       elsif(To_String(command.pars(1)) = "amount_to_call") then
  88.          game.amount_to_call := Integer'Value(To_String(command.pars(2)));
  89.  
  90.       elsif(To_String(command.pars(1)) = "min_bet") then
  91.          game.min_bet := Integer'Value(To_String(command.pars(2)));
  92.  
  93.       elsif (To_String(command.pars(1)) = "move") then
  94.          game.last_op_move := T_move'Value(To_String(command.pars(3)));
  95.          if(To_String(command.pars(2)) = "other" and To_String(command.pars(3)) = "bet") then
  96.             game.op_money := game.op_money - Integer'Value(To_String(command.pars(4)));
  97.          end if;
  98.          
  99.       elsif (To_String(command.pars(1)) = "win") then
  100.          emptySet(game.hand);
  101.          emptySet(game.table);
  102.          if(To_String(command.pars(2)) = "other") then
  103.             game.op_money := game.op_money + Integer'Value(To_String(command.pars(3)));
  104.          else
  105.             game.op_money := game.op_money + Integer'Value(To_String(command.pars(3)));
  106.          end if;
  107.       end if;
  108.    end readUpdateHand;
  109.    
  110.    procedure printCard(card : in T_card) is
  111.    begin
  112.       Put_Line(Standard_Error, "");
  113.       Put(Standard_Error, card.rank+2);
  114.       Put(Standard_Error, "  of ");
  115.       Put(Standard_Error, (T_colour'Image(card.colour)));
  116.       Put_Line(Standard_Error, "");
  117.    end printCard;
  118.    
  119. end botIO;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement