irpg Community
ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html)
+--- Forum: Game Maker Engine School (https://irpg.in.th/forum-30.html)
+--- Thread: ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ (/thread-2877.html)



ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ - iceman30107 - 05-29-2016

มีความสงสัยมาอีกแล้วครับ คือในฉากต่อสู้ที่ผมทำผมอยากให้มีมอนเตอร์ที่ไม่เหมือนกันทีนี้ผมงงว่าจะดึงเอา Id ของมอนเตอร์มาอ้างอิงในการสร้างยังไงอะครับ

สมมติ ผมกำหนด Id ใน
obj_enemy_1 //Create Event// e_id = 1
obj_enemy_2 //Create Event// e_id = 2
obj_enemy_3 //Create Event// e_id = 3

แล้วใน obj_control ของฉากต่อสู้ ผมก็ให้ Random Id
e_rand = choose(1,2,3)

ตอนสั่งสร้าง obj แบบนี้มันสร้างได้แค่ obj_enemy_1 ตัวเดียว
enemy1 = instance_create(x , y ,obj_enemy_1)

ตรงที่งงคือผมจะเอา Id ที่ Random ได้ไปอ้างเพื่อสร้าง obj_enemy อื่นๆยังไงเพื่อให้สร้างมอนเตอร์ได้หลายๆ แบบอะครับ ในเมื่อตอนที่ instance_create มันสร้าง obj


RE: ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ - arkman - 05-30-2016

รอผู้ที่เขียนโปรแกรมได้มาตอบครับ อันนี้เกินปัญญาผมจริงๆ


RE: ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ - sitplay - 05-30-2016

ไม่รู้ใช้คำตอบที่ต้องการหรือเปล่า
สมมุติในฉากสู้กำหนดให้ศัตรู ออกมาสูงสุด 3 ตัว

var obj = noone
randomize();
var emax = irandom(2); //0 1 2
//สร้าง ตัวแปล เก็บ ศัตรู
for(var i=0;i<emax;i++){
enemy[i]=noone;
}

//ทำการ random ศัตรู
for(var n=0;n < emax ; n++){
randomize();
e_ran = choose(1,2,3);
if e_ran == 1 obj=obj_enemy_1
if e_ran == 2 obj=obj_enemy_2
if e_ran == 3 obj=obj_enemy_3
enemy[n] = instance_create(x,y,obj);
}

หรือ

for(var n=0;n < emax; n++){
randomize();
e_ran =choose(obj_enemy_1,obj_enemy_2,obj_enemy_3)
enemy[n]= instance_create(x,y+(n*32),e_ran);
}


เวลาจะอ้างถึง ก็ ใช้อันดับ อ้างถึงศัตรูได้เลย เช่น
เพราะเราใส่ enemy ไว้ใน array ที่เรียงจาก 0 1 2


RE: ขอถามเรื่องการ Random Id มอนเตอร์เพื่อสร้างมาใช้หน่อยครับ - iceman30107 - 06-01-2016

คิดว่าน่าจะใช่แบบนี้ เดี๋ยวขอลองไปทำดูครับ ขอบคุณมากครับ