public function question(){
$idiom = $this->get_rand_idiom();//拿出随机成语
$arr_rand = $this->make_arr($idiom);//数组
$idiom_arr[] = $idiom;
$data = S('IdiomStory');
foreach ($data as $key=>$val){
if (!in_array($val,$idiom_arr)) {
$arr = $this->make_arr($val);//数组
if (in_array($arr[0], $arr_rand)) {
$idiom_arr[] = $val;
$a = $arr;
break;
}
}
}
foreach ($data as $v){
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
if (in_array($arr[3],$arr2)){
$idiom_arr[] = $v;
break;
}
if (in_array($arr[2],$arr2)){
$idiom_arr[] = $v;
break;
}
}
}
return $idiom_arr;
// print_r($idiom_arr);
}
/**
* 制造坐标(3个成语)
*/
public function make_coordinate(){
// $arr = array(
// '0'=>'九死一生',
// '1'=>'南柯一梦',
// '2'=>'白日做梦',
// );
// $arr = array(
// '四平八稳',
// '八面来风',
// '栉风沐雨'
// );
$arr = $this->question();
$word = array();
$arr_rand1 = $this->make_arr($arr[0]);//数组
$arr_rand2 = $this->make_arr($arr[1]);//数组
$arr_rand3 = $this->make_arr($arr[2]);//数组
for ($i=0;$i<count($arr_rand1);$i++){
for ($k=0;$k<count($arr_rand2);$k++){
if ($arr_rand1[$i] == $arr_rand2[$k]){
$ps2 = array($i,$k);
}
}
}
for ($i2 = 0;$i2<count($arr_rand1);$i2++){ //第一个成语
$posx[] = 0; //固定x位置
$posy[] = $i2;
$word[] = $arr_rand1[$i2];
}
$answer[] =array_rand($word,1);
for ($k2 = 0;$k2<count($arr_rand2);$k2++){ //第二个成语
if ($k2!=$ps2[1]){ //去掉相交的那个字
$posx[] = $k2;
$posy[] = $ps2[0];//固定y位置
$word[] = $arr_rand2[$k2];
}
}
$answer[] = rand(0,2)+4;
for ($i=0;$i<count($arr_rand2);$i++){
for ($k=0;$k<count($arr_rand3);$k++){
if ($arr_rand2[$i] == $arr_rand3[$k]){
$ps3 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand3);$k3++){ //第三个成语
if ($k3!=$ps3[1]){ //去掉相交的那个字
$posx[] = $ps3[0];
$posy[] = $k3+$ps2[0]-$ps3[1];
$word[] = $arr_rand3[$k3];
}
}
$answer[] = rand(0,2)+7;
$min_y = min($posy); //获取数组最小值
$poy2 = array();
if ($min_y<0){
$min_y = abs($min_y);
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-($posy[$y]+$min_y); //y 平移
}
}else{
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-$posy[$y];
}
}
$data = array(
'id'=>51,
'posx'=>$posx,
'posy'=>$poy2,
'answer'=>$answer,
'levelup'=>1,
'hero'=>1,
'idiom'=>$arr,
'wifenum'=>0,
'house'=>1,
'word'=>$word
);
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}
/**
* 4个成语
* @return array
*/
public function question4(){
$idiom = $this->get_rand_idiom();//拿出随机成语
$arr_rand = $this->make_arr($idiom);//数组
$idiom_arr[] = $idiom;
$data = S('IdiomStory');
foreach ($data as $key=>$val){ //第一和第二
if (!in_array($val,$idiom_arr)) {
$arr = $this->make_arr($val);//数组
if (in_array($arr[0], $arr_rand)) {
$idiom_arr[] = $val;
$a = $arr;
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第二和第三
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<count($arr2);$k++){
if ($arr[3] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index = 2;
break;
}
if ($arr[2] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index = 1;
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第三和第四
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<$index;$k++){ //为了能分清楚
for ($i=0;$i<count($arr);$i++){
if ($arr[$i] == $arr2[$k]){
$idiom_arr[] = $v;
$break = 1;
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
return $idiom_arr;
}
/**
* 制造坐标(4个成语)
*/
public function make_coordinate4(){
$arr = $this->question4();
$word = array();
$arr_rand1 = $this->make_arr($arr[0]);//数组
$arr_rand2 = $this->make_arr($arr[1]);//数组
$arr_rand3 = $this->make_arr($arr[2]);//数组
$arr_rand4 = $this->make_arr($arr[3]);//数组
for ($i=0;$i<count($arr_rand1);$i++){
for ($k=0;$k<count($arr_rand2);$k++){
if ($arr_rand1[$i] == $arr_rand2[$k]){
$ps2 = array($i,$k);
}
}
}
for ($i2 = 0;$i2<count($arr_rand1);$i2++){ //第一个成语
$posx[] = 0; //固定x位置
$posy[] = $i2;
$word[] = $arr_rand1[$i2];
}
$answer[] =array_rand($word,1);
for ($k2 = 0;$k2<count($arr_rand2);$k2++){ //第二个成语
if ($k2!=$ps2[1]){ //去掉相交的那个字
$posx[] = $k2;
$posy[] = $ps2[0];//固定y位置
$word[] = $arr_rand2[$k2];
}
}
$answer[] = rand(0,2)+4;
for ($i=0;$i<count($arr_rand2);$i++){
for ($k=0;$k<count($arr_rand3);$k++){
if ($arr_rand2[$i] == $arr_rand3[$k]){
$ps3 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand3);$k3++){ //第三个成语
if ($k3!=$ps3[1]){ //去掉相交的那个字
$posx[] = $ps3[0];
$posy[] = $k3+$ps2[0]-$ps3[1];
$word[] = $arr_rand3[$k3];
}
}
$answer[] = rand(0,2)+7;
for ($i=0;$i<count($arr_rand3);$i++){
for ($k=0;$k<count($arr_rand4);$k++){
if ($arr_rand3[$i] == $arr_rand4[$k]){
$ps4 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand4);$k3++){ //第四个成语
if ($k3!=$ps4[1]){ //去掉相交的那个字
$posx[] = $k3+$ps3[0]-$ps4[1];
$posy[] = $ps4[0]+$ps2[0]-$ps3[1];
$word[] = $arr_rand4[$k3];
}
}
$answer[] = rand(0,2)+10;
$min_y = min($posy); //获取数组最小值
$poy2 = array();
if ($min_y<0){
$min_y = abs($min_y);
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-($posy[$y]+$min_y); //y 平移
}
}else{
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-$posy[$y];
}
}
$data = array(
'id'=>51,
'posx'=>$posx,
'posy'=>$poy2,
'answer'=>$answer,
'levelup'=>1,
'hero'=>1,
'idiom'=>$arr,
'wifenum'=>0,
'house'=>1,
'word'=>$word
);
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}
/**
* 5个成语
* @return array
*/
public function question5(){
$idiom = $this->get_rand_idiom();//拿出随机成语
$arr_rand = $this->make_arr($idiom);//数组
$idiom_arr[] = $idiom;
$data = S('IdiomStory');
foreach ($data as $key=>$val){ //第一和第二 2
if (!in_array($val,$idiom_arr)) {
$arr = $this->make_arr($val);//数组
if (in_array($arr[0], $arr_rand)) {
$idiom_arr[] = $val;
$a = $arr;
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第二和第三 3
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<count($arr2);$k++){
if ($arr[3] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index = 2;
$next_index1 = $k; //为下一个做铺垫
$index5 = 3; //为第五个做铺垫
break;
}
if ($arr[2] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index1 = $k; //为下一个做铺垫
$index = 1;
$index5 = 2; //为第五个做铺垫
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第三和第四 4
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<$index;$k++){ //为了能分清楚
if ($next_index1 == 0){
if ($arr[2] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
if ($arr[3] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 1){
if ($arr[3] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 2){
if ($arr[0] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 3){
if ($arr[0] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
if ($arr[1] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第四和第五 5
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<2;$k++){
if ($arr[3] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
break;
}
if ($index5 == 3){
if($k !=0){
if ($next_index == 0){
if ($arr[2] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
break;
}
}
}
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
return $idiom_arr;
}
/**
* 制造坐标(5个成语)
*/
public function make_coordinate5(){
$arr = $this->question5();
$word = array();
$arr_rand1 = $this->make_arr($arr[0]);//数组
$arr_rand2 = $this->make_arr($arr[1]);//数组
$arr_rand3 = $this->make_arr($arr[2]);//数组
$arr_rand4 = $this->make_arr($arr[3]);//数组
$arr_rand5 = $this->make_arr($arr[4]);//数组
for ($i=0;$i<count($arr_rand1);$i++){
for ($k=0;$k<count($arr_rand2);$k++){
if ($arr_rand1[$i] == $arr_rand2[$k]){
$ps2 = array($i,$k);
}
}
}
for ($i2 = 0;$i2<count($arr_rand1);$i2++){ //第一个成语
$posx[] = 0; //固定x位置
$posy[] = $i2;
$word[] = $arr_rand1[$i2];
}
$answer[] =array_rand($word,1);
for ($k2 = 0;$k2<count($arr_rand2);$k2++){ //第二个成语
if ($k2!=$ps2[1]){ //去掉相交的那个字
$posx[] = $k2;
$posy[] = $ps2[0];//固定y位置
$word[] = $arr_rand2[$k2];
}
}
$answer[] = rand(0,2)+4;
for ($i=0;$i<count($arr_rand2);$i++){
for ($k=0;$k<count($arr_rand3);$k++){
if ($arr_rand2[$i] == $arr_rand3[$k]){
$ps3 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand3);$k3++){ //第三个成语
if ($k3!=$ps3[1]){ //去掉相交的那个字
$posx[] = $ps3[0];
$posy[] = $k3+$ps2[0]-$ps3[1];
$word[] = $arr_rand3[$k3];
}
}
$answer[] = rand(0,2)+7;
for ($i=0;$i<count($arr_rand3);$i++){
for ($k=0;$k<count($arr_rand4);$k++){
if ($arr_rand3[$i] == $arr_rand4[$k]){
$ps4 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand4);$k3++){ //第四个成语
if ($k3!=$ps4[1]){ //去掉相交的那个字
$posx[] = $k3+$ps3[0]-$ps4[1];
$posy[] = $ps4[0]+$ps2[0]-$ps3[1];
$word[] = $arr_rand4[$k3];
}
}
$answer[] = rand(0,2)+10;
for ($i=0;$i<count($arr_rand4);$i++){
for ($k=0;$k<count($arr_rand5);$k++){
if ($arr_rand4[$i] == $arr_rand5[$k]){
$ps5 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand5);$k3++){ //第五个成语
if ($k3!=$ps5[1]){ //去掉相交的那个字
$posx[] = $ps5[0]+$ps3[0]-$ps4[1]; //加上之前的坐标
$posy[] = $k3+$ps4[0]+$ps2[0]-$ps3[1]-$ps5[1]; //加上之前的坐标
$word[] = $arr_rand5[$k3];
}
}
$answer[] = rand(0,2)+13;
$min_y = min($posy); //获取数组最小值
$poy2 = array();
if ($min_y<0){
$min_y = abs($min_y);
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-($posy[$y]+$min_y); //y 平移
}
}else{
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-$posy[$y];
}
}
$data = array(
'id'=>51,
'posx'=>$posx,
'posy'=>$poy2,
'answer'=>$answer,
'levelup'=>1,
'hero'=>1,
'idiom'=>$arr,
'wifenum'=>0,
'house'=>1,
'word'=>$word
);
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}
/**
* 6个成语
* @return array
*/
public function question6(){
$idiom = $this->get_rand_idiom();//拿出随机成语
$arr_rand = $this->make_arr($idiom);//数组
$idiom_arr[] = $idiom;
$data = S('IdiomStory');
foreach ($data as $key=>$val){ //第一和第二 2
if (!in_array($val,$idiom_arr)) {
$arr = $this->make_arr($val);//数组
if (in_array($arr[0], $arr_rand)) {
$idiom_arr[] = $val;
$a = $arr;
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第二和第三 3
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<count($arr2);$k++){
if ($arr[3] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index = 2;
$next_index1 = $k; //为下一个做铺垫
$index5 = 3; //为第五个做铺垫
break;
}
if ($arr[2] == $arr2[$k]){
unset($arr2[$k]);
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index1 = $k; //为下一个做铺垫
$index = 1;
$index5 = 2; //为第五个做铺垫
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第三和第四 4
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<$index;$k++){ //为了能分清楚
if ($next_index1 == 0){
if ($arr[2] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
if ($arr[3] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 1){
if ($arr[3] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 2){
if ($arr[0] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}elseif ($next_index1 == 3){
if ($arr[0] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
if ($arr[1] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$next_index = $k; //为下一个做铺垫
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第四和第五 5
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
for ($k=0;$k<2;$k++){
if ($arr[3] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index6 = 1;
if ($index5 == 2){
$index6 = 0;
}
$xj_index = $k;
break;
}
if ($index5 == 3){
if($k !=0){
if ($next_index == 0){
if ($arr[2] == $arr2[$k]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
$index6 = 0;
$xj_index = $k;
break;
}
}
}
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
$break = 0;
foreach ($data as $v){ //第五和第六 6
if (!in_array($v,$idiom_arr)){
$arr2 = $this->make_arr($v);//数组
if ($xj_index == 0){ // 2 3
if ($arr[3] == $arr2[$index6]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
break;
}
if ($arr[2] == $arr2[$index6]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
break;
}
}elseif ($xj_index == 1){ //3
if ($arr[3] == $arr2[$index6]){
$arr = $arr2;
$idiom_arr[] = $v;
$break = 1;
break;
}
}
if ($break == 1){ //匹配到就退出
break;
}
}
}
return $idiom_arr;
}
/**
* 制造坐标(6个成语)
*/
public function make_coordinate6(){
$arr = $this->question6();
$word = array();
$arr_rand1 = $this->make_arr($arr[0]);//数组
$arr_rand2 = $this->make_arr($arr[1]);//数组
$arr_rand3 = $this->make_arr($arr[2]);//数组
$arr_rand4 = $this->make_arr($arr[3]);//数组
$arr_rand5 = $this->make_arr($arr[4]);//数组
$arr_rand6 = $this->make_arr($arr[5]);//数组
for ($i=0;$i<count($arr_rand1);$i++){
for ($k=0;$k<count($arr_rand2);$k++){
if ($arr_rand1[$i] == $arr_rand2[$k]){
$ps2 = array($i,$k);
}
}
}
for ($i2 = 0;$i2<count($arr_rand1);$i2++){ //第一个成语
$posx[] = 0; //固定x位置
$posy[] = $i2;
$word[] = $arr_rand1[$i2];
}
$answer[] =array_rand($word,1);
for ($k2 = 0;$k2<count($arr_rand2);$k2++){ //第二个成语
if ($k2!=$ps2[1]){ //去掉相交的那个字
$posx[] = $k2;
$posy[] = $ps2[0];//固定y位置
$word[] = $arr_rand2[$k2];
}
}
$answer[] = rand(0,2)+4;
for ($i=0;$i<count($arr_rand2);$i++){
for ($k=0;$k<count($arr_rand3);$k++){
if ($arr_rand2[$i] == $arr_rand3[$k]){
$ps3 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand3);$k3++){ //第三个成语
if ($k3!=$ps3[1]){ //去掉相交的那个字
$posx[] = $ps3[0];
$posy[] = $k3+$ps2[0]-$ps3[1];
$word[] = $arr_rand3[$k3];
}
}
$answer[] = rand(0,2)+7;
for ($i=0;$i<count($arr_rand3);$i++){
for ($k=0;$k<count($arr_rand4);$k++){
if ($arr_rand3[$i] == $arr_rand4[$k]){
$ps4 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand4);$k3++){ //第四个成语
if ($k3!=$ps4[1]){ //去掉相交的那个字
$posx[] = $k3+$ps3[0]-$ps4[1];
$posy[] = $ps4[0]+$ps2[0]-$ps3[1];
$word[] = $arr_rand4[$k3];
}
}
$answer[] = rand(0,2)+10;
for ($i=0;$i<count($arr_rand4);$i++){
for ($k=0;$k<count($arr_rand5);$k++){
if ($arr_rand4[$i] == $arr_rand5[$k]){
$ps5 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand5);$k3++){ //第五个成语
if ($k3!=$ps5[1]){ //去掉相交的那个字
$posx[] = $ps5[0]+$ps3[0]-$ps4[1]; //加上之前的坐标
$posy[] = $k3+$ps4[0]+$ps2[0]-$ps3[1]-$ps5[1]; //加上之前的坐标
$word[] = $arr_rand5[$k3];
}
}
$answer[] = rand(0,2)+13;
for ($i=0;$i<count($arr_rand5);$i++){
for ($k=0;$k<count($arr_rand6);$k++){
if ($arr_rand5[$i] == $arr_rand6[$k]){
$ps6 = array($i,$k);
}
}
}
for ($k3 = 0;$k3<count($arr_rand6);$k3++){ //第6个成语
if ($k3!=$ps6[1]){ //去掉相交的那个字
$posx[] = $k3+$ps5[0]+$ps3[0]-$ps4[1]-$ps6[1]; //加上之前的坐标
$posy[] = $ps6[0]+$ps4[0]+$ps2[0]-$ps3[1]-$ps5[1]; //加上之前的坐标
$word[] = $arr_rand6[$k3];
}
}
$answer[] = rand(0,2)+16;
$min_y = min($posy); //获取数组最小值
$poy2 = array();
if ($min_y<0){
$min_y = abs($min_y);
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-($posy[$y]+$min_y); //y 平移
}
}else{
for ($y=0;$y<count($posy);$y++){
$poy2[] = 8-$posy[$y];
}
}
$data = array(
'id'=>51,
'posx'=>$posx,
'posy'=>$poy2,
'answer'=>$answer,
'levelup'=>1,
'hero'=>1,
'idiom'=>$arr,
'wifenum'=>0,
'house'=>1,
'word'=>$word
);
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}