[GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html) +--- Forum: The Great Game Maker Library (https://irpg.in.th/forum-31.html) +--- Thread: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) (/thread-1475.html) |
[GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - gol-a-khung - 10-18-2013 GML Functions: Random Functions ภาษาเกมส์มาร์คเกอร์ : ฟังก์ชั่นการสุ่มค่า บทความนี้จะมาเรียนรู้การสุ่มค่าตัวเลขที่นำไปใช้บ่อย random(x) คือ ฟังก์ชั่นนี้จะทำการสุ่มค่าระหว่าง 0 ถึง x (มีเลขทศนิยม) x คือ ค่าที่กำหนดสูงสุด เช่น random(5) หมายความว่า จะสุ่มค่าระหว่าง 0 ถึง 5 ค่าที่ได้จะประมาณนี้ 0.35, 1.25, 3.56, 4.00, 4.99, 5.00 random_range(x1,x2) คือ ฟังก์ชั่นนี้จะทำการสุ่มค่าระหว่าง x1 ถึง x2 (มีเลขทศนิยม) x1 คือ ค่ากำหนดเริ่มต้น x2 คือ ค่ากำหนดสิ้นสุด เช่น random_range(2,5) หมายความว่า จะสุ่มค่าระหว่าง 2 ถึง 5 ค่าที่ได้จะประมาณนี้ 2.25, 3.19, 4.49, 5.00 การกำหนดให้สุ่มค่าเป็นเลขจำนวนเต็ม(ไม่มีทศนิยม) โดยใช้ [ i ] เพิ่มไปหน้าฟังก์ชั่นดังนี้ irandom(x) irandom_range(x1,x2) ตัวอย่างการเขียนคำสั่ง instance_create(random(150),random(200),obj_enemy) หมายความว่า สร้างศัตรูที่ตำแหน่ง x ระหว่าง 0 ถึง 150, ที่ตำแหน่ง y ระหว่าง 0 ถึง 200 ขอบคุณที่เข้ามาชมครับ ผิดพลาดประการใดช่วยบอกด้วยนะครับจะได้รีบแก้ไข ====================================================== update 001 คำสั่ง Choose คือคำสั่งที่ใช้สุ่มค่าโดยการกำหนดค่าแบบตายตัว อาร์กิวเมนต์ที่ใช้ในการแทนค่าจะได้ 16 ตัวเท่านั้น Code: choose(val0, val1, val2... val15); ตัวอย่างเช่น : การสุ่มตัวเลข Code: hp = choose(5, 8, 15, 32, 40); การสุ่มอักษรหรือคำ Code: name = choose("John", "Steven", "Graham", "Jack", "Emily", "Tina", "Jill", "Helen"); การสุ่มภาพ Code: sprite_index = choose(spr_Cactus, spr_Flower, spr_Tree, spr_Shrub); อ้างอิง : GML ===================================================== Example: Code: a = random(12.4); RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - santa555a - 10-18-2013 สุ่มคำยังไงหวาเเบบสุ่มการเกิดอ็อบเจ็คเปล่าหรือยังไง RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - gol-a-khung - 10-18-2013 ท่านต้องเข้าใจในการสร้างประโยคเงื่อนไขก่อนครับ เช่น เราอยากให้ศัตรูเกิดต่างที่กัน (สิ่งที่คิด) ตรงต่างที่กันจะให้ความหมายคือ การสุ่มค่า ในภาษาเกมส์มาร์คเกอร์(GML) ได้ให้ฟังก์ชั่นการสุ่มค่ามาเป็นค่าตายตัว คือ random() ซึ่งต้องนำไปใช้กับประโยคเงือนไขที่กำหนด ถึงจะได้ผลรับที่ลงตัว ดังตัวอย่างด่านบน instance_create(random(150),random(200),obj_enemy) ตามตัวอย่าง ถือว่าเป็นประโยคเงื่อนไข เป็นการสุ่มค่าการเกิดของศัตรู ฟังก์ชั่นการสุ่มค่า ยังสามารถนำไปประยุคได้หลากหลาย เช่น การสุ่มค่าหาตัวเลขที่ต้องการ การสุ่มค่าเพื่อดรอปของ การสุ่มค่าเพื่อให้เกิดศัตรู การสุ่มค่าเพื่อให้เกิดตัวเลขที่แตกต่าง การสุ่มค่าเข้าแผนที่ ฯลฯ อีกมากมายเลยครับ ทิ้งคำถามไว้กับสิ่งที่ท่านไม่เข้าใจ ถ้าเห็นจะรีบหาคำตอบมาให้ครับ RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - santa555a - 10-19-2013 เปล่าผมงงตรง สุ่มคำหรือสุ่มศัตรู เเต่ก็ok RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - gol-a-khung - 06-29-2015 อัพเดทคำสั่ง Choose ครับ RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - arkman - 06-30-2015 ขอเสริมอีกนิดนะครับ การใช้ random จะทำให้สุ่มค่าเป็นทศนิย แต่ถ้าไม่ต้องการให้เป็นแบบนั้น ก็ให้ใส่ round แทรกลงไป เช่น (round(random(5))) จะเป็นการสุ่มค่าตั้งแต่ 0-5 โดยไม่ติดทศนิยมครับ เป็นอีกวิธีหนึ่งที่ใช้ได้ผลครับ เพราะผมใช้ทำเกมบางเกมที่มีการสุ่มเลือกเหตุการณ์ด้วย RE: [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น) - gol-a-khung - 06-30-2015 round(random(5)) หรือ irandom(5) ได้ค่าเหมือนกันครับ(สุ่ม 0 - 5) แล้วแต่จะเลือกใช้โค้ดครับ |