false, 'msg' => 'CardPosition Unable Distinguish']; $card = intval($event['card']); $round = [ 'card' => $card, 'number' => CardPosition::interchangeCard($card), 'boot_id' => intval($numberTabInfo['boot_id']), 'boot_num' => intval($numberTabInfo['boot_num']), 'number_tab_id' => intval($numberTabInfo['id']), 'number_tab_number' => intval($numberTabInfo['number']) ]; if (!$cardInfo){ // 没有牌数据,创建并保存 $cardInfo = ['card_first' => $card]; $cardInfo['player_1_card_1'] = 0; $cardInfo['player_1_card_2'] = 0; $cardInfo['player_1_card_3'] = 0; $cardInfo['player_1_card_4'] = 0; $cardInfo['player_1_card_5'] = 0; $cardInfo['player_2_card_1'] = 0; $cardInfo['player_2_card_2'] = 0; $cardInfo['player_2_card_3'] = 0; $cardInfo['player_2_card_4'] = 0; $cardInfo['player_2_card_5'] = 0; $cardInfo['player_3_card_1'] = 0; $cardInfo['player_3_card_2'] = 0; $cardInfo['player_3_card_3'] = 0; $cardInfo['player_3_card_4'] = 0; $cardInfo['player_3_card_5'] = 0; $cardInfo['banker_card_1'] = 0; $cardInfo['banker_card_2'] = 0; $cardInfo['banker_card_3'] = 0; $cardInfo['banker_card_4'] = 0; $cardInfo['banker_card_5'] = 0; $positionFirst = CardPositionNn::nnPosition($card); $cardInfo['position_first'] = $positionFirst; NumberTab::where(['id' => $numberTabInfo['id']])->update(['position_first' => $positionFirst]); RedisUtil::saveCard($numberTabInfo['id'],$cardInfo); $round['tid'] = $tableInfo['id']; $round['number_tab_id'] = $numberTabInfo['id']; $round['position'] = 0; $round['order_num'] = 0; $round['result'] = ''; $round['card_info'] = $cardInfo; if ($numberTabInfo['bet_status'] == 2) { $round['is_scan'] = true; } else { $round['is_scan'] = false; } return ['status' => true, 'msg' => 'Scan Success', 'data' => $round]; } // 判断是否已经存在过相同牌 $beforeCard = $cardInfo; //unset($beforeCard['card_first']); unset($beforeCard['position_first']); if(in_array($card,$beforeCard)) return ['status' => false, 'msg' => 'Card Exists']; $cardCountValues = array_count_values($beforeCard); // 获取当前定位 if (isset($cardCountValues[0])){ $positionNum = 20 - intval($cardCountValues[0]) + 1; } else { $positionNum = 20; } $player1Card[0] = $cardInfo['player_1_card_1']; $player1Card[1] = $cardInfo['player_1_card_2']; $player1Card[2] = $cardInfo['player_1_card_3']; $player1Card[3] = $cardInfo['player_1_card_4']; $player2Card[0] = $cardInfo['player_2_card_1']; $player2Card[1] = $cardInfo['player_2_card_2']; $player2Card[2] = $cardInfo['player_2_card_3']; $player2Card[3] = $cardInfo['player_2_card_4']; $player3Card[0] = $cardInfo['player_3_card_1']; $player3Card[1] = $cardInfo['player_3_card_2']; $player3Card[2] = $cardInfo['player_3_card_3']; $player3Card[3] = $cardInfo['player_3_card_4']; $bankerCard[0] = $cardInfo['banker_card_1']; $bankerCard[1] = $cardInfo['banker_card_2']; $bankerCard[2] = $cardInfo['banker_card_3']; $bankerCard[3] = $cardInfo['banker_card_4']; $resultWord = ''; $order = CardPositionNn::nnOrder($cardInfo['position_first']); $orderPosition = $positionNum - 1; $position = $order[$orderPosition]; $orderNumArr = CardPositionNn::nnOrderNum($cardInfo['position_first']); $orderNum = $orderNumArr[$orderPosition]; $cardInfo[$position] = $card; if($positionNum >= 17 && $positionNum <= 20){ if($orderNum > 10 && $orderNum < 20){ $player1Card[4] = $card; $player1Result = CardPositionNn::JudgeCowCow($player1Card); $resultWord = $player1Result['word']; } if($orderNum > 20 && $orderNum < 30){ $player2Card[4] = $card; $player2Result = CardPositionNn::JudgeCowCow($player2Card); $resultWord = $player2Result['word']; } if($orderNum > 30 && $orderNum < 40){ $player3Card[4] = $card; $player3Result = CardPositionNn::JudgeCowCow($player3Card); $resultWord = $player3Result['word']; } if($orderNum > 40){ $bankerCard[4] = $card; $bankerResult = CardPositionNn::JudgeCowCow($bankerCard); $resultWord = $bankerResult['word']; } } RedisUtil::saveCard($numberTabInfo['id'],$cardInfo); $round['tid'] = $tableInfo['id']; $round['number_tab_id'] = $numberTabInfo['id']; $round['position'] = $positionNum; $round['order_num'] = $orderNum; $round['result'] = $resultWord; $round['card_info'] = $cardInfo; if ($numberTabInfo['bet_status'] == 2) { $round['is_scan'] = true; } else { $round['is_scan'] = false; } return ['status' => true, 'msg' => 'Scan Success', 'data' => $round]; } /** * TODO NN识别处理 * @param array $event * @param array $tableInfo * @return array */ public static function doScanNnSbChange(array $event, array $tableInfo): array { $checkScanRes = ScanCommonService::checkScan($event,$tableInfo); if ($checkScanRes['status'] == false){ return $checkScanRes; }else{ $numberTabInfo = $checkScanRes['numberTabInfo']; $cardInfo = $checkScanRes['cardInfo']; } // 判断牌是否符合规格 if (!isset($event['card']) || empty(intval($event['card']))) return ['status' => false, 'msg' => 'CardPosition Unable Distinguish']; $card = intval($event['card']); $round = [ 'card' => $card, 'number' => CardPosition::interchangeCard($card), 'boot_id' => intval($numberTabInfo['boot_id']), 'boot_num' => intval($numberTabInfo['boot_num']), 'number_tab_id' => intval($numberTabInfo['id']), 'number_tab_number' => intval($numberTabInfo['number']) ]; // 判断是否已经存在过相同牌 $beforeCard = $cardInfo; //unset($beforeCard['card_first']); unset($beforeCard['position_first']); if(in_array($card,$beforeCard)) return ['status' => false, 'msg' => 'Card Exists']; $cardCountValues = array_count_values($beforeCard); // 获取当前定位 $positionNum = $event['position_num']; $orderNum = 0; $resultWord = ''; /* if (isset($cardCountValues[0])){ $positionNum = 20 - intval($cardCountValues[0]) + 1; } else { $positionNum = 20; } */ if ($positionNum > 0) { $player1Card[0] = $cardInfo['player_1_card_1']; $player1Card[1] = $cardInfo['player_1_card_2']; $player1Card[2] = $cardInfo['player_1_card_3']; $player1Card[3] = $cardInfo['player_1_card_4']; $player1Card[4] = $cardInfo['player_1_card_5']; $player2Card[0] = $cardInfo['player_2_card_1']; $player2Card[1] = $cardInfo['player_2_card_2']; $player2Card[2] = $cardInfo['player_2_card_3']; $player2Card[3] = $cardInfo['player_2_card_4']; $player2Card[4] = $cardInfo['player_2_card_5']; $player3Card[0] = $cardInfo['player_3_card_1']; $player3Card[1] = $cardInfo['player_3_card_2']; $player3Card[2] = $cardInfo['player_3_card_3']; $player3Card[3] = $cardInfo['player_3_card_4']; $player3Card[4] = $cardInfo['player_3_card_5']; $bankerCard[0] = $cardInfo['banker_card_1']; $bankerCard[1] = $cardInfo['banker_card_2']; $bankerCard[2] = $cardInfo['banker_card_3']; $bankerCard[3] = $cardInfo['banker_card_4']; $bankerCard[4] = $cardInfo['banker_card_5']; $order = CardPositionNn::nnOrderSb($cardInfo['position_first']); $orderPosition = $positionNum - 1; $position = $order[$orderPosition]; $orderNumArr = CardPositionNn::nnOrderNumSb($cardInfo['position_first']); $orderNum = $orderNumArr[$orderPosition]; $cardInfo[$position] = $card; $indexOfCardToBeChanged = $positionNum % 5 - 1; if ($indexOfCardToBeChanged == -1) $indexOfCardToBeChanged = 4; if($orderNum > 10 && $orderNum < 20){ $player1Card[$indexOfCardToBeChanged] = $card; $player1Result = CardPositionNn::JudgeCowCow($player1Card); $resultWord = $player1Result['word']; } if($orderNum > 20 && $orderNum < 30){ $player2Card[$indexOfCardToBeChanged] = $card; $player2Result = CardPositionNn::JudgeCowCow($player2Card); $resultWord = $player2Result['word']; } if($orderNum > 30 && $orderNum < 40){ $player3Card[$indexOfCardToBeChanged] = $card; $player3Result = CardPositionNn::JudgeCowCow($player3Card); $resultWord = $player3Result['word']; } if($orderNum > 40){ $bankerCard[$indexOfCardToBeChanged] = $card; $bankerResult = CardPositionNn::JudgeCowCow($bankerCard); $resultWord = $bankerResult['word']; } } else { $positionFirst = CardPositionNn::nnPosition($card); $cardInfo['card_first'] = $card; $cardInfo['position_first'] = $positionFirst; } RedisUtil::saveCard($numberTabInfo['id'],$cardInfo); $round['tid'] = $tableInfo['id']; $round['number_tab_id'] = $numberTabInfo['id']; $round['position'] = $positionNum; $round['order_num'] = $orderNum; $round['result'] = $resultWord; $round['card_info'] = $cardInfo; if ($numberTabInfo['bet_status'] == 2) { $round['is_scan'] = true; } else { $round['is_scan'] = false; } return ['status' => true, 'msg' => 'Scan Success', 'data' => $round]; } }