Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie ein Lotterieprogramm in PHP

So implementieren Sie ein Lotterieprogramm in PHP

藏色散人
藏色散人Original
2020-07-27 10:26:005801Durchsuche

So implementieren Sie das Lotterieprogramm in PHP: Laden Sie zuerst die JQuery-Bibliotheksdatei und „jQueryRotate.js“ in den Kopf. Erstellen Sie dann ein mehrdimensionales Array in „data.php“. Die im Array festgelegte Wahrscheinlichkeit erhält die ID, die die Bedingungen erfüllt. Rufen Sie schließlich die getRand-Methode auf.

So implementieren Sie ein Lotterieprogramm in PHP

Empfohlen: „PHP-Tutorial

Vorbereitung

Bereiten Sie zunächst die Materialien vor und Eine Lotterie ziehen Die Schnittstelle verwendet zwei Bilder, ein Festplattenbild und ein Zeigerbild. In tatsächlichen Anwendungen können je nach Bedarf unterschiedliche Festplattenbilder erstellt werden.

Dann erstellen wir eine HTML-Seite. Im Beispiel fügen wir den folgenden Code zum Text hinzu:

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

Wir verwenden #disk, um das Festplattenhintergrundbild zu platzieren, es in CSS zu steuern und zu verwenden #start, um den Zeiger zu platzieren. Bild start.png.

Dann verwenden wir CSS, um die Position des Zeigers und der Festplatte zu steuern. Der Code lautet wie folgt:

.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

Wenn wir den Zeiger drehen lassen möchten, ohne Mit Flash können wir HTML5-Canvas verwenden, um Bilder zu drehen, aber Sie müssen die Browserkompatibilität berücksichtigen. Ein jQuery-Plug-in kann Bilder (alle HTML-Elemente) vollständig drehen und ist mit den wichtigsten Browsern kompatibel.

Mit jQueryRotate.js können Sie Bilder in jeden beliebigen Winkel drehen, Mausereignisse binden und Animationseffekte und Rückruffunktionen für den Rotationsprozess festlegen.

Die Verwendungsmethode besteht natürlich darin, zuerst die JQuery-Bibliotheksdatei und jQueryRotate.js in den Kopf zu laden, und dann können wir den folgenden Code verwenden, um die Zeigerdrehung zu realisieren.

$(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;); 
                        } 
                 }); 
            } 
        } 
    }); 
});

Der obige Code ist implementiert: Wenn auf die Schaltfläche „Lotterie starten“ des Zeigers geklickt wird, beginnt sich der Zeiger zu drehen und der Drehwinkel beträgt 3600+a, d. h. nach 10 Umdrehungen dreht er sich um ein zufällig generierter Winkel a. Wenn der Drehwinkel 3600+a Grad erreicht, stoppen Sie die Drehung.

Es ist zu beachten, dass Easing: Animation Extension mit dem Animation Extension Plug-In kombiniert werden muss, um dies zu erreichen. Das Easing-Plug-In wird in diesem Artikel vorgestellt: jQuery Easing Animation Effect Extension

In diesem Artikel wurde der Prozess des Drehens des Drehtellerzeigers abgeschlossen, er muss jedoch mit der Lotteriesteuerung kombiniert werden, um ein vollständiges Lotterieprogramm zu erhalten. Wir werden dies als nächstes tun. In diesem Artikel wird die Verwendung von PHP zur Steuerung der Lotteriewahrscheinlichkeit sowie die Verwendung von jQuery und PHP zur Vervollständigung des interaktiven Prozesses der Lotterie vorgestellt. Bleiben Sie also auf dem Laufenden.

PHP

Zuerst stellen wir den entsprechenden Winkel und die Gewinnwahrscheinlichkeit entsprechend dem Preis auf der Lotteriescheibe ein und erstellen eine Dateneingabe .php Mehrdimensionales Array:

$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 wird zur Identifizierung verschiedener Auszeichnungen verwendet, min stellt den minimalen Winkel dar, der jedem Auszeichnungsintervall auf der Festplatte entspricht, max stellt den maximalen Winkel dar, z. B. den entsprechenden minimalen Winkel zum ersten Preis: 0, der maximale Winkel beträgt 30. Hier setzen wir den Maximalwert auf 1 und den Maximalwert auf 29, um zu verhindern, dass der Zeiger nach der Lotterie auf die Mittellinie zweier benachbarter Preise zeigt. Da die Scheibe mehrere siebte Preise enthält, legen wir den Winkelbereich fest, der jedem siebten Preis im Array entspricht. Der Preis stellt den Inhalt der Auszeichnung dar und v stellt die Gewinnwahrscheinlichkeit dar. Wir werden feststellen, dass die Summe von v der sieben Auszeichnungen im Array 100 beträgt. Wenn der Wert von v 1 ist, bedeutet dies, dass die Gewinnwahrscheinlichkeit gleich ist 1 % und so weiter.

In Bezug auf den Gewinnwahrscheinlichkeitsalgorithmus stellt der Artikel dieser Website: PHP+jQuery Implementing the Flip Lottery den klassischen Wahrscheinlichkeitsalgorithmus vor.

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; 
}

Die Funktion getRand() berechnet die qualifizierte ID basierend auf der im Array festgelegten Wahrscheinlichkeit. Wir können dann getRand() aufrufen.

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);

Im Code rufen wir getRand() auf, um die durch Wahrscheinlichkeitsoperation erhaltene Auszeichnung zu erhalten, und generieren dann einen Winkelwert zwischen dem minimalen Winkel und dem maximalen Winkel gemäß dem in der Auszeichnung konfigurierten Winkelbereich Erstellen Sie ein Array, das Winkel und Preis enthält und schließlich im JSON-Format ausgegeben wird.

jQuery

Basierend auf dem oben Gesagten ändern wir den Front-End-jQuery-Code. Wenn auf die Schaltfläche „Lotterie starten“ geklickt wird, wird eine Ajax-Anfrage an den Hintergrund data.php gesendet Die Anfrage ist erfolgreich. Geben Sie die Preisinformationen zurück und drehen Sie dann den Zeiger auf den von data.php zurückgegebenen Winkelwert.

$(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; 
                    } 
                } 
            }); 
        } 
    }); 
}

Wir erstellen eine benutzerdefinierte Funktion lottery(). Wenn die Gewinninformationen erfolgreich zurückgegeben werden, wird das Rotations-Plugin aufgerufen Der Drehwinkel ist der vom Hintergrund zurückgegebene Winkel. Hier verwenden wir 1800 + a, um den Drehwinkel darzustellen, dh der Zeiger stoppt, nachdem er sich um 6 Kreise + a gedreht hat, und rufen dann lottery () auf Klicken Sie auf die Schaltfläche „Lotterie starten“, damit die Karussell-Lotterie abgeschlossen ist.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein Lotterieprogramm in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn