先說下整體思路,**已附下方。
1、遞迴產生乙個非中獎數(即非連續數字:'111','222','333','444','555','666','777','888')
2、點選搖獎,把獎項通過設定的中獎概率順序排序(如**:maopao)
3、放入中獎產生(如**:get_rand)
4、若中獎則重新從(即連續數字:'111','222','333','444','555','666','777','888') 中隨機乙個,若未中獎則返回(1)隨機數
/*view code中獎產生
*/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
}
遊戲搖桿程式設計
源程式基於前面幾篇博文的介紹,我們可以進行程式設計,以獲取遊戲遙感所傳回的資料。前文回顧 本文所使用的搖桿是圖馬思特牌的 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來判斷角度,為了舒適的平滑必須在手指離開螢幕的同時釋放初始點,即如果手指沒有離開...