php搖桿Tiger搖獎

2022-07-22 01:45:10 字數 4067 閱讀 7400

先說下整體思路,**已附下方。

1、遞迴產生乙個非中獎數(即非連續數字:'111','222','333','444','555','666','777','888')  

2、點選搖獎,把獎項通過設定的中獎概率順序排序(如**:maopao)

3、放入中獎產生(如**:get_rand)

4、若中獎則重新從(即連續數字:'111','222','333','444','555','666','777','888')  中隨機乙個,若未中獎則返回(1)隨機數

/*

中獎產生

*/public

function get_rand($proarr

) else

}unset ($proarr

);return

$result;}

/**隨機數

* */

function

randnum()

return

$randnum;}

public

function maopao($arr

)    }

}return

$arr;}

/*搖獎

*/public

function luckdraw($userid

)else

if($award_num>0)

else

}$total_amount=$this->tiger_provalue(); //

獎金池--總金額

$randnum=$this->randnum(); //

生成3位不同的隨機數

dump_str($randnum,'randnum');

$randnum_arr=str_split($randnum); //

把隨機數切割成陣列

$rock_num1=$randnum_arr[0];

$rock_num2=$randnum_arr[1];

$rock_num3=$randnum_arr[2];

//搖獎統計

$tc_obj=new imodel('tigerrock_count');

$countdata=$tc_obj->getobj('id=1','today_num,total_num,today_date');

//新一天的第一次**

if(empty($countdata['today_date'])||strtotime($countdata['today_date'])-strtotime(date('y-m-d',time()))!=0)

$member_obj=new imodel('member');

//查詢使用者積分

$point=$member_obj->getobj('member_id='.$userid,'member_points');

//是否超出免費**次數

if($rock_num>2)

$point=$point-5;

$member_obj=new imodel('member');

$member_obj->update('member_id='.$userid,array('member_points'=>$point

));}

$updata_data=array

('award_num'=>$award_num,

'rock_time'=>"'".date('y-m-d',time())."'",

'rock_num'=>$rock_num+1,);

//更新個人搖獎次數

$tigerrock_user_obj=new imodel('tigerrock_user');

$tigerrock_user_obj->update('id='.$tiger_data['id'],$updata_data

);/*

加入搖獎日誌

*/$rock_log=new imodel('tigerrock_log');

$data=array

('user_id'=>$userid,

'nums'=>$randnum,

'time'=>"'".date('y-m-d h:i:s',time())."'",);

$rock_log->setdata($data

);$rock_log->add();

$today_num=$countdata['today_num'];

$tc_obj->update('id=1',array('total_num'=>$countdata['total_num']+1,'today_num'=>$today_num+1 )); //

修改總數量

$tclass_obj=new imodel('tigerrock_class');

$classdata=$tclass_obj->getobj('start_num='.$today_num,'end_num,id');

$rock=$classdata['end_num'];

$classid=$classdata['id'];

if(!$classdata

)$tc_obj=new imodel('tigerrock_config'); //

獲取搖獎配置資料

$proid_arr=$tc_obj->query('classid='.$classid.' and is_del=0 and status=1','id,nums,usenums,usetime,proid');

$proid_arr=$this->maopao($proid_arr); //

通過獎品數量排序

$prize_arr=array

();$goodnum=0;

$prize_arr[0]=array

();$tp_obj=new imodel('tigerrock_products');

foreach($proid_arr

as$v)

else

$goodnum+=(int)$v['nums']-$v['usenums'];

}$prize_arr=array('id'=>1,'prize'=>0,'v'=>$rock-$today_num

);unset($prize_arr[0]);

$arr=array

();foreach ($prize_arr

as$key => $val

) $rid =$this->get_rand($arr); //

根據概率獲取獎項id

// $tl_obj=new imodel('tigerrock_log');

// $tl_obj->setdata(array('user_id'=>$userid,'nums'=>$randnum,'time'=>date('y-m-d h:i:s',time())));

// $tl_obj->add();

if($rid!=1)

/*未繫結手機中將過濾

*/$u_obj=new imodel('member');

$phone_status=$u_obj->getobj('member_id='.$userid,'member_mobile_bind');

if(!$phone_status)//

獲取使用者是否已中獎

// $ta_obj=new imodel('tigerrock_award');

// $award_id=$ta_obj->getobj('user_id='.$userid.' and status=1','id');

// if($award_id)

//中獎次數達到設定次數

if(isset($pro_data['nums'])&&isset($pro_data['usenums'])&&$pro_data['nums']<=(int)$pro_data['usenums'])

//驗證實際商品庫存,如果庫存不足,則不中獎且更新中獎設定

if($pro_data['stock']

if(!$pro_data||empty($pro_data

))else

}else

}

view code

遊戲搖桿程式設計

源程式基於前面幾篇博文的介紹,我們可以進行程式設計,以獲取遊戲遙感所傳回的資料。前文回顧 本文所使用的搖桿是圖馬思特牌的 t.16000m fcs公升級版霍爾磁感應搖桿。在圖1中,12個部件的名稱分別為 數字扳機 按鍵1 多向苦力帽開關 pov帽 右旋螺絲蓋 方向舵,通過旋轉帶掌托的手柄進行控制 油...

360度遊戲搖桿

su ceview檢視建立,響應此函式 override public void su cecreated su ceholder holder 遊戲繪圖 public void mydraw catch exception e finally 小圓針對於大圓做圓周運動時,設定小圓中心點的座標位置 ...

平滑搖桿的實現

很久不寫關於遊戲邏輯的文章了,略顯生疏了,最近公司的專案需要用到平滑支援360度各角度搖動的搖桿,就隨手寫了乙個,並非是區域判定的方法,那種方法很難達到使用者的舒適度,體驗感會下降得比較明顯。通過滑動的前後2個point來判斷角度,為了舒適的平滑必須在手指離開螢幕的同時釋放初始點,即如果手指沒有離開...