Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Game Maker [GML]ฟังก์ชั่นการสุ่มค่า(ผู้เริ่มต้น)
#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");
[-] The following 8 users say Thank You to gol-a-khung for this post:
  • arkman, dreamknight, jin, melodious, Shinryu, slost, tiwlymaster, นิราจ
Reply
#2
สุ่มคำยังไงหวาเเบบสุ่มการเกิดอ็อบเจ็คเปล่าหรือยังไง

[Image: 50840484]

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

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

ทิ้งคำถามไว้กับสิ่งที่ท่านไม่เข้าใจ ถ้าเห็นจะรีบหาคำตอบมาให้ครับ
[-] The following 1 user says Thank You to gol-a-khung for this post:
  • melodious
Reply
#4
เปล่าผมงงตรง สุ่มคำหรือสุ่มศัตรู
เเต่ก็ok

[Image: 50840484]

เกมที่กำลังทำlast island
กระทู้กาฟ
http://irpg.in.th/thread-1828.html
แฟนเพจ
https://www.facebook.com/nukcashgamenew
Reply
#5
อัพเดทคำสั่ง Choose ครับ
Reply
#6
ขอเสริมอีกนิดนะครับ
การใช้ random จะทำให้สุ่มค่าเป็นทศนิย แต่ถ้าไม่ต้องการให้เป็นแบบนั้น ก็ให้ใส่ round แทรกลงไป เช่น
(round(random(5))) จะเป็นการสุ่มค่าตั้งแต่ 0-5 โดยไม่ติดทศนิยมครับ
เป็นอีกวิธีหนึ่งที่ใช้ได้ผลครับ เพราะผมใช้ทำเกมบางเกมที่มีการสุ่มเลือกเหตุการณ์ด้วย
Show ContentSpoiler:
[Image: Signature-Ralph.png]
[-] The following 1 user says Thank You to arkman for this post:
  • gol-a-khung
Reply
#7
round(random(5)) หรือ irandom(5) ได้ค่าเหมือนกันครับ(สุ่ม 0 - 5) แล้วแต่จะเลือกใช้โค้ดครับ
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)