สวัสดียามเย็นย่ำค่ำ (ขณะเขียน) วันนี้ผมมีฟังก์ชันสนุกๆของ php มานำเสนอให้ทุกๆคนได้ลองเล่นลองทำตามกันนะครับ ก่อนอื่นก็ดาวโหลดไฟล์งานไปก่อนเลย
Download เป็นไฟล์นามสกุล .tar นะครับ ลองใช้วิธีในการคลายไฟล์อย่างที่เคยสอนไว้แล้วที่
การใช้งานคำสั่ง Unix/Linux เบื้องต้น
อิอิ (หากินกันง่ายๆแบบนี้เลย ฮ่าๆๆ)
ครับสำหรับฟังก์ชันที่จะสอนวันนี้คือ ฟังก์ชัน srand() นั่นเองสำหรับฟังก์ชันนี้คร่าวๆนะครับ เป็นฟังก์ชันสำหรับสร้างตัวเลขสุ่มขึ้นมา ซึ่งการทำงานต้องใช้ร่วมกันกับฟังก์ชัน rand() และ getrandmax() ด้วย มีรูปแบบการเขียนดังนี้ครับ
void srand(int seed) โดยที่ seed คือเลขจำนวนเต็มสูงสุดที่จะใช้ในการสุ่มค่านะครับ
ตัวอย่างการใช้งานคำสั่ง
<? srand((double)microtime()*1000000); $seed = rand(1000000,9999999); echo $seed ."<br>"; srand((double)microtime()*$seed); echo rand(1,100); ?>
จะได้ผลลัพท์ออกมาดังภาพ
ซึ่งผลลัพท์ที่ได้คือตัวเลขจากการสุ่ม โดยค่าจากตัวเลขชุดแรกจะได้ค่าที่อยู่ในช่วง 1000000 - 9000000 นั่นคือได้มาจากการจำกัดค่าจากฟังก์ชั่น
rand(1000000,9999999);
ตัวเลขชุดถัดมานั้น เราได้นำค่าจากตัวเลขชุดแรกมาใช้งานในฟังก์ชัน srand() ต่อและจะมีค่าอยู่ในช่วง 1 - 100 ซึ่งถูกจำกัดค่าจากฟังก์ชัน
rand(1,100);
ซึ่งค่าทั้งหมดที่ได้มานั้นเมื่อเราลองรีเฟรชหน้าจอใหม่ก็จะได้ค่าใหม่ขึ้นมานะครับ เอาละครับเมื่อทราบการใช้งานคร่าวๆแล้ว เราลองมาทำอะไรเล่นๆกันดีกว่านะครับ สำหรับวันนี้เราจะมาลองใช้ฟังก์ชัน srand() ในการมาทำเกมทายผลลูกเต๋ากัน
ขั้นแรกเราก็ใช้โปรแกรมอะไรก็ได้มาใช้สำหรับเขียนโค้ดโปรแกม ถ้าท่านใช้ระบบปฏิบัติการ Windows ก็ใช้แค่โปรแกรมเล็กๆอย่าง Notepad ก็ได้ สำหรับผู้ที่ใช้ระบบปฏิบัติการ Ubuntu แบบผมใช้เพียง Gedit เจ้าเก่าก็ได้แล้วหล่ะครับ เมื่อเปิดโปรแกรมมาเราก็พิมพ์ตามนี้เลย (ต้องบอกก่อนว่าในไฟล์นั้นผมจัดไว้สวยมาก แต่พอมาทำบนเว็บแล้วมันเอ๋อๆนิดนึงต้องขออภัยมา ณ ที่นี้ด้วย)
บันทึกในชื่อ dice.html
<html> <head> <tltle>เซียนเต๋า เขย่าโชค</title> </head> <body onLoad=frm.dice1.focus()> <H1 align=center style='color:blue'></H1> <form name=frm method=get action=ran_dice.php> <table width=50% align=center border=1> <tr> <th style='color:yellow;background-color:green'>ลองทายหมายเลขดูซิ (1-6)</th> <th rowspan=3><img width=40 src=6.jpg> <img width=40 src=6.jpg></th> </tr> <tr> <th> <input type=text name=dice1 size=3 Maxlength=1> <input type=text name=dice2 size=3 Maxlength=1> </th> </tr> <tr> <th> <input type=submit value="ทาย"> <input type=reset value="ยกเลิก"> </th> </tr> </table> </form> </body> </html>
บันทึกในชื่อ ran_dice.php
<? $cnt = $_REQUEST["cnt"]; $dice1 = $_REQUEST["dice1"]; $dice2 = $_REQUEST["dice2"]; if($dice1 == "" or $dice2 == "")HEADER("location.ran_dice.php?cnt=0&dice1=0&dice2=0"); srand((double)microtime()*1000000); for($i=0;$i<2;$i++){ $t[$i] = rand(1,6); } $dice3 = $dice1 + $dice2; $test = $t[0]+$t[1]; ?> <body onLoad=frm.dice1.focus()> <H1 align=center style='color:blue'>ทายลูกเต๋า</H1> <?$cnt+=1;?> <form name=frm method=get action=ran_dice.php> <?echo "<input type=hidden value=$cnt name=cnt>";?> <table width=55% align=center border=1> <tr> <th style='color:yellow;background-color:green'>หมายเลขที่ทายคือ</th> <td rowspan=4 valign=top><b>คุณทายมาแล้ว <?echo "$cnt";?> ครั้ง</b><br> หมายเลขที่ทายคือ <b><?echo "$dice1";?></b> และ <b><?echo "$dice2";?></b> แต้มรวมคือ <b><?echo "$dice3";?></b><br> หมายเลขที่ออกคือ <img width=40 src="<?echo "$t[0]";?>.jpg"> และ <img width=40 src="<?echo "$t[1]";?>.jpg"> แต้มรวมคือ <b style='font-size:20pt;'><?echo "$test";?></b><br> <? if(($dice1 == $t[0] or $dice1 == $t[1]) and ($dice2 == $t[0] or $dice2 == $t[1]) and $dice3 == $test){ echo "<b style='color:red'>ยินดีด้วย คุณทายถูกทั้งหมด ยอดเยี่ยมไปเลย</b>"; }else if(($dice1 != $t[0] or $dice1 != $t[1]) and ($dice2 != $t[0] or $dice2 != $t[1]) and $dice3 == $test){ echo "<b style='color:orange'>ทายถูกแค่ผลรวมเท่านั้น แต่ก็ถือว่าเยี่ยม</b>"; }else{ echo "<b>คุณทายไม่ถูก ลองใหม่อีกทีสิ เด็กโง่!!!</b>"; } ?> </td> </tr><?echo "\n";?> <tr> <th> <input type=text name=dice1 size=3 Maxlength=1> <input type=text name=dice2 size=3 Maxlength=1> </th> </tr> <tr> <th> <input type=submit value="ทาย"> <input type=reset value="ยกเลิก"> </th> </tr> </table> </form> </body>
สำหรับรูปภาพก็ไว้ในที่เดียวกับกับไฟล์ทั้งสองเลยนะครับ สำหรับผมก็เก็บไว้แบบนี้
จากนั้นเราก็ลองมาเล่นกันดีกว่า เปิด Web browser ของคุณแล้วก็พิมพ์ที่อยู่ของไฟล์ dice.html จากนั้นก็มาสนุกกับเกมนี้กันเลย โดยคุณลองพิมพ์ตัวเลข 2 จำนวนลงในช่อง แล้วกดปุ่ม ทาย ลองเล่นดูนะครับ
และการแสดงผลของเรานั้นจะมีผลลัพท์ออกมาสามแบบ ดังภาพ
Credit : ฐิติมา มโนหมั่นศรัทธา,โคตรเซียน PHP,โอเอวัน:กรุงเทพ,790 หน้า
อธิบาย :
สำหรับคำอธิบายเนื้อหาก็ไม่มีอะไรมาก เราแค่ใช้ฟังก์ชัน srand() ในการสุ่มตัวเลข 1 - 6 มาสองชุด ใช้สำหรับไว้ทายผล และเก็บไว้เข้าถึงรูปภาพหน้าลูกเต๋าของเรา
srand((double)microtime()*1000000); for($i=0;$i<2;$i++){ $t[$i] = rand(1,6);
}
โดยนำมาเก็บในตัวแปร $t[0] และ $t[1] นั่นเอง
จากนั้นเราก็ทำการบวกกันเพื่อให้ได้ผลลัพท์ค่าหนึ่ง นำมาเก็บไว้สำหรับมาทายกัน
$dice3 = $dice1 + $dice2; $test = $t[0]+$t[1];
$dice3 ได้มาจากผลรวมของค่าที่เราทาย ส่วน $test นั้นได้มาจากค่าผลรวมของระบบที่สุ่มมาได้
โดยตัวเลขที่สุ่มได้นั้นนอกจากจะนำมาทายแล้วยังต้องนำไปทำเป็นตัวเลขที่ใช้สำหรับแสดงผลรูปภาพด้วยก็ไม่ยากอะไร เพราะเราตั้งชื่อภาพเป็นตัวเลขเรียงกัน 1 - 6 อยู่แล้วดังนั้นเมื่อ srand() สุ่มเลขอะไรมาเราก็นำเอาเลขชุดนั้นไปทำเป็นคีย์ชื่อภาพในการแสดงภาพตามตัวเลขนั้นๆ
หมายเลขที่ออกคือ <img width=40 src="<?echo "$t[0]";?>.jpg">
และ <img width=40 src="<?echo "$t[1]";?>.jpg">
และการแสดงผลของเรานั้นจะมีผลลัพท์ออกมาสามแบบ ดังภาพ
สุดยอดไหมหล่ะ แค่ครั้งแรกนะเนี่ย ยอดเยี่ยมเป็นบ้าเลย
อืม พอใช้ได้ ฮ่าๆๆๆ
โห...โดยระบบด่าว่าเด็กโง่ มีเคืองนะเนี่ย
ครับสำหรับวันนี้ก็มีแค่นี้หล่ะครับ ลองนำไปทำเล่นๆดูสนุกๆนะครับ ใครมีผลงานแจ่มๆจาการใช้ srand() ก็เอามาอวดบ้างนะครับ อ่ออีกอย่างอย่ากดรีเฟรช (F5) นะครับขอเตือนไว้ก่อนเดี๋ยวไม่สนุก อิอิ
No comments:
Post a Comment