├── 将中文每个字分开.md ├── 写入日志.php ├── 获取上月或下月的月份.md ├── JS获取URL参数.txt ├── Public-Method.md ├── 数据流图片接收.php ├── README.md └── 参考JS文档.html /将中文每个字分开.md: -------------------------------------------------------------------------------- 1 | 将中文每个字分开 2 | 3 | public function mb_str_split($string, $len=1){ 4 | 5 | //str_split($string);这个只能分割英文 6 | 7 | $start = 0; 8 | 9 | $strlen = mb_strlen($string); 10 | 11 | while ($strlen) { 12 | 13 | $array[] = mb_substr($string,$start,$len,"utf8"); 14 | 15 | $string = mb_substr($string, $len, $strlen,"utf8"); 16 | 17 | $strlen = mb_strlen($string); 18 | 19 | } 20 | 21 | return $array; 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /写入日志.php: -------------------------------------------------------------------------------- 1 | $v) { 38 | 39 | $test_three[] = array('img' => $v); 40 | 41 | } 42 | 43 | //+------------------------------------------------------ 44 | 45 | 46 | //+------------------------------------------------------- 47 | 48 | //二维数组转一维 49 | 50 | $user_array = array(); 51 | 52 | foreach ($user as $k => $v) { 53 | 54 | $user_array[] = $v['id']; 55 | 56 | } 57 | 58 | //+------------------------------------------------------- 59 | 60 | 61 | //+-------------------------------------------------------- 62 | 63 | unset($user[$k]);//抛出数组中不需要的 64 | 65 | //+-------------------------------------------------------- 66 | 67 | /** 68 | * 获取PDF的页数 69 | */ 70 | 71 | function getPageTotal($path){ 72 | // 打开文件 73 | if (!$fp = @fopen($path,"r")) { 74 | $error = "打开文件{$path}失败"; 75 | return false; 76 | } 77 | else { 78 | $max=0; 79 | while(!feof($fp)) { 80 | $line = fgets($fp,255); 81 | if (preg_match('/\/Count [0-9]+/', $line, $matches)){ 82 | preg_match('/[0-9]+/',$matches[0], $matches2); 83 | if ($max<$matches2[0]) $max=$matches2[0]; 84 | } 85 | } 86 | fclose($fp); 87 | // 返回页数 88 | return $max; 89 | } 90 | } 91 | 92 | -------------------------------------------------------------------------------- /数据流图片接收.php: -------------------------------------------------------------------------------- 1 | 数据流, 8 | * '1'=>数据流, 9 | * ) 10 | * @date 2016-6-1 11:44:13 11 | */ 12 | public function savePic($pic_arr = '') { 13 | //新建文件夹 14 | $new_folder = date('Ymd', time()); 15 | //保存路径 16 | $path = './Public/Uploads/' . $new_folder; 17 | // 不存在的保存目录予以创建 18 | if (!is_dir($path)) { 19 | mkdir($path); 20 | } 21 | //扩展名 22 | $ext = '.png'; 23 | //写入内容 24 | $pic_url = array(); 25 | foreach ((array) $pic_arr as $key => $val) { 26 | $filename = time() . rand(0000, 9999); 27 | $save = 'Public/Uploads/' . $new_folder . '/' . $filename . $ext; //图片保存用这个路径 28 | file_put_contents($save, base64_decode($val) . '|'); 29 | $pic[] = '/' . $save; //改变原来编码的数组的值 30 | } 31 | $pic_url = implode('|', $pic); //多个图串起来 32 | return $pic_url; 33 | } 34 | 35 | /** 36 | * 数据流图片上传 37 | * $post_img字符串格式,多个用“|”隔开 38 | * $ext图片后缀 39 | * 40 | */ 41 | public function dataImage($post_img, $ext = '.jpg') 42 | { 43 | //图片----单张图片(后期根据测试数据满足3张图片) 44 | if (empty($post_img)) { 45 | $test_five = ''; 46 | } else { 47 | $post_img = explode('|', $post_img);//字符串转成数组 48 | $post_img_1 = array_filter($post_img); 49 | $post_img_2 = implode('|', $post_img_1); 50 | $test_two = explode('|', $post_img_2);//字符串转成数组 51 | 52 | //将一维数组转换成二维数组 53 | $test_three = array(); 54 | foreach ($test_two as $k => $v) { 55 | $test_three[] = array('img' => $v); 56 | } 57 | //循环图片存储 58 | foreach ($test_three as $k => $v) { 59 | //保存图片路径 60 | $path_one = './Public/Uploads/'.date('Ymd').'/';//存储到项目 61 | $path_two = '/Public/Uploads/'.date('Ymd').'/';//存储到数据表 62 | //没有就创建 63 | if (!file_exists($path_one)){ 64 | mkdir($path_one); 65 | } 66 | $filename = md5(time().mt_rand(10, 9999)).$ext;//要生成的图片名字 67 | $thumb = $path_one.'thumb_'.$filename; 68 | $newFilePath_one = $path_one.$filename;//项目地址 69 | $newFilePath_two = $path_two.'thumb_'.$filename;//数据url--存储路径 70 | 71 | $dataIn = base64_decode($v['img']);//解码 72 | 73 | //$newFile = fopen($newFilePath_one,"w"); //打开文件准备写入 74 | //fwrite($newFile,$dataIn); //写入二进制流到文件 75 | //fclose($newFile); //关闭文件 76 | 77 | file_put_contents($newFilePath_one, $dataIn); 78 | 79 | //生成缩略图 80 | $image = new \Think\Image(); 81 | $image->open($newFilePath_one); 82 | $image->thumb(300, 300,\Think\Image::IMAGE_THUMB_SCALE)->save($thumb); 83 | $test_three[$k]['image'] = $newFilePath_two;//输出图片路径 84 | } 85 | //将二维数组转换为一维数组 86 | $test_four = array(); 87 | foreach ($test_three as $k => $v){ 88 | $test_four[] = $v['image']; 89 | } 90 | //将一维数组转换成字符串 91 | $test_five = implode('|',$test_four);//3张图片合并--图片url路径 92 | } 93 | return $test_five; 94 | } 95 | 96 | ?> 97 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | 4 | * 牛牛 5 | 6 | * 纸牌游戏牛牛的最优算法 7 | 8 | * 1.计算5张牌(10-K都是0)之和,获得余数X 9 | 10 | * 2.查询组成余数X的2张牌(策划穷举,X为1-9全部只有45种牌)是否存在,高大上说话用正则表达式 11 | 12 | * 3.存在即有牛,余数为牛X 13 | 14 | * 五小牛 > 五花牛 > 牛牛 15 | 16 | */ 17 | 18 | public function niu() 19 | { 20 | header("Content-Type: text/html;charset=utf-8"); 21 | 22 | $res = M('niu')->select(); 23 | //10所对应的id 24 | $tun_id = array(37,38,39,40); 25 | 26 | //取第一人牌 27 | $seek = $this->randarr($res, 5);//随机取5张牌 28 | //将随机取的5张牌转一维数组 29 | $seek_one = array(); 30 | $chess_one = array(); 31 | $more_one = array(); 32 | foreach ($seek as $k => $v) { 33 | $seek_one[] = $v['id']; 34 | $chess_one[] = $v['niu']; 35 | $more_one[] = $v['size']; 36 | } 37 | foreach ($res as $key => $val) { 38 | if (in_array($val['id'], $seek_one)) { 39 | unset($res[$key]); 40 | } 41 | } 42 | $res_one = array_values($res);//重置键名剩余47张牌 43 | 44 | $sum_one = 0; 45 | $sum_one_1 = 0; 46 | for($i = 0; $i < count($seek); $i++) { 47 | $sum_one += $seek[$i]['sorce']; 48 | if ($seek[$i]['sorce'] == 0) { 49 | $seek[$i]['sorce'] = 10; 50 | } 51 | $sum_one_1 += $seek[$i]['sorce']; 52 | } 53 | 54 | if ($sum_one <= 10 && $sum_one_1 <= 10) { 55 | $n_one = "五小牛"."\n"; 56 | } else if ($sum_one_1 == 50 && !in_array($seek_one[0], $tun_id) && !in_array($seek_one[1], $tun_id) && !in_array($seek_one[2], $tun_id) && !in_array($seek_one[3], $tun_id) && !in_array($seek_one[4], $tun_id)) {//判断里面是否有10a,10b,10c,10d 57 | $n_one = "五花牛"."\n"; 58 | } else { 59 | $remain_one = intval($sum_one%10);//求余 60 | if ($remain_one == 0) { 61 | $n_one = "牛牛"."\n"; 62 | } else { 63 | //二维数组转一维 64 | $nums_one = array(); 65 | foreach ($seek as $k => $v) { 66 | if ($v['sorce'] == 10) { 67 | $v['sorce'] = 0; 68 | } 69 | $nums_one[] = $v['sorce']; 70 | } 71 | 72 | $m_one = 0; 73 | for($i =0 ; $i < 4 ; $i++){ 74 | for($j = $i + 1; $j < 5; $j++){ 75 | //判断是否存在 76 | if(intval(($nums_one[$i] + $nums_one[$j])%10) == $remain_one) { 77 | //正常情况 78 | $m_one++; 79 | } 80 | } 81 | } 82 | if ($m_one == 0) { 83 | $n_one = "无牛"."\n"; 84 | $n_than_one = ""; 85 | //无牛取最大的那张牌 86 | $n_more_one = $this->getMax($more_one); 87 | } else { 88 | $n_one = "有牛,牛".$remain_one."\n"; 89 | $n_than_one = $remain_one; 90 | } 91 | } 92 | } 93 | 94 | //------------------------------------------------------------------------------------------------------------------------------------------------------ 95 | 96 | 97 | //取第二人牌 98 | $seek_2 = $this->randarr($res_one, 5);//再随机取5张牌 99 | //将随机取的5张牌转一维数组 100 | $seek_two = array(); 101 | $chess_two = array(); 102 | $more_two = array(); 103 | foreach ($seek_2 as $k => $v) { 104 | $seek_two[] = $v['id']; 105 | $chess_two[] = $v['niu']; 106 | $more_two[] = $v['size']; 107 | } 108 | foreach ($res_one as $key => $val) { 109 | if (in_array($val['id'], $seek_two)) { 110 | unset($res_one[$key]); 111 | } 112 | } 113 | $res_two = array_values($res_one);//重置键名剩余42张牌 114 | 115 | $sum_two = 0; 116 | $sum_two_2 = 0; 117 | for($i = 0; $i < count($seek_2); $i++) { 118 | $sum_two += $seek_2[$i]['sorce']; 119 | if ($seek_2[$i]['sorce'] == 0) { 120 | $seek_2[$i]['sorce'] = 10; 121 | } 122 | $sum_two_2 += $seek_2[$i]['sorce']; 123 | } 124 | if ($sum_two <= 10 && $sum_two_2 <= 10) { 125 | $n_two = "五小牛"."\n"; 126 | } else if ($sum_two_2 == 50 && !in_array($seek_two[0], $tun_id) && !in_array($seek_two[1], $tun_id) && !in_array($seek_two[2], $tun_id) && !in_array($seek_two[3], $tun_id) && !in_array($seek_two[4], $tun_id)) { 127 | $n_two = "五花牛"."\n"; 128 | } else { 129 | $remain_two = intval($sum_two%10);//求余 130 | if ($remain_two == 0) { 131 | $n_two = "牛牛"."\n"; 132 | } else { 133 | //二维数组转一维 134 | $nums_two = array(); 135 | foreach ($seek_2 as $k => $v) { 136 | if ($v['sorce'] == 10) { 137 | $v['sorce'] = 0; 138 | } 139 | $nums_two[] = $v['sorce']; 140 | } 141 | 142 | $m_two = 0; 143 | for($i =0 ; $i < 4 ; $i++){ 144 | for($j = $i + 1; $j < 5; $j++){ 145 | //判断是否存在 146 | if(intval(($nums_two[$i] + $nums_two[$j])%10) == $remain_two) { 147 | //正常情况 148 | $m_two++; 149 | } 150 | } 151 | } 152 | if ($m_two == 0) { 153 | $n_two = "无牛"."\n"; 154 | $n_than_two = ""; 155 | //无牛取最大的那张牌 156 | $n_more_two = $this->getMax($more_two); 157 | } else { 158 | $n_two = "有牛,牛".$remain_two."\n"; 159 | $n_than_two = $remain_two; 160 | } 161 | } 162 | } 163 | 164 | //--------------------------------------------------------------------------------------------------------------------------------------------- 165 | 166 | 167 | //取第三人牌 168 | $seek_3 = $this->randarr($res_two, 5);//再随机取5张牌 169 | //将随机取的5张牌转一维数组 170 | $seek_three = array(); 171 | $chess_three = array(); 172 | $more_three = array(); 173 | foreach ($seek_3 as $k => $v) { 174 | $seek_three[] = $v['id']; 175 | $chess_three[] = $v['niu']; 176 | $more_three[] = $v['size']; 177 | } 178 | foreach ($res_two as $key => $val) { 179 | if (in_array($val['id'], $seek_three)) { 180 | unset($res_two[$key]); 181 | } 182 | } 183 | $res_three = array_values($res_two);//重置键名剩余37张牌 184 | 185 | $sum_three = 0; 186 | $sum_three_3 = 0; 187 | for($i = 0; $i < count($seek_3); $i++) { 188 | $sum_three += $seek_3[$i]['sorce']; 189 | if ($seek_3[$i]['sorce'] == 0) { 190 | $seek_3[$i]['sorce'] = 10; 191 | } 192 | $sum_three_3 += $seek_3[$i]['sorce']; 193 | } 194 | if ($sum_three <= 10 && $sum_three_3 <= 10) { 195 | $n_three = "五小牛"."\n"; 196 | } else if ($sum_three_3 == 50 && !in_array($seek_three[0], $tun_id) && !in_array($seek_three[1], $tun_id) && !in_array($seek_three[2], $tun_id) && !in_array($seek_three[3], $tun_id) && !in_array($seek_three[4], $tun_id)) { 197 | $n_three = "五花牛"."\n"; 198 | } else { 199 | $remain_three = intval($sum_three%10);//求余 200 | if ($remain_three == 0) { 201 | $n_three = "牛牛"."\n"; 202 | } else { 203 | //二维数组转一维 204 | $nums_three = array(); 205 | foreach ($seek_3 as $k => $v) { 206 | if ($v['sorce'] == 10) { 207 | $v['sorce'] = 0; 208 | } 209 | $nums_three[] = $v['sorce']; 210 | } 211 | 212 | $m_three = 0; 213 | for($i =0 ; $i < 4 ; $i++){ 214 | for($j = $i + 1; $j < 5; $j++){ 215 | //判断是否存在 216 | if(intval(($nums_three[$i] + $nums_three[$j])%10) == $remain_three) { 217 | //正常情况 218 | $m_three++; 219 | } 220 | } 221 | } 222 | if ($m_three == 0) { 223 | $n_three = "无牛"."\n"; 224 | $n_than_three = ""; 225 | //无牛取最大的那张牌 226 | $n_more_three = $this->getMax($more_three); 227 | } else { 228 | $n_three = "有牛,牛".$remain_three."\n"; 229 | $n_than_three = $remain_three; 230 | } 231 | } 232 | } 233 | 234 | //---------------------------------------------------------------------------------------------------------------------------------------------- 235 | 236 | 237 | //取第四人牌 238 | $seek_4 = $this->randarr($res_three, 5);//再随机取5张牌 239 | //将随机取的5张牌转一维数组 240 | $seek_four = array(); 241 | $chess_four = array(); 242 | $more_four = array(); 243 | foreach ($seek_4 as $k => $v) { 244 | $seek_four[] = $v['id']; 245 | $chess_four[] = $v['niu']; 246 | $more_four[] = $v['size']; 247 | } 248 | foreach ($res_three as $key => $val) { 249 | if (in_array($val['id'], $seek_four)) { 250 | unset($res_three[$key]); 251 | } 252 | } 253 | $res_four = array_values($res_three);//重置键名剩余32张牌 254 | 255 | $sum_four = 0; 256 | $sum_four_4 = 0; 257 | for($i = 0; $i < count($seek_4); $i++) { 258 | $sum_four += $seek_4[$i]['sorce']; 259 | if ($seek_4[$i]['sorce'] == 0) { 260 | $seek_4[$i]['sorce'] = 10; 261 | } 262 | $sum_four_4 += $seek_4[$i]['sorce']; 263 | } 264 | if ($sum_four <= 10 && $sum_four_4 <= 10) { 265 | $n_four = "五小牛"."\n"; 266 | } else if ($sum_four_4 == 50 && !in_array($seek_four[0], $tun_id) && !in_array($seek_four[1], $tun_id) && !in_array($seek_four[2], $tun_id) && !in_array($seek_four[3], $tun_id) && !in_array($seek_four[4], $tun_id)) { 267 | $n_four = "五花牛"."\n"; 268 | } else { 269 | $remain_four = intval($sum_four%10);//求余 270 | if ($remain_four == 0) { 271 | $n_four = "牛牛"."\n"; 272 | } else { 273 | //二维数组转一维 274 | $nums_four = array(); 275 | foreach ($seek_4 as $k => $v) { 276 | if ($v['sorce'] == 10) { 277 | $v['sorce'] = 0; 278 | } 279 | $nums_four[] = $v['sorce']; 280 | } 281 | 282 | $m_four = 0; 283 | for($i =0 ; $i < 4 ; $i++){ 284 | for($j = $i + 1; $j < 5; $j++){ 285 | //判断是否存在 286 | if(intval(($nums_four[$i] + $nums_four[$j])%10) == $remain_four) { 287 | //正常情况 288 | $m_four++; 289 | } 290 | } 291 | } 292 | if ($m_four == 0) { 293 | $n_four = "无牛"."\n"; 294 | $n_than_four = ""; 295 | //无牛取最大的那张牌 296 | $n_more_four = $this->getMax($more_four); 297 | } else { 298 | $n_four = "有牛,牛".$remain_four."\n"; 299 | $n_than_four = $remain_four; 300 | } 301 | } 302 | } 303 | 304 | //------------------------------------------------------------------------------------------------------------------------------------------- 305 | 306 | //取第五人牌 307 | $seek_5 = $this->randarr($res_four, 5);//再随机取5张牌 308 | //将随机取的5张牌转一维数组 309 | $seek_five = array(); 310 | $chess_five = array(); 311 | $more_five = array(); 312 | foreach ($seek_5 as $k => $v) { 313 | $seek_five[] = $v['id']; 314 | $chess_five[] = $v['niu']; 315 | $more_five[] = $v['size']; 316 | } 317 | foreach ($res_four as $key => $val) { 318 | if (in_array($val['id'], $seek_five)) { 319 | unset($res_four[$key]); 320 | } 321 | } 322 | $res_five = array_values($res_four);//重置键名剩余27张牌 323 | 324 | $sum_five = 0; 325 | $sum_five_5 = 0; 326 | for($i = 0; $i < count($seek_5); $i++) { 327 | $sum_five += $seek_5[$i]['sorce']; 328 | if ($seek_5[$i]['sorce'] == 0) { 329 | $seek_5[$i]['sorce'] = 10; 330 | } 331 | $sum_five_5 += $seek_5[$i]['sorce']; 332 | } 333 | if ($sum_five <= 10 && $sum_five_5 <= 10) { 334 | $n_five = "五小牛"."\n"; 335 | } else if ($sum_five_5 == 50 && !in_array($seek_five[0], $tun_id) && !in_array($seek_five[1], $tun_id) && !in_array($seek_five[2], $tun_id) && !in_array($seek_five[3], $tun_id) && !in_array($seek_five[4], $tun_id)) { 336 | $n_five = "五花牛"."\n"; 337 | } else { 338 | $remain_five = intval($sum_five%10);//求余 339 | if ($remain_five == 0) { 340 | $n_five = "牛牛"."\n"; 341 | } else { 342 | //二维数组转一维 343 | $nums_five = array(); 344 | foreach ($seek_5 as $k => $v) { 345 | if ($v['sorce'] == 10) { 346 | $v['sorce'] = 0; 347 | } 348 | $nums_five[] = $v['sorce']; 349 | } 350 | 351 | $m_five = 0; 352 | for($i =0 ; $i < 4 ; $i++){ 353 | for($j = $i + 1; $j < 5; $j++){ 354 | //判断是否存在 355 | if(intval(($nums_five[$i] + $nums_five[$j])%10) == $remain_five) { 356 | //正常情况 357 | $m_five++; 358 | } 359 | } 360 | } 361 | if ($m_five == 0) { 362 | $n_five = "无牛"."\n"; 363 | $n_than_five = ""; 364 | //无牛取最大的那张牌 365 | $n_more_five = $this->getMax($more_five); 366 | } else { 367 | $n_five = "有牛,牛".$remain_five."\n"; 368 | $n_than_five = $remain_five; 369 | } 370 | } 371 | } 372 | 373 | //--------------------------------------------------------------------------------------------------------------------------------------------------- 374 | 375 | //取第六人牌 376 | $seek_6 = $this->randarr($res_five, 5);//再随机取5张牌 377 | //将随机取的5张牌转一维数组 378 | $seek_six = array(); 379 | $chess_six = array(); 380 | $more_six = array(); 381 | foreach ($seek_6 as $k => $v) { 382 | $seek_six[] = $v['id']; 383 | $chess_six[] = $v['niu']; 384 | $more_six[] = $v['size']; 385 | } 386 | foreach ($res_five as $key => $val) { 387 | if (in_array($val['id'], $seek_six)) { 388 | unset($res_five[$key]); 389 | } 390 | } 391 | $res_six = array_values($res_five);//重置键名剩余22张牌 392 | 393 | $sum_six = 0; 394 | $sum_six_6 = 0; 395 | for($i = 0; $i < count($seek_6); $i++) { 396 | $sum_six += $seek_6[$i]['sorce']; 397 | if ($seek_6[$i]['sorce'] == 0) { 398 | $seek_6[$i]['sorce'] = 10; 399 | } 400 | $sum_six_6 += $seek_6[$i]['sorce']; 401 | } 402 | if ($sum_six <= 10 && $sum_six_6 <= 10) { 403 | $n_six = "五小牛"."\n"; 404 | } else if ($sum_six_6 == 50 && !in_array($seek_six[0], $tun_id) && !in_array($seek_six[1], $tun_id) && !in_array($seek_six[2], $tun_id) && !in_array($seek_six[3], $tun_id) && !in_array($seek_six[4], $tun_id)) { 405 | $n_six = "五花牛"."\n"; 406 | } else { 407 | $remain_six = intval($sum_six%10);//求余 408 | if ($remain_six == 0) { 409 | $n_six = "牛牛"."\n"; 410 | } else { 411 | //二维数组转一维 412 | $nums_six = array(); 413 | foreach ($seek_6 as $k => $v) { 414 | if ($v['sorce'] == 10) { 415 | $v['sorce'] = 0; 416 | } 417 | $nums_six[] = $v['sorce']; 418 | } 419 | 420 | $m_six = 0; 421 | for($i =0 ; $i < 4 ; $i++){ 422 | for($j = $i + 1; $j < 5; $j++){ 423 | //判断是否存在 424 | if(intval(($nums_six[$i] + $nums_six[$j])%10) == $remain_six) { 425 | //正常情况 426 | $m_six++; 427 | } 428 | } 429 | } 430 | if ($m_six == 0) { 431 | $n_six = "无牛"."\n"; 432 | $n_than_six = ""; 433 | //无牛取最大的那张牌 434 | $n_more_six = $this->getMax($more_six); 435 | } else { 436 | $n_six = "有牛,牛".$remain_six."\n"; 437 | $n_than_six = $remain_six; 438 | } 439 | } 440 | } 441 | 442 | //-------------------------------------------------------------------------------------------------------------------------------------------- 443 | 444 | //取第七人牌 445 | $seek_7 = $this->randarr($res_six, 5);//再随机取5张牌 446 | //将随机取的5张牌转一维数组 447 | $seek_seven = array(); 448 | $chess_seven = array(); 449 | $more_seven = array(); 450 | foreach ($seek_7 as $k => $v) { 451 | $seek_seven[] = $v['id']; 452 | $chess_seven[] = $v['niu']; 453 | $more_seven[] = $v['size']; 454 | } 455 | foreach ($res_six as $key => $val) { 456 | if (in_array($val['id'], $seek_seven)) { 457 | unset($res_six[$key]); 458 | } 459 | } 460 | $res_seven = array_values($res_six);//重置键名剩余17张牌 461 | 462 | $sum_seven = 0; 463 | $sum_seven_7 = 0; 464 | for($i = 0; $i < count($seek_7); $i++) { 465 | $sum_seven += $seek_7[$i]['sorce']; 466 | if ($seek_7[$i]['sorce'] == 0) { 467 | $seek_7[$i]['sorce'] = 10; 468 | } 469 | $sum_seven_7 += $seek_7[$i]['sorce']; 470 | } 471 | if ($sum_seven <= 10 && $sum_seven_7 <= 10) { 472 | $n_seven = "五小牛"."\n"; 473 | } else if ($sum_seven_7 == 50 && !in_array($seek_seven[0], $tun_id) && !in_array($seek_seven[1], $tun_id) && !in_array($seek_seven[2], $tun_id) && !in_array($seek_seven[3], $tun_id) && !in_array($seek_seven[4], $tun_id)) { 474 | $n_seven = "五花牛"."\n"; 475 | } else { 476 | $remain_seven = intval($sum_seven%10);//求余 477 | if ($remain_seven == 0) { 478 | $n_seven = "牛牛"."\n"; 479 | } else { 480 | //二维数组转一维 481 | $nums_seven = array(); 482 | foreach ($seek_7 as $k => $v) { 483 | if ($v['sorce'] == 10) { 484 | $v['sorce'] = 0; 485 | } 486 | $nums_seven[] = $v['sorce']; 487 | } 488 | 489 | $m_seven = 0; 490 | for($i =0 ; $i < 4 ; $i++){ 491 | for($j = $i + 1; $j < 5; $j++){ 492 | //判断是否存在 493 | if(intval(($nums_seven[$i] + $nums_seven[$j])%10) == $remain_seven) { 494 | //正常情况 495 | $m_seven++; 496 | } 497 | } 498 | } 499 | if ($m_seven == 0) { 500 | $n_seven = "无牛"."\n"; 501 | $n_than_seven = ""; 502 | //无牛取最大的那张牌 503 | $n_more_seven = $this->getMax($more_seven); 504 | } else { 505 | $n_seven = "有牛,牛".$remain_seven."\n"; 506 | $n_than_seven = $remain_seven; 507 | } 508 | } 509 | } 510 | 511 | //------------------------------------------------------------------------------------------------------------------------------------- 512 | 513 | //取第八人牌 514 | $seek_8 = $this->randarr($res_seven, 5);//再随机取5张牌 515 | //将随机取的5张牌转一维数组 516 | $seek_eight = array(); 517 | $chess_eight = array(); 518 | $more_eight = array(); 519 | foreach ($seek_8 as $k => $v) { 520 | $seek_eight[] = $v['id']; 521 | $chess_eight[] = $v['niu']; 522 | $more_eight[] = $v['size']; 523 | } 524 | foreach ($res_seven as $key => $val) { 525 | if (in_array($val['id'], $seek_eight)) { 526 | unset($res_seven[$key]); 527 | } 528 | } 529 | $res_eight = array_values($res_seven);//重置键名剩余12张牌 530 | 531 | $sum_eight = 0; 532 | $sum_eight_8 = 0; 533 | for($i = 0; $i < count($seek_8); $i++) { 534 | $sum_eight += $seek_8[$i]['sorce']; 535 | if ($seek_8[$i]['sorce'] == 0) { 536 | $seek_8[$i]['sorce'] = 10; 537 | } 538 | $sum_eight_8 += $seek_8[$i]['sorce']; 539 | } 540 | if ($sum_eight <= 10 && $sum_eight_8 <= 10) { 541 | $n_eight = "五小牛"."\n"; 542 | } else if ($sum_eight_8 == 50 && !in_array($seek_eight[0], $tun_id) && !in_array($seek_eight[1], $tun_id) && !in_array($seek_eight[2], $tun_id) && !in_array($seek_eight[3], $tun_id) && !in_array($seek_eight[4], $tun_id)) { 543 | $n_eight = "五花牛"."\n"; 544 | } else { 545 | $remain_eight = intval($sum_eight%10);//求余 546 | if ($remain_eight == 0) { 547 | $n_eight = "牛牛"."\n"; 548 | } else { 549 | //二维数组转一维 550 | $nums_eight = array(); 551 | foreach ($seek_8 as $k => $v) { 552 | if ($v['sorce'] == 10) { 553 | $v['sorce'] = 0; 554 | } 555 | $nums_eight[] = $v['sorce']; 556 | } 557 | 558 | $m_eight = 0; 559 | for($i =0 ; $i < 4 ; $i++){ 560 | for($j = $i + 1; $j < 5; $j++){ 561 | //判断是否存在 562 | if(intval(($nums_eight[$i] + $nums_eight[$j])%10) == $remain_eight) { 563 | //正常情况 564 | $m_eight++; 565 | } 566 | } 567 | } 568 | if ($m_eight == 0) { 569 | $n_eight = "无牛"."\n"; 570 | $n_than_eight = ""; 571 | //无牛取最大的那张牌 572 | $n_more_eight = $this->getMax($more_eight); 573 | } else { 574 | $n_eight = "有牛,牛".$remain_eight."\n"; 575 | $n_than_eight = $remain_eight; 576 | } 577 | } 578 | } 579 | 580 | //---------------------------------------------------------------------------------------------------------------------------------- 581 | 582 | //取第九人牌 583 | $seek_9 = $this->randarr($res_eight, 5);//再随机取5张牌 584 | //将随机取的5张牌转一维数组 585 | $seek_nine = array(); 586 | $chess_nine = array(); 587 | $more_nine = array(); 588 | foreach ($seek_9 as $k => $v) { 589 | $seek_nine[] = $v['id']; 590 | $chess_nine[] = $v['niu']; 591 | $more_nine[] = $v['size']; 592 | } 593 | foreach ($res_eight as $key => $val) { 594 | if (in_array($val['id'], $seek_nine)) { 595 | unset($res_eight[$key]); 596 | } 597 | } 598 | $res_nine = array_values($res_eight);//重置键名剩余7张牌 599 | 600 | $sum_nine = 0; 601 | $sum_nine_9 = 0; 602 | for($i = 0; $i < count($seek_9); $i++) { 603 | $sum_nine += $seek_9[$i]['sorce']; 604 | if ($seek_9[$i]['sorce'] == 0) { 605 | $seek_9[$i]['sorce'] = 10; 606 | } 607 | $sum_nine_9 += $seek_9[$i]['sorce']; 608 | } 609 | if ($sum_nine <= 10 && $sum_nine_9 <= 10) { 610 | $n_nine = "五小牛"."\n"; 611 | } else if ($sum_nine_9 == 50 && !in_array($seek_nine[0], $tun_id) && !in_array($seek_nine[1], $tun_id) && !in_array($seek_nine[2], $tun_id) && !in_array($seek_nine[3], $tun_id) && !in_array($seek_nine[4], $tun_id)) { 612 | $n_nine = "五花牛"."\n"; 613 | } else { 614 | $remain_nine = intval($sum_nine%10);//求余 615 | if ($remain_nine == 0) { 616 | $n_nine = "牛牛"."\n"; 617 | } else { 618 | //二维数组转一维 619 | $nums_nine = array(); 620 | foreach ($seek_9 as $k => $v) { 621 | if ($v['sorce'] == 10) { 622 | $v['sorce'] = 0; 623 | } 624 | $nums_nine[] = $v['sorce']; 625 | } 626 | 627 | $m_nine = 0; 628 | for($i =0 ; $i < 4 ; $i++){ 629 | for($j = $i + 1; $j < 5; $j++){ 630 | //判断是否存在 631 | if(intval(($nums_nine[$i] + $nums_nine[$j])%10) == $remain_nine) { 632 | //正常情况 633 | $m_nine++; 634 | } 635 | } 636 | } 637 | if ($m_nine == 0) { 638 | $n_nine = "无牛"."\n"; 639 | $n_than_nine = ""; 640 | //无牛取最大的那张牌 641 | $n_more_nine = $this->getMax($more_nine); 642 | } else { 643 | $n_nine = "有牛,牛".$remain_nine."\n"; 644 | $n_than_nine = $remain_nine; 645 | } 646 | } 647 | } 648 | 649 | 650 | 651 | echo "玩家一"."\n"; 652 | print_r($nums_one)."\n"; 653 | print_r($chess_one)."\n"; 654 | echo $sum_one."\n"; 655 | echo $sum_one_1."\n"; 656 | echo $n_one."\n\n"; 657 | 658 | echo "玩家二"."\n"; 659 | print_r($nums_two)."\n"; 660 | print_r($chess_two)."\n"; 661 | echo $sum_two."\n"; 662 | echo $sum_two_2."\n"; 663 | echo $n_two."\n\n"; 664 | 665 | echo "玩家三"."\n"; 666 | print_r($nums_three)."\n"; 667 | print_r($chess_three)."\n"; 668 | echo $sum_three."\n"; 669 | echo $sum_three_3."\n"; 670 | echo $n_three."\n\n"; 671 | 672 | echo "玩家四"."\n"; 673 | print_r($nums_four)."\n"; 674 | print_r($chess_four)."\n"; 675 | echo $sum_four."\n"; 676 | echo $sum_four_4."\n"; 677 | echo $n_four."\n\n"; 678 | 679 | echo "玩家五"."\n"; 680 | print_r($nums_five)."\n"; 681 | print_r($chess_five)."\n"; 682 | echo $sum_five."\n"; 683 | echo $sum_five_5."\n"; 684 | echo $n_five."\n\n"; 685 | 686 | echo "玩家六"."\n"; 687 | print_r($nums_six)."\n"; 688 | print_r($chess_six)."\n"; 689 | echo $sum_six."\n"; 690 | echo $sum_six_6."\n"; 691 | echo $n_six."\n\n"; 692 | 693 | echo "玩家七"."\n"; 694 | print_r($nums_seven)."\n"; 695 | print_r($chess_seven)."\n"; 696 | echo $sum_seven."\n"; 697 | echo $sum_seven_7."\n"; 698 | echo $n_seven."\n\n"; 699 | 700 | echo "玩家八"."\n"; 701 | print_r($nums_eight)."\n"; 702 | print_r($chess_eight)."\n"; 703 | echo $sum_eight."\n"; 704 | echo $sum_eight_8."\n"; 705 | echo $n_eight."\n\n"; 706 | 707 | echo "玩家九"."\n"; 708 | print_r($nums_nine)."\n";//手牌对应分 709 | print_r($chess_nine)."\n";//手牌 710 | echo $sum_nine."\n";//分数 711 | echo $sum_nine_9."\n";//最大分数 712 | echo $n_nine."\n\n";//输出牛 713 | 714 | print_r($res_nine)."\n"; 715 | 716 | //比大小 717 | //五小牛-12 > 五花牛-11 > 牛牛-10 > 牛九-9 > 牛八-8 > 牛七-7 > 牛六-6 > 牛五-5 > 牛四-4 > 牛三-3 > 牛二-2 > 牛一-1 > 无牛-0 718 | //相同的比最大的那张牌,谁的大谁赢 719 | //第一步,比牛 720 | //将玩家、牛、最大那张牌合并数组 721 | $arr = array( 722 | array( 723 | 'name' => '玩家一', 724 | 'niu' => $n_than_one ? $n_than_one + 100 : $n_more_one, 725 | 'more' => $n_more_one, 726 | ), 727 | array( 728 | 'name' => '玩家二', 729 | 'niu' => $n_than_two ? $n_than_two + 100 : $n_more_two, 730 | 'more' => $n_more_two, 731 | ), 732 | array( 733 | 'name' => '玩家三', 734 | 'niu' => $n_than_three ? $n_than_three + 100 : $n_more_three, 735 | 'more' => $n_more_three, 736 | ), 737 | array( 738 | 'name' => '玩家四', 739 | 'niu' => $n_than_four ? $n_than_four + 100 : $n_more_four, 740 | 'more' => $n_more_four, 741 | ), 742 | array( 743 | 'name' => '玩家五', 744 | 'niu' => $n_than_five ? $n_than_five + 100 : $n_more_five, 745 | 'more' => $n_more_five, 746 | ), 747 | array( 748 | 'name' => '玩家六', 749 | 'niu' => $n_than_six ? $n_than_six + 100 : $n_more_six, 750 | 'more' => $n_more_six, 751 | ), 752 | array( 753 | 'name' => '玩家七', 754 | 'niu' => $n_than_seven ? $n_than_seven + 100 : $n_more_seven, 755 | 'more' => $n_more_seven, 756 | ), 757 | array( 758 | 'name' => '玩家八', 759 | 'niu' => $n_than_eight ? $n_than_eight + 100 : $n_more_eight, 760 | 'more' => $n_more_eight, 761 | ), 762 | array( 763 | 'name' => '玩家九', 764 | 'niu' => $n_than_nine ? $n_than_nine + 100 : $n_more_nine, 765 | 'more' => $n_more_nine, 766 | ) 767 | ); 768 | print_r($arr); 769 | } 770 | 771 | //随机取5张牌 772 | public function randarr($arr, $num) { 773 | $arrid = array_rand($arr, $num); 774 | foreach ($arrid as $v) { 775 | $newarr [] = $arr [$v]; 776 | } 777 | return $newarr; 778 | } 779 | //php取出数组中的最大值 780 | public function getMax($arr) { 781 | $max = $arr[0]; 782 | foreach ($arr as $k => $v) { 783 | if($v > $max){ 784 | $max = $v; 785 | } 786 | } 787 | return $max; 788 | } 789 | 790 | 791 | 数据表 792 | 793 | SET FOREIGN_KEY_CHECKS=0; 794 | 795 | -- ---------------------------- 796 | -- Table structure for `niu` 797 | -- ---------------------------- 798 | DROP TABLE IF EXISTS `niu`; 799 | CREATE TABLE `niu` ( 800 | `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', 801 | `sorce` int(2) NOT NULL COMMENT '对应分数', 802 | `niu` varchar(3) NOT NULL, 803 | PRIMARY KEY (`id`) 804 | ) ENGINE=MyISAM AUTO_INCREMENT=53 DEFAULT CHARSET=utf8; 805 | 806 | -- ---------------------------- 807 | -- Records of niu 808 | -- ---------------------------- 809 | INSERT INTO `niu` VALUES ('1', '1', '1a'); 810 | INSERT INTO `niu` VALUES ('2', '1', '1b'); 811 | INSERT INTO `niu` VALUES ('3', '1', '1c'); 812 | INSERT INTO `niu` VALUES ('4', '1', '1d'); 813 | INSERT INTO `niu` VALUES ('5', '2', '2a'); 814 | INSERT INTO `niu` VALUES ('6', '2', '2b'); 815 | INSERT INTO `niu` VALUES ('7', '2', '2c'); 816 | INSERT INTO `niu` VALUES ('8', '2', '2d'); 817 | INSERT INTO `niu` VALUES ('9', '3', '3a'); 818 | INSERT INTO `niu` VALUES ('10', '3', '3b'); 819 | INSERT INTO `niu` VALUES ('11', '3', '3c'); 820 | INSERT INTO `niu` VALUES ('12', '3', '3d'); 821 | INSERT INTO `niu` VALUES ('13', '4', '4a'); 822 | INSERT INTO `niu` VALUES ('14', '4', '4b'); 823 | INSERT INTO `niu` VALUES ('15', '4', '4c'); 824 | INSERT INTO `niu` VALUES ('16', '4', '4d'); 825 | INSERT INTO `niu` VALUES ('17', '5', '5a'); 826 | INSERT INTO `niu` VALUES ('18', '5', '5b'); 827 | INSERT INTO `niu` VALUES ('19', '5', '5c'); 828 | INSERT INTO `niu` VALUES ('20', '5', '5d'); 829 | INSERT INTO `niu` VALUES ('21', '6', '6a'); 830 | INSERT INTO `niu` VALUES ('22', '6', '6b'); 831 | INSERT INTO `niu` VALUES ('23', '6', '6c'); 832 | INSERT INTO `niu` VALUES ('24', '6', '6d'); 833 | INSERT INTO `niu` VALUES ('25', '7', '7a'); 834 | INSERT INTO `niu` VALUES ('26', '7', '7b'); 835 | INSERT INTO `niu` VALUES ('27', '7', '7c'); 836 | INSERT INTO `niu` VALUES ('28', '7', '7d'); 837 | INSERT INTO `niu` VALUES ('29', '8', '8a'); 838 | INSERT INTO `niu` VALUES ('30', '8', '8b'); 839 | INSERT INTO `niu` VALUES ('31', '8', '8c'); 840 | INSERT INTO `niu` VALUES ('32', '8', '8d'); 841 | INSERT INTO `niu` VALUES ('33', '9', '9a'); 842 | INSERT INTO `niu` VALUES ('34', '9', '9b'); 843 | INSERT INTO `niu` VALUES ('35', '9', '9c'); 844 | INSERT INTO `niu` VALUES ('36', '9', '9d'); 845 | INSERT INTO `niu` VALUES ('37', '0', '10a'); 846 | INSERT INTO `niu` VALUES ('38', '0', '10b'); 847 | INSERT INTO `niu` VALUES ('39', '0', '10c'); 848 | INSERT INTO `niu` VALUES ('40', '0', '10d'); 849 | INSERT INTO `niu` VALUES ('41', '0', 'Ja'); 850 | INSERT INTO `niu` VALUES ('42', '0', 'Jb'); 851 | INSERT INTO `niu` VALUES ('43', '0', 'Jc'); 852 | INSERT INTO `niu` VALUES ('44', '0', 'Jd'); 853 | INSERT INTO `niu` VALUES ('45', '0', 'Qa'); 854 | INSERT INTO `niu` VALUES ('46', '0', 'Qb'); 855 | INSERT INTO `niu` VALUES ('47', '0', 'Qc'); 856 | INSERT INTO `niu` VALUES ('48', '0', 'Qd'); 857 | INSERT INTO `niu` VALUES ('49', '0', 'Ka'); 858 | INSERT INTO `niu` VALUES ('50', '0', 'Kb'); 859 | INSERT INTO `niu` VALUES ('51', '0', 'Kc'); 860 | INSERT INTO `niu` VALUES ('52', '0', 'Kd'); 861 | -------------------------------------------------------------------------------- /参考JS文档.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |“您的所有信息将安全保密,不会泄露给第三方。为了确保我们对您的服务,请如实填写以下信息,谢谢您的合作!”
19 |