Maison  >  Article  >  développement back-end  >  Comment implémenter un programme de loterie en php

Comment implémenter un programme de loterie en php

藏色散人
藏色散人original
2020-07-27 10:26:005853parcourir

Comment implémenter le programme de loterie en PHP : chargez d'abord le fichier de la bibliothèque jquery et "jQueryRotate.js" dans le head ; puis construisez un tableau multidimensionnel dans "data.php" puis calculez en fonction du probabilité définie dans le tableau Obtenez l'ID qui remplit les conditions ; appelez enfin la méthode getRand.

Comment implémenter un programme de loterie en php

Recommandé : "Tutoriel PHP"

Préparation

Tout d'abord, préparez le matériel et dessiner une loterie L'interface utilise deux images, une image de disque et une image de pointeur. Dans les applications réelles, différentes images de disque peuvent être produites en fonction de différents besoins.

Créez ensuite une page html. Dans l'exemple, nous ajoutons le code suivant au corps :

<div class="demo"> 
    <div id="disk"></div> 
    <div id="start"><img src="start.png" id="startbtn"></div> 
</div>

Nous utilisons #disk pour placer l'image de fond du disque, la contrôlons en CSS, et utilisons #start pour placer le pointeur Picture start.png.

Ensuite on utilise CSS pour contrôler la position du pointeur et du disque. Le code est le suivant :

.demo{width:417px; height:417px; position:relative; margin:50px auto} 
#disk{width:417px; height:417px; background:url(disk.jpg) no-repeat} 
#start{width:163px; height:320px; position:absolute; top:46px; left:130px;} 
#start img{cursor:pointer}

jQuery

Si on veut faire tourner le pointeur, sans. en utilisant Flash, nous pouvons utiliser le canevas HTML5 pour faire pivoter les images, mais vous devez prendre en compte la compatibilité du navigateur. Un plug-in jQuery peut faire pivoter complètement les images (tous les éléments HTML) et est compatible avec les principaux navigateurs.

À l'aide de jQueryRotate.js, vous pouvez faire pivoter des images sous n'importe quel angle, lier des événements de souris et définir des effets d'animation et des fonctions de rappel pour le processus de rotation.

La méthode d'utilisation consiste bien sûr à charger d'abord le fichier de la bibliothèque jquery et jQueryRotate.js dans la tête, puis nous pouvons utiliser le code suivant pour réaliser la rotation du pointeur.

$(function(){ 
    $("#startbtn").rotate({ 
        bind:{ 
            click:function(){//绑定click单击事件 
                 var a = Math.floor(Math.random() * 360); //生成随机数 
                 $(this).rotate({ 
                         duration:3000,//转动时间间隔(转动速度) 
                         angle: 0,  //开始角度 
                        animateTo:3600+a, //转动角度,10圈+ 
                        easing: $.easing.easeOutSine, //动画扩展 
                        callback: function(){ //回调函数 
                            alert(&#39;中奖了!&#39;); 
                        } 
                 }); 
            } 
        } 
    }); 
});

Le code ci-dessus est implémenté : lorsque vous cliquez sur le bouton du pointeur "Démarrer la loterie", le pointeur commence à tourner et l'angle de rotation est de 3600+a, c'est-à-dire qu'après 10 tours, il tournera vers un angle généré aléatoirement a. Lorsque l'angle de rotation atteint Arrêtez de tourner à 3600+a degrés.

Il convient de noter que l'extension easing: animation doit être combinée avec le plug-in d'extension d'animation pour y parvenir. Le plug-in d'assouplissement est présenté dans cet article : jQuery Easing Animation Effect Extension

Cet article a terminé le processus de rotation du pointeur de la platine, mais il doit être combiné avec le contrôle de loterie pour être un programme de loterie complet. Nous le ferons ensuite. Cet article présentera l'utilisation de PHP pour contrôler la probabilité de loterie, et comment utiliser jQuery et PHP pour terminer le processus interactif de loterie, alors restez à l'écoute.

PHP

Tout d'abord, nous définissons l'angle correspondant et la probabilité de gagner en fonction du prix sur le disque de loterie, et nous construisons un tableau multidimensionnel :

$prize_arr = array( 
    &#39;0&#39; => array(&#39;id&#39;=>1,&#39;min&#39;=>1,&#39;max&#39;=>29,&#39;prize&#39;=>&#39;一等奖&#39;,&#39;v&#39;=>1), 
    &#39;1&#39; => array(&#39;id&#39;=>2,&#39;min&#39;=>302,&#39;max&#39;=>328,&#39;prize&#39;=>&#39;二等奖&#39;,&#39;v&#39;=>2), 
    &#39;2&#39; => array(&#39;id&#39;=>3,&#39;min&#39;=>242,&#39;max&#39;=>268,&#39;prize&#39;=>&#39;三等奖&#39;,&#39;v&#39;=>5), 
    &#39;3&#39; => array(&#39;id&#39;=>4,&#39;min&#39;=>182,&#39;max&#39;=>208,&#39;prize&#39;=>&#39;四等奖&#39;,&#39;v&#39;=>7), 
    &#39;4&#39; => array(&#39;id&#39;=>5,&#39;min&#39;=>122,&#39;max&#39;=>148,&#39;prize&#39;=>&#39;五等奖&#39;,&#39;v&#39;=>10), 
    &#39;5&#39; => array(&#39;id&#39;=>6,&#39;min&#39;=>62,&#39;max&#39;=>88,&#39;prize&#39;=>&#39;六等奖&#39;,&#39;v&#39;=>25), 
    &#39;6&#39; => array(&#39;id&#39;=>7,&#39;min&#39;=>array(32,92,152,212,272,332), 
&#39;max&#39;=>array(58,118,178,238,298,358),&#39;prize&#39;=>&#39;七等奖&#39;,&#39;v&#39;=>50) 
);

array $prize_arr, id est utilisé pour identifier différentes récompenses, min représente l'angle minimum correspondant à chaque intervalle de récompense dans le disque, max représente l'angle maximum, tel que l'angle minimum correspondant au premier prix : 0, L'angle maximum est de 30. Ici, nous définissons la valeur maximale sur 1 et la valeur maximale sur 29 pour empêcher le pointeur de pointer vers la ligne centrale de deux prix adjacents après la loterie. Puisqu'il y a plusieurs septièmes prix dans le disque, nous définissons la plage d'angle correspondant à chaque septième prix du tableau. Le prix représente le contenu de la récompense et v représente la probabilité de gagner. Nous constaterons que la somme de v des sept récompenses du tableau est de 100. Si la valeur de v est 1, cela signifie que la probabilité de gagner est de 100. 1%, et ainsi de suite.

Concernant l'algorithme de probabilité de gain, l'article de ce site : PHP+jQuery Implémentation de la Flip Lottery présente l'algorithme de probabilité classique. Cet article utilise directement le code.

function getRand($proArr) { 
    $result = &#39;&#39;; 
 
    //概率数组的总概率精度 
    $proSum = array_sum($proArr); 
 
    //概率数组循环 
    foreach ($proArr as $key => $proCur) { 
        $randNum = mt_rand(1, $proSum); 
        if ($randNum <= $proCur) { 
            $result = $key; 
            break; 
        } else { 
            $proSum -= $proCur; 
        } 
    } 
    unset ($proArr); 
 
    return $result; 
}

La fonction getRand() calculera l'ID qualifié en fonction de la probabilité définie dans le tableau. Nous pouvons alors appeler getRand().

foreach ($prize_arr as $key => $val) { 
    $arr[$val[&#39;id&#39;]] = $val[&#39;v&#39;]; 
} 
 
$rid = getRand($arr); //根据概率获取奖项id 
 
$res = $prize_arr[$rid-1]; //中奖项 
$min = $res[&#39;min&#39;]; 
$max = $res[&#39;max&#39;]; 
if($res[&#39;id&#39;]==7){ //七等奖 
    $i = mt_rand(0,5); 
    $result[&#39;angle&#39;] = mt_rand($min[$i],$max[$i]); 
}else{ 
    $result[&#39;angle&#39;] = mt_rand($min,$max); //随机生成一个角度 
} 
$result[&#39;prize&#39;] = $res[&#39;prize&#39;]; 
 
echo json_encode($result);

Dans le code, nous appelons getRand() pour obtenir la récompense obtenue par opération de probabilité, puis générons une valeur d'angle entre l'angle minimum et l'angle maximum en fonction de la plage d'angle configurée dans la récompense, et construisez un tableau, contient l'angle et le prix, et est finalement sorti au format json.

jQuery

Sur la base de ce qui précède, nous modifions le code jQuery front-end Lorsque vous cliquez sur le bouton "Démarrer la loterie", une requête ajax est envoyée au data.php d'arrière-plan. la demande est réussie Et renvoie les informations de récompense, puis faites pivoter le pointeur vers la valeur d'angle renvoyée par data.php.

$(function(){ 
     $("#startbtn").click(function(){ 
        lottery(); 
    }); 
}); 
function lottery(){ 
    $.ajax({ 
        type: &#39;POST&#39;, 
        url: &#39;data.php&#39;, 
        dataType: &#39;json&#39;, 
        cache: false, 
        error: function(){ 
            alert(&#39;出错了!&#39;); 
            return false; 
        }, 
        success:function(json){ 
            $("#startbtn").unbind(&#39;click&#39;).css("cursor","default"); 
            var a = json.angle; //角度 
            var p = json.prize; //奖项 
            $("#startbtn").rotate({ 
                duration:3000, //转动时间 
                angle: 0, 
                animateTo:1800+a, //转动角度 
                easing: $.easing.easeOutSine, 
                callback: function(){ 
                    var con = confirm(&#39;恭喜你,中得&#39;+p+&#39;\n还要再来一次吗?&#39;); 
                    if(con){ 
                        lottery(); 
                    }else{ 
                        return false; 
                    } 
                } 
            }); 
        } 
    }); 
}

Nous construisons une fonction personnalisée lottery(). Dans lottery(), nous envoyons une requête POST à ​​data.php Si les informations gagnantes sont renvoyées avec succès, le plug-in de rotation est appelé pour commencer la rotation. L'angle de rotation est l'angle renvoyé par l'arrière-plan. Décision, nous utilisons ici 1800+a pour représenter l'angle de rotation, c'est-à-dire que le pointeur s'arrête après avoir tourné 6 cercles + a degrés, puis nous appelons lottery() lorsque nous cliquons sur le Bouton "Démarrer la loterie", pour que la loterie carrousel soit terminée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn