Advertisement
DooDooPoker

Untitled

Jan 23rd, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.60 KB | None | 0 0
  1. <?php
  2.  
  3. namespace AppBundle\Service;
  4.  
  5. /**
  6. * Class PreFlopSolutionService
  7. * @package AppBundle\Service
  8. */
  9. class PreFlopSolutionService extends BaseService
  10. {
  11. const IN_POSITION = 'IP';
  12. const OUT_OF_POSITION = 'OOP';
  13. const UNOPENED = 'UNOPENED';
  14. const FACING_OPENING = 'FACING_OPENING';
  15. const FACING_3BET = 'FACING_3BET';
  16. const FACING_4BET = 'FACING_4BET';
  17. const FACING_4BET_SHOVE = 'FACING_4BET_SHOVE';
  18. const FACING_5BET_SHOVE = 'FACING_5BET_SHOVE';
  19.  
  20. /**
  21. * @param $position
  22. * @param $hand
  23. * @param null $situation
  24. * @return array
  25. */
  26. public function getPreFlopSolution($position, $hand, $situation)
  27. {
  28. $orderedHand = $this->sortHand($hand);
  29. $isSuited = $this->isThisHandSuited($hand);
  30.  
  31. $handArray = str_split($orderedHand);
  32. $handValues = $handArray[0] . $handArray[2];
  33.  
  34. if ($position == self::IN_POSITION) {
  35. switch ($situation) {
  36. case self::UNOPENED:
  37. // step 1: can fold or open
  38. return $this->handleIpUnopened($handValues, $isSuited, $situation);
  39. break;
  40. // step 3: fold, call, 4bet, 4bet_shove
  41. case self::FACING_3BET:
  42. return $this->handleIpFacing3Bet($handValues, $isSuited, $situation);
  43. break;
  44. // step 5: call and fold
  45. case self::FACING_5BET_SHOVE:
  46. return $this->handleIpFacing5BetShove($handValues, $isSuited, $situation);
  47. break;
  48. }
  49. }
  50. if ($position == self::OUT_OF_POSITION) {
  51. switch ($situation) {
  52. // step 2, ip opened, so now we can fold, call, or 3bet
  53. case self::FACING_OPENING:
  54. return $this->handleOopFacingOpening($handValues, $isSuited, $situation);
  55. break;
  56. // step 4a, facing 4bet, we can fold, call, 5bet_shove
  57. case self::FACING_4BET:
  58. return $this->handleOopFacing4Bet($handValues, $isSuited, $situation);
  59. break;
  60. // step 4b, facing 4bet_shove we can call or fold
  61. case self::FACING_4BET_SHOVE:
  62. return $this->handleOopFacing4BetShove($handValues, $isSuited, $situation);
  63. break;
  64.  
  65. }
  66. }
  67. }
  68.  
  69. /**
  70. * @param $handValues
  71. * @param $isSuited
  72. * @return array|string
  73. *
  74. * step 3: fold, call, 4bet, 4bet_shove
  75. */
  76. private function handleIpFacing3Bet($handValues, $isSuited, $situation)
  77. {
  78. $foldPercentage = $this->getIpFoldvs3betRange($handValues, $isSuited);
  79. $callPercentage = $this->getIpCallvs3betRange($handValues, $isSuited);
  80. $fourBetPercentage = $this->getIp4Betrange($handValues, $isSuited);
  81. $fourBetShovePercentage= $this->getIp4BetShoveRange($handValues, $isSuited);
  82.  
  83. $percentageArray = array(
  84. "fold" => $foldPercentage,
  85. "call" => $callPercentage,
  86. "4bet" => $fourBetPercentage,
  87. "shove" => $fourBetShovePercentage
  88. );
  89.  
  90. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  91.  
  92. }
  93.  
  94. /**
  95. * @param $handValues
  96. * @param $isSuited
  97. * @return array
  98. *
  99. * step 5: call and fold
  100. */
  101. private function handleIpFacing5BetShove($handValues, $isSuited, $situation)
  102. {
  103. $callPercentage = $this->getCallVs5BetShoveRange($handValues, $isSuited);
  104. $foldPercentage = $this->getFoldVs5BetShoveRange($handValues, $isSuited);
  105.  
  106. $percentageArray = array(
  107. "fold" => $foldPercentage,
  108. "call" => $callPercentage);
  109.  
  110. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  111.  
  112. }
  113.  
  114. /**
  115. * @param $handValues
  116. * @param $isSuited
  117. * @return array
  118. *
  119. * step 4a, facing 4bet, we can fold, call, 5bet_shove
  120. */
  121. private function handleOopFacing4Bet($handValues, $isSuited, $situation)
  122. {
  123. $callPercentage = $this->getOopCallvs4Betrange($handValues, $isSuited);
  124. $foldPercentage = $this->getOopFoldvs4Betrange($handValues, $isSuited);
  125. $fiveBetPercentage = $this->getOop5BetShoveRange($handValues, $isSuited);
  126.  
  127. $percentageArray = array(
  128. "fold" => $foldPercentage,
  129. "call" => $callPercentage,
  130. "shove" => $fiveBetPercentage
  131. );
  132. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  133. }
  134. /**
  135. * @param $handValues
  136. * @param $isSuited
  137. * @return array
  138. *
  139. * step 4b, facing 4bet_shove we can call or fold
  140. */
  141. private function handleOopFacing4BetShove($handValues, $isSuited, $situation)
  142. {
  143. $callPercentage = $this->getCallVs4BetShoveRange($handValues, $isSuited);
  144. $foldPercentage = $this->getFoldVs4BetShoveRange($handValues, $isSuited);
  145.  
  146. $percentageArray = array(
  147. "fold" => $foldPercentage,
  148. "call" => $callPercentage
  149. );
  150. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  151. }
  152.  
  153. /**
  154. * @param $handValues
  155. * @param $isSuited
  156. * @param $range
  157. * @return int
  158. */
  159. private function getPercentage($handValues, $isSuited, $range)
  160. {
  161. $percentage = 0;
  162. if (array_key_exists($handValues, $range)) {
  163. $percentage = $range[$handValues];
  164. }
  165. if ($isSuited === true) {
  166. $handValues .= "s";
  167. if (array_key_exists($handValues, $range)) {
  168. $percentage = $range[$handValues];
  169. }
  170. }
  171. if ($isSuited === false) {
  172. $handValues .= "o";
  173. if (array_key_exists($handValues, $range)) {
  174. $percentage = $range[$handValues];
  175. }
  176. }
  177. return $percentage;
  178. }
  179.  
  180. /**
  181. * @param $percentageArray
  182. * @param $situation
  183. * @return array
  184. */
  185. private function pickRandomAction($percentageArray, $situation)
  186. {
  187. $rand = rand(1, 100);
  188. $sum = 0;
  189. $chosenAction = "";
  190.  
  191. foreach ($percentageArray as $k => $v) {
  192. $sum += $v;
  193. if ($sum >= $rand) {
  194. $chosenAction = array("advice" => $k);;
  195. break;
  196. }
  197. }
  198.  
  199. return array_merge($situation, $chosenAction, $percentageArray);
  200. }
  201.  
  202. /**
  203. * @param $handValues
  204. * @param $isSuited
  205. * @return array
  206. */
  207. private function handleOopFacingOpening($handValues, $isSuited, $situation)
  208. {
  209. $foldingsPercentage = $this->getOopFoldingRange($handValues, $isSuited);
  210. $driebetPercentage = $this->getOopDrieBetRange($handValues, $isSuited);
  211. $callingsPercentage = 100 - $foldingsPercentage - $driebetPercentage;
  212. $percentageArray = array(
  213. "fold" => $foldingsPercentage,
  214. "call" => $callingsPercentage,
  215. "3bet" => $driebetPercentage
  216. );
  217.  
  218. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  219. }
  220.  
  221. /**
  222. * we can fold or open
  223. *
  224. * @param $handValues
  225. * @param $isSuited
  226. * @return array
  227. */
  228. private function handleIpUnopened($handValues, $isSuited, $situation)
  229. {
  230. $openingsPercentage = $this->getIpOpeningsRange25x($handValues, $isSuited);
  231. $foldingsPercentage = 100 - $openingsPercentage;
  232.  
  233. $percentageArray = array(
  234. "fold" => $foldingsPercentage,
  235. "open" => $openingsPercentage
  236. );
  237. return $this->pickRandomAction($percentageArray, ["situation" => $situation]);
  238. }
  239.  
  240. /**
  241. * @param $handValues
  242. * @param $isSuited
  243. * @return mixed
  244. */
  245. private function getOopFoldingRange($handValues, $isSuited)
  246. {
  247. $range = array(
  248. 'K3o' => 10,
  249. 'K2o' => 100,
  250. 'Q5o' => 85,
  251. 'Q4o' => 70,
  252. 'Q3o' => 100,
  253. 'Q2o' => 100,
  254. 'J6o' => 100,
  255. 'J5o' => 100,
  256. 'J4o' => 100,
  257. 'J3o' => 100,
  258. 'J2o' => 100,
  259. 'T6o' => 100,
  260. 'T5o' => 100,
  261. 'T4o' => 100,
  262. 'T3o' => 100,
  263. 'T2o' => 100,
  264. '96o' => 45,
  265. '95o' => 100,
  266. '94o' => 100,
  267. '93o' => 100,
  268. '92o' => 100,
  269. '85o' => 100,
  270. '84o' => 100,
  271. '83o' => 100,
  272. '82' => 100,
  273. '75o' => 35,
  274. '74o' => 100,
  275. '73o' => 100,
  276. '72' => 100,
  277. '64o' => 100,
  278. '63o' => 100,
  279. '62o' => 100,
  280. '54o' => 65,
  281. '53o' => 90,
  282. '52o' => 100,
  283. '43o' => 100,
  284. '42o' => 100,
  285. '32o' => 100
  286. );
  287. return $this->getPercentage($handValues, $isSuited, $range);
  288. }
  289.  
  290. /**
  291. * @param $handValues
  292. * @param $isSuited
  293. * @return int
  294. */
  295. private function getOopDrieBetRange($handValues, $isSuited)
  296. {
  297. $range = array(
  298. 'AA' => 100,
  299. 'KK' => 100,
  300. 'QQ' => 100,
  301. 'JJ' => 100,
  302. 'TT' => 100,
  303. '99' => 100,
  304. '88' => 100,
  305. '77' => 100,
  306. '66' => 75,
  307. '55' => 60,
  308. '44' => 25,
  309. '33' => 15,
  310. 'AK' => 100,
  311. 'AQ' => 100,
  312. 'AJ' => 100,
  313. 'ATs' => 100,
  314. 'ATo' => 70,
  315. 'A9s' => 100,
  316. 'A9o' => 45,
  317. 'A8s' => 65,
  318. 'A8o' => 10,
  319. 'A7s' => 25,
  320. 'A7o' => 15,
  321. 'A6s' => 30,
  322. 'A5s' => 90,
  323. 'A4s' => 85,
  324. 'A3s' => 60,
  325. 'A2s' => 20,
  326. 'KQs' => 100,
  327. 'KQo' => 80,
  328. 'KJs' => 100,
  329. 'KJo' => 35,
  330. 'KTs' => 100,
  331. 'KTo' => 25,
  332. 'K9s' => 85,
  333. 'K9o' => 15,
  334. 'K8s' => 15,
  335. 'K7s' => 30,
  336. 'K7o' => 10,
  337. 'K6s' => 35,
  338. 'K6o' => 5,
  339. 'K5s' => 30,
  340. 'K4s' => 55,
  341. 'K3s' => 85,
  342. 'K3o' => 5,
  343. 'K2s' => 25,
  344. 'QJs' => 100,
  345. 'QJo' => 15,
  346. 'QTs' => 100,
  347. 'QTo' => 15,
  348. 'Q9s' => 30,
  349. 'Q9o' => 25,
  350. 'Q8s' => 45,
  351. 'Q7s' => 35,
  352. 'Q6s' => 35,
  353. 'Q4s' => 15,
  354. 'Q3s' => 20,
  355. 'Q2s' => 10,
  356. 'JTs' => 100,
  357. 'JTo' => 15,
  358. 'J9s' => 45,
  359. 'J9o' => 20,
  360. 'J8s' => 60,
  361. 'J7s' => 40,
  362. 'J5s' => 10,
  363. 'J3s' => 25,
  364. 'T9s' => 70,
  365. 'T9o' => 20,
  366. 'T8s' => 45,
  367. 'T8o' => 25,
  368. 'T7s' => 75,
  369. 'T7o' => 5,
  370. 'T6s' => 30,
  371. '98s' => 90,
  372. '98o' => 15,
  373. '97s' => 100,
  374. '97o' => 20,
  375. '96s' => 60,
  376. '95s' => 10,
  377. '93s' => 10,
  378. '87s' => 80,
  379. '87o' => 20,
  380. '86s' => 100,
  381. '86o' => 25,
  382. '85s' => 50,
  383. '84s' => 25,
  384. '76s' => 100,
  385. '76o' => 25,
  386. '75s' => 65,
  387. '74s' => 45,
  388. '65s' => 100,
  389. '65o' => 10,
  390. '64s' => 30,
  391. '63s' => 25,
  392. '54s' => 100,
  393. '52s' => 15,
  394. '43s' => 15,
  395. '32s' => 10
  396. );
  397. return $this->getPercentage($handValues, $isSuited, $range);
  398. }
  399.  
  400. /**
  401. * @param $handValues
  402. * @param $isSuited
  403. * @return int
  404. */
  405. private function getIpOpeningsRange25x($handValues, $isSuited)
  406. {
  407. $range = array(
  408. 'AA' => 100,
  409. 'KK' => 100,
  410. 'QQ' => 100,
  411. 'JJ' => 100,
  412. 'TT' => 100,
  413. '99' => 100,
  414. '88' => 100,
  415. '77' => 100,
  416. '66' => 100,
  417. '55' => 100,
  418. '44' => 100,
  419. '33' => 100,
  420. '22' => 100,
  421. 'AK' => 100,
  422. 'AQ' => 100,
  423. 'AJ' => 100,
  424. 'AT' => 100,
  425. 'A9' => 100,
  426. 'A8' => 100,
  427. 'A7' => 100,
  428. 'A6' => 100,
  429. 'A5' => 100,
  430. 'A4' => 100,
  431. 'A3' => 100,
  432. 'A2' => 100,
  433. 'KQ' => 100,
  434. 'KJ' => 100,
  435. 'KT' => 100,
  436. 'K9' => 100,
  437. 'K8' => 100,
  438. 'K7' => 100,
  439. 'K6' => 100,
  440. 'K5' => 100,
  441. 'K4' => 100,
  442. 'K3' => 100,
  443. 'K2' => 100,
  444. 'QJ' => 100,
  445. 'QT' => 100,
  446. 'Q9' => 100,
  447. 'Q8' => 100,
  448. 'Q7' => 100,
  449. 'Q6' => 100,
  450. 'Q5' => 100,
  451. 'Q4' => 100,
  452. 'Q3' => 100,
  453. 'Q2' => 100,
  454. 'JT' => 100,
  455. 'J9' => 100,
  456. 'J8' => 100,
  457. 'J7' => 100,
  458. 'J6' => 100,
  459. 'J5' => 100,
  460. 'J4' => 100,
  461. 'J3' => 100,
  462. 'J2s' => 100,
  463. 'J2o' => 25,
  464. 'T9' => 100,
  465. 'T8' => 100,
  466. 'T7' => 100,
  467. 'T6' => 100,
  468. 'T5' => 100,
  469. 'T4s' => 100,
  470. 'T4o' => 50,
  471. 'T3s' => 100,
  472. 'T3o' => 15,
  473. 'T2s' => 100,
  474. '98' => 100,
  475. '97' => 100,
  476. '96' => 100,
  477. '95' => 100,
  478. '94s' => 100,
  479. '94o' => 10,
  480. '93s' => 100,
  481. '92s' => 100,
  482. '87' => 100,
  483. '86' => 100,
  484. '85' => 100,
  485. '84s' => 100,
  486. '84o' => 10,
  487. '83s' => 100,
  488. '82s' => 100,
  489. '76' => 100,
  490. '75' => 100,
  491. '74s' => 100,
  492. '74o' => 50,
  493. '73s' => 100,
  494. '72s' => 100,
  495. '65' => 100,
  496. '64s' => 100,
  497. '64o' => 15,
  498. '63s' => 100,
  499. '62s' => 100,
  500. '54' => 100,
  501. '53' => 100,
  502. '52s' => 100,
  503. '43s' => 100,
  504. '42s' => 100,
  505. '32s' => 100);
  506. return $this->getPercentage($handValues, $isSuited, $range);
  507. }
  508.  
  509. /**
  510. * @param $handValues
  511. * @param $isSuited
  512. * @return int
  513. */
  514. private function getIpCallvs3betRange($handValues, $isSuited)
  515. {
  516.  
  517. $range = array(
  518. 'TT' => 25,
  519. '99' => 65,
  520. '88' => 85,
  521. '77' => 100,
  522. '66' => 100,
  523. '55' => 100,
  524. '55' => 100,
  525. '44' => 100,
  526. '33' => 100,
  527. '22' => 100,
  528. 'AQs' => 10,
  529. 'AQo' => 90,
  530. 'AJ' => 100,
  531. 'ATs' => 100,
  532. 'ATo' => 80,
  533. 'A9s' => 100,
  534. 'A9o' => 65,
  535. 'A8s' => 100,
  536. 'A8o' => 70,
  537. 'A7s' => 100,
  538. 'A7o' => 20,
  539. 'A6s' => 100,
  540. 'A5s' => 100,
  541. 'A5o' => 20,
  542. 'A4s' => 100,
  543. 'A3s' => 100,
  544. 'A2s' => 100,
  545. 'KQ' => 100,
  546. 'KJs' => 100,
  547. 'KTs' => 100,
  548. 'K9s' => 100,
  549. 'K8s' => 100,
  550. 'K7s' => 100,
  551. 'K6s' => 100,
  552. 'K5s' => 100,
  553. 'K4s' => 100,
  554. 'K3s' => 100,
  555. 'K2s' => 100,
  556. 'KJo' => 95,
  557. 'KTo' => 75,
  558. 'K9o' => 75,
  559. 'QJs' => 100,
  560. 'QTs' => 100,
  561. 'Q9s' => 100,
  562. 'Q8s' => 100,
  563. 'Q7s' => 100,
  564. 'Q6s' => 80,
  565. 'Q5s' => 75,
  566. 'Q4s' => 70,
  567. 'Q3s' => 75,
  568. 'Q2s' => 70,
  569. 'Q9o' => 20,
  570. 'QTo' => 75,
  571. 'QJo' => 80,
  572. 'JTs' => 100,
  573. 'J9s' => 100,
  574. 'J8s' => 100,
  575. 'J7s' => 100,
  576. 'J6s' => 70,
  577. 'J5s' => 70,
  578. 'J3s' => 80,
  579. 'JTo' => 85,
  580. 'J9o' => 35,
  581. 'T9s' => 100,
  582. 'T8s' => 100,
  583. 'T7s' => 100,
  584. 'T6s' => 85,
  585. 'T9o' => 85,
  586. '98s' => 100,
  587. '98o' => 35,
  588. '97s' => 100,
  589. '96s' => 100,
  590. '87s' => 100,
  591. '87o' => 25,
  592. '86s' => 100,
  593. '85s' => 95,
  594. '76s' => 100,
  595. '76o' => 5,
  596. '75s' => 100,
  597. '74s' => 95,
  598. '65s' => 100,
  599. '64s' => 100,
  600. '63s' => 85,
  601. '54s' => 100,
  602. '53s' => 100,
  603. '52s' => 90,
  604. '43s' => 100);
  605.  
  606. return $this->getPercentage($handValues, $isSuited, $range);
  607. }
  608.  
  609. /**
  610. * @param $handValues
  611. * @param $isSuited
  612. * @return int
  613. */
  614. private function getIpFoldvs3betRange($handValues, $isSuited)
  615. {
  616. $range = array(
  617. 'A7o' => 65,
  618. 'A6o' => 100,
  619. 'A5o' => 50,
  620. 'A4o' => 100,
  621. 'A3o' => 100,
  622. 'A2o' => 100,
  623. 'K9o' => 10,
  624. 'K8o' => 100,
  625. 'K7o' => 100,
  626. 'K6o' => 100,
  627. 'K5o' => 100,
  628. 'K4o' => 100,
  629. 'K3o' => 100,
  630. 'K2o' => 100,
  631. 'Q9o' => 65,
  632. 'Q8o' => 100,
  633. 'Q7o' => 100,
  634. 'Q6o' => 100,
  635. 'Q5o' => 100,
  636. 'Q4o' => 100,
  637. 'Q3o' => 100,
  638. 'Q2o' => 100,
  639. 'J9o' => 60,
  640. 'J8o' => 100,
  641. 'J7o' => 100,
  642. 'J6o' => 100,
  643. 'J5o' => 100,
  644. 'J4s' => 85,
  645. 'J4o' => 100,
  646. 'J3o' => 100,
  647. 'J2o' => 100,
  648. 'T8o' => 100,
  649. 'T7o' => 100,
  650. 'T6o' => 100,
  651. 'T5' => 100,
  652. 'T4' => 100,
  653. 'T3' => 100,
  654. 'T2' => 100,
  655. '98o' => 65,
  656. '97o' => 100,
  657. '96o' => 100,
  658. '95' => 100,
  659. '94' => 100,
  660. '93' => 100,
  661. '92' => 100,
  662. '87o' => 75,
  663. '86o' => 100,
  664. '85o' => 100,
  665. '84' => 100,
  666. '83' => 100,
  667. '82' => 100,
  668. '76o' => 95,
  669. '75o' => 100,
  670. '74o' => 100,
  671. '73' => 100,
  672. '72' => 100,
  673. '65o' => 100,
  674. '64o' => 100,
  675. '63o' => 100,
  676. '62' => 100,
  677. '54o' => 100,
  678. '53o' => 100,
  679. '52s' => 10,
  680. '52o' => 100,
  681. '43o' => 100,
  682. '42' => 100,
  683. '32' => 100);
  684.  
  685. return $this->getPercentage($handValues, $isSuited, $range);
  686.  
  687. }
  688.  
  689. /**
  690. * @param $handValues
  691. * @param $isSuited
  692. * @return int
  693. */
  694. private function getIp4Betrange($handValues, $isSuited)
  695. {
  696. $range = array(
  697. 'AA' => 100,
  698. 'KK' => 100,
  699. 'QQ' => 100,
  700. 'JJ' => 100,
  701. 'TT' => 70,
  702. '99' => 35,
  703. '88' => 15,
  704. 'AKs' => 100,
  705. 'AKo' => 95,
  706. 'AQs' => 90,
  707. 'AQo' => 10,
  708. 'ATo' => 20,
  709. 'A9o' => 35,
  710. 'A8o' => 30,
  711. 'A7o' => 15,
  712. 'A5o' => 30,
  713. 'KJo' => 5,
  714. 'KTo' => 25,
  715. 'K9o' => 15,
  716. 'QJo' => 20,
  717. 'QTo' => 25,
  718. 'Q9o' => 15,
  719. 'Q6s' => 20,
  720. 'Q5s' => 25,
  721. 'Q4s' => 30,
  722. 'Q3s' => 25,
  723. 'Q2s' => 30,
  724. 'JTo' => 15,
  725. 'J9o' => 5,
  726. 'J6s' => 30,
  727. 'J5s' => 30,
  728. 'J4s' => 15,
  729. 'J3s' => 20,
  730. 'T9o' => 15,
  731. 'T6s' => 15,
  732. '85s' => 5,
  733. '74s' => 5,
  734. '63s' => 15);
  735.  
  736. return $this->getPercentage($handValues, $isSuited, $range);
  737. }
  738.  
  739. /**
  740. * @param $handValues
  741. * @param $isSuited
  742. * @return int
  743. */
  744. private function getOopCallvs4Betrange($handValues, $isSuited)
  745. {
  746. $range = array(
  747. 'AA' => 90,
  748. 'JJ' => 5,
  749. 'TT' => 50,
  750. '99' => 70,
  751. '88' => 70,
  752. '77' => 80,
  753. '66' => 75,
  754. '55' => 100,
  755. '44' => 60,
  756. '33' => 75,
  757. 'AQs' => 10,
  758. 'AQo' => 40,
  759. 'AJs' => 95,
  760. 'AJo' => 60,
  761. 'ATs' => 100,
  762. 'A9s' => 100,
  763. 'A8s' => 100,
  764. 'A7s' => 75,
  765. 'A6s' => 65,
  766. 'A5s' => 10,
  767. 'A3s' => 80,
  768. 'A2s' => 45,
  769. 'KQs' => 90,
  770. 'KQo' => 85,
  771. 'KJs' => 100,
  772. 'KTs' => 100,
  773. 'K9s' => 100,
  774. 'K6s' => 10,
  775. 'QJs' => 100,
  776. 'QTs' => 100,
  777. 'JTs' => 100,
  778. 'T9s' => 45,
  779. '98s' => 45,
  780. '87s' => 40,
  781. '76s' => 100,
  782. '65s' => 100,
  783. '54s' => 65);
  784.  
  785. return $this->getPercentage($handValues, $isSuited, $range);
  786.  
  787. }
  788.  
  789. /**
  790. * @param $handValues
  791. * @param $isSuited
  792. * @return int
  793. */
  794. private function getOopFoldvs4Betrange($handValues, $isSuited)
  795. {
  796. $range = array(
  797. '33' => 5,
  798. '22' => 100,
  799. 'AJo' => 40,
  800. 'ATo' => 100,
  801. 'A9o' => 100,
  802. 'A8o' => 100,
  803. 'A7s' => 25,
  804. 'A7o' => 100,
  805. 'A6s' => 35,
  806. 'A6o' => 100,
  807. 'A5o' => 100,
  808. 'A4o' => 100,
  809. 'A3o' => 100,
  810. 'A2s' => 35,
  811. 'A2o' => 100,
  812. 'KQo' => 15,
  813. 'KJo' => 100,
  814. 'KTo' => 100,
  815. 'K9o' => 100,
  816. 'K8' => 100,
  817. 'K7' => 100,
  818. 'K6s' => 90,
  819. 'K6o' => 100,
  820. 'K5' => 100,
  821. 'K4' => 100,
  822. 'K3' => 100,
  823. 'K2' => 100,
  824. 'QJo' => 100,
  825. 'QTo' => 100,
  826. 'Q9' => 100,
  827. 'Q8' => 100,
  828. 'Q7' => 100,
  829. 'Q6' => 100,
  830. 'Q5' => 100,
  831. 'Q4' => 100,
  832. 'Q3' => 100,
  833. 'Q2' => 100,
  834. 'JTo' => 100,
  835. 'J9' => 100,
  836. 'J8' => 100,
  837. 'J7' => 100,
  838. 'J6' => 100,
  839. 'J5' => 100,
  840. 'J4' => 100,
  841. 'J3' => 100,
  842. 'J2' => 100,
  843. 'T9s' => 55,
  844. 'T9o' => 100,
  845. 'T8' => 100,
  846. 'T7' => 100,
  847. 'T6' => 100,
  848. 'T5' => 100,
  849. 'T4' => 100,
  850. 'T3' => 100,
  851. 'T2' => 100,
  852. '98s' => 55,
  853. '98o' => 100,
  854. '97' => 100,
  855. '96' => 100,
  856. '95' => 100,
  857. '94' => 100,
  858. '93' => 100,
  859. '92' => 100,
  860. '87s' => 60,
  861. '87o' => 100,
  862. '86' => 100,
  863. '85' => 100,
  864. '84' => 100,
  865. '83' => 100,
  866. '82' => 100,
  867. '75' => 100,
  868. '76o' => 100,
  869. '74' => 100,
  870. '73' => 100,
  871. '72' => 100,
  872. '65o' => 100,
  873. '64' => 100,
  874. '63' => 100,
  875. '62' => 100,
  876. '54s' => 35,
  877. '54o' => 100,
  878. '53' => 100,
  879. '52' => 100,
  880. '43' => 100,
  881. '42' => 100);
  882.  
  883. return $this->getPercentage($handValues, $isSuited, $range);
  884. }
  885.  
  886. /**
  887. * @param $handValues
  888. * @param $isSuited
  889. * @return int
  890. */
  891. private function getIp4BetShoveRange($handValues, $isSuited)
  892. {
  893. $range = array(
  894. 'TT' => 5,
  895. 'AKo' => 5,
  896. );
  897. return $this->getPercentage($handValues, $isSuited, $range);
  898. }
  899.  
  900. /**
  901. * @param $handValues
  902. * @param $isSuited
  903. * @return int
  904. */
  905. private function getOop5BetShoveRange($handValues, $isSuited)
  906. {
  907. $range = array(
  908. 'AA' => 10,
  909. 'KK' => 100,
  910. 'QQ' => 100,
  911. 'JJ' => 95,
  912. 'TT' => 50,
  913. '99' => 30,
  914. '88' => 30,
  915. '77' => 20,
  916. '66' => 25,
  917. '44' => 40,
  918. '33' => 20,
  919. 'AK' => 100,
  920. 'AQs' => 90,
  921. 'AQo' => 60,
  922. 'AJs' => 5,
  923. 'A5s' => 90,
  924. 'A4s' => 100,
  925. 'A3s' => 20,
  926. 'A2s' => 20,
  927. 'KQs' => 10);
  928.  
  929. return $this->getPercentage($handValues, $isSuited, $range);
  930. }
  931.  
  932. /**
  933. * @param $handValues
  934. * @param $isSuited
  935. * @return int
  936. */
  937. private function getCallVs5BetShoveRange($handValues, $isSuited)
  938. {
  939. $range = array(
  940. 'AA' => 100,
  941. 'KK' => 100,
  942. 'QQ' => 100,
  943. 'JJ' => 100,
  944. 'TT' => 100,
  945. '99' => 100,
  946. '88' => 100,
  947. 'AK' => 100,
  948. 'AQ' => 100);
  949. return $this->getPercentage($handValues, $isSuited, $range);
  950. }
  951.  
  952. /**
  953. * @param $handValues
  954. * @param $isSuited
  955. * @return int
  956. */
  957. private function getFoldVs5BetShoveRange($handValues, $isSuited)
  958. {
  959. $range = array(
  960. 'ATo' => 100,
  961. 'A9o' => 100,
  962. 'A8o' => 100,
  963. 'A7o' => 100,
  964. 'A5o' => 100,
  965. 'KJo' => 100,
  966. 'KTo' => 100,
  967. 'K9o' => 100,
  968. 'QJo' => 100,
  969. 'QTo' => 100,
  970. 'Q9o' => 100,
  971. 'Q6s' => 100,
  972. 'Q5s' => 100,
  973. 'Q4s' => 100,
  974. 'Q3s' => 100,
  975. 'Q2s' => 100,
  976. 'JTo' => 100,
  977. 'J9o' => 100,
  978. 'J6s' => 100,
  979. 'J5s' => 100,
  980. 'J4s' => 100,
  981. 'J3s' => 100,
  982. 'T9o' => 100,
  983. 'T6s' => 100,
  984. '85s' => 100,
  985. '74s' => 100,
  986. '63s' => 100);
  987. return $this->getPercentage($handValues, $isSuited, $range);
  988. }
  989.  
  990. /**
  991. * @param $handValues
  992. * @param $isSuited
  993. * @return int
  994. */
  995. private function getCallVs4BetShoveRange($handValues, $isSuited)
  996. {
  997.  
  998. $range = array(
  999. 'AA' => 100,
  1000. 'KK' => 100,
  1001. 'QQ' => 100,
  1002. 'JJ' => 100,
  1003. 'TT' => 100,
  1004. '99' => 100,
  1005. '88' => 100,
  1006. '77' => 75,
  1007. '66' => 55,
  1008. '55' => 15,
  1009. 'AK' => 100,
  1010. 'AQ' => 100,
  1011. 'AJs' => 35,
  1012. 'KQs' => 25);
  1013. return $this->getPercentage($handValues, $isSuited, $range);
  1014. }
  1015.  
  1016. /**
  1017. * @param $handValues
  1018. * @param $isSuited
  1019. * @return int
  1020. */
  1021. private function getFoldVs4BetShoveRange($handValues, $isSuited)
  1022. {
  1023. $range = array(
  1024.  
  1025. '77' => 25,
  1026. '66' => 45,
  1027. '55' => 85,
  1028. '44' => 100,
  1029. '33' => 100,
  1030. '22' => 100,
  1031. 'AJs' => 65,
  1032. 'AJo' => 100,
  1033. 'AT' => 100,
  1034. 'A9' => 100,
  1035. 'A8' => 100,
  1036. 'A7' => 100,
  1037. 'A6' => 100,
  1038. 'A5' => 100,
  1039. 'A4' => 100,
  1040. 'A3' => 100,
  1041. 'A2' => 100,
  1042. 'KQs' => 75,
  1043. 'KQo' => 100,
  1044. 'KJ' => 100,
  1045. 'KT' => 100,
  1046. 'K9' => 100,
  1047. 'K8' => 100,
  1048. 'K7' => 100,
  1049. 'K6' => 100,
  1050. 'K5' => 100,
  1051. 'K4' => 100,
  1052. 'K3' => 100,
  1053. 'K2' => 100,
  1054. 'QJ' => 100,
  1055. 'QT' => 100,
  1056. 'Q9' => 100,
  1057. 'Q8' => 100,
  1058. 'Q7' => 100,
  1059. 'Q6' => 100,
  1060. 'Q5' => 100,
  1061. 'Q4' => 100,
  1062. 'Q3' => 100,
  1063. 'Q2' => 100,
  1064. 'JT' => 100,
  1065. 'J9' => 100,
  1066. 'J8' => 100,
  1067. 'J7' => 100,
  1068. 'J6' => 100,
  1069. 'J5' => 100,
  1070. 'J4' => 100,
  1071. 'J3' => 100,
  1072. 'J2' => 100,
  1073. 'T9' => 100,
  1074. 'T8' => 100,
  1075. 'T7' => 100,
  1076. 'T6' => 100,
  1077. 'T5' => 100,
  1078. 'T4' => 100,
  1079. 'T3' => 100,
  1080. 'T2' => 100,
  1081. '98' => 100,
  1082. '97' => 100,
  1083. '96' => 100,
  1084. '95' => 100,
  1085. '94' => 100,
  1086. '93' => 100,
  1087. '92' => 100,
  1088. '87' => 100,
  1089. '86' => 100,
  1090. '85' => 100,
  1091. '84' => 100,
  1092. '83' => 100,
  1093. '82' => 100,
  1094. '76' => 100,
  1095. '75' => 100,
  1096. '74' => 100,
  1097. '73' => 100,
  1098. '72' => 100,
  1099. '65' => 100,
  1100. '64' => 100,
  1101. '63' => 100,
  1102. '62' => 100,
  1103. '54' => 100,
  1104. '53' => 100,
  1105. '52' => 100,
  1106. '43' => 100,
  1107. '42' => 100,
  1108. '32' => 100);
  1109. return $this->getPercentage($handValues, $isSuited, $range);
  1110. }
  1111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement