gol-a-khung   10-18-2013, 10:32 AM
#1
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);
อธิบายโค้ด : ต้องการ hp มีการสุ่มค่าดังนี้ 5, 8, 15, 32, 40

การสุ่มอักษรหรือคำ
Code:
name = choose("John", "Steven", "Graham", "Jack", "Emily", "Tina", "Jill", "Helen");
อธิบายโค้ด : ต้องการ name มีการสุ่มค่าดังนี้ John, Steven, Graham, Jack, Emily, Tina

การสุ่มภาพ
Code:
sprite_index = choose(spr_Cactus, spr_Flower, spr_Tree, spr_Shrub);
อธิบายโค้ด : ต้องการแสดงภาพ (sprite) โดยมีการสุ่มดังนี้ กระบองเพชร, ดอกไม้, ต้นไม้

อ้างอิง : GML
=====================================================
Example:
Code:
a = random(12.4);
b = random_range(23, 192);
c = irandom(32);
d = irandom_range(43, 993);
e = choose("one", "two", "three", "four", "five");
This post was last modified: 06-29-2015, 01:34 PM by gol-a-khung.
santa555a   10-18-2013, 10:55 PM
#2
สุ่มคำยังไงหวาเเบบสุ่มการเกิดอ็อบเจ็คเปล่าหรือยังไง


[Image: 50840484]

เกมที่กำลังทำlast island
กระทู้กาฟ
http://irpg.in.th/thread-1828.html
แฟนเพจ
https://www.facebook.com/nukcashgamenew
gol-a-khung   10-18-2013, 11:18 PM
#3
ท่านต้องเข้าใจในการสร้างประโยคเงื่อนไขก่อนครับ เช่น เราอยากให้ศัตรูเกิดต่างที่กัน (สิ่งที่คิด) ตรงต่างที่กันจะให้ความหมายคือ การสุ่มค่า ในภาษาเกมส์มาร์คเกอร์(GML) ได้ให้ฟังก์ชั่นการสุ่มค่ามาเป็นค่าตายตัว คือ random() ซึ่งต้องนำไปใช้กับประโยคเงือนไขที่กำหนด ถึงจะได้ผลรับที่ลงตัว ดังตัวอย่างด่านบน
instance_create(random(150),random(200),obj_enemy)
ตามตัวอย่าง ถือว่าเป็นประโยคเงื่อนไข เป็นการสุ่มค่าการเกิดของศัตรู

ฟังก์ชั่นการสุ่มค่า ยังสามารถนำไปประยุคได้หลากหลาย เช่น
การสุ่มค่าหาตัวเลขที่ต้องการ
การสุ่มค่าเพื่อดรอปของ
การสุ่มค่าเพื่อให้เกิดศัตรู
การสุ่มค่าเพื่อให้เกิดตัวเลขที่แตกต่าง
การสุ่มค่าเข้าแผนที่
ฯลฯ อีกมากมายเลยครับ

ทิ้งคำถามไว้กับสิ่งที่ท่านไม่เข้าใจ ถ้าเห็นจะรีบหาคำตอบมาให้ครับ
santa555a   10-19-2013, 02:21 AM
#4
เปล่าผมงงตรง สุ่มคำหรือสุ่มศัตรู
เเต่ก็ok


[Image: 50840484]

เกมที่กำลังทำlast island
กระทู้กาฟ
http://irpg.in.th/thread-1828.html
แฟนเพจ
https://www.facebook.com/nukcashgamenew
gol-a-khung   06-29-2015, 01:42 PM
#5
อัพเดทคำสั่ง Choose ครับ
arkman   06-30-2015, 09:48 AM
#6
ขอเสริมอีกนิดนะครับ
การใช้ random จะทำให้สุ่มค่าเป็นทศนิย แต่ถ้าไม่ต้องการให้เป็นแบบนั้น ก็ให้ใส่ round แทรกลงไป เช่น
(round(random(5))) จะเป็นการสุ่มค่าตั้งแต่ 0-5 โดยไม่ติดทศนิยมครับ
เป็นอีกวิธีหนึ่งที่ใช้ได้ผลครับ เพราะผมใช้ทำเกมบางเกมที่มีการสุ่มเลือกเหตุการณ์ด้วย

Show ContentSpoiler:
[Image: Signature-Ralph.png]
gol-a-khung   06-30-2015, 01:58 PM
#7
round(random(5)) หรือ irandom(5) ได้ค่าเหมือนกันครับ(สุ่ม 0 - 5) แล้วแต่จะเลือกใช้โค้ดครับ
  
Users browsing this thread: 5 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.