[Hướng Dẫn] [XP] Minigame giống audition

in RPG Maker
Bài này sẽ hướng dẫn tạo 1 minigame(kiểu giống Audition nhưng đơn giản hơn nhiều-k biết mô tả sao =.=) bằng script

đầu tiên vào tạo một Scene riêng và khai báo những thủ tục như sau
[align=center][size=large]Đầu tiên là # 1.[/size][/align]
Ta khai báo các biến cần thiết, trên hình các bạn có thể thấy 1 thanh dài gọi là "bar", 1 ô màu đỏ là "đích" và ô màu vàng là *chả biết gọi là gì hết* "trượt".
Như vậy thì cần 3 biến, gọi từng biến như sau
[align=center][size=large]# 2. ta khai báo thủ tục[/size][/align]

[align=center][size=large]# 3. tùy chỉnh cho các biến[/size][/align]
ta cũng khai báo các bước thủ tục
Về cơ bản là xong hết rồi, nhưng mà mini game thì phải có thưởng chứ.
Ta sẽ kiểm tra nếu như người chơi bấm nút C và thanh "trượt" nằm trong phạm vi của ô "đích"*nãy giờ mới nhắc tới biến "đích" này, tưởng là khai báo dư nhỉ:D* thì ta cho biến $game_variables[1] giá trị 1, nếu bấm ngoài phạm vi đó thì gán cho nó giá trị 2.
Cuối cùng cho người chơi trở về lại map sau khi chơi xong :D
Xong rồi đó, bạn chỉ cần gọi Scene_Test này ra ở 1 event nào đó thôi, ví dụ như hình này nhé

Trong event này bạn tạo điều kiện nếu như $game_variables[1] = 1 thì cho phần thưởng, còn = 2 thì thông báo thua :D
Một số thứ mình k hướng dẫn ở đây mà làm trong Demo,ai có hứng thú thì xem nha, cũng k có gì nhiều đâu: http://www.mediafire.com/?2t8shhr5g2p2xxf
Nếu có bạn nào muốn sử dụng thì mình sẽ update thêm phần bấm các nút lên xuống qua về để cho giống Audition luôn, mình k làm ở bài hd này bởi vì thấy 4rum mình ít người xài RMXP quá =.=

đầu tiên vào tạo một Scene riêng và khai báo những thủ tục như sau
Bây giờ ta sẽ làm từng bước ở #class Scene_Test
def main
# 1. ở đây ta sẽ khai báo các biến cần thiết cho script
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
# 2. ở đây ta sẽ khai báo thủ tục loại bỏ các biến khi rời khỏi Scene_Test này
end
def update
# 3. ở đây ta sẽ thực hiện những thay đổi cho các biến trên, tạo được mini game ta muốn
end
end
[align=center][size=large]Đầu tiên là # 1.[/size][/align]
Ta khai báo các biến cần thiết, trên hình các bạn có thể thấy 1 thanh dài gọi là "bar", 1 ô màu đỏ là "đích" và ô màu vàng là *chả biết gọi là gì hết* "trượt".
Như vậy thì cần 3 biến, gọi từng biến như sau
tương tự khai báo 2 biến @dich với @truot
[align=center][size=large]# 2. ta khai báo thủ tục[/size][/align]
sau 2 đoạn đó thì ta có được script như sau

[align=center][size=large]# 3. tùy chỉnh cho các biến[/size][/align]
ta cũng khai báo các bước thủ tục
Mình sẽ hướng dẫn bạn làm 2 hiệu ứng riêng
Với kiểu hiệu ứng này các bạn sẽ làm cho thanh "trượt" chuyển động từ góc trái tới góc phải rồi sau đó biến 1 cái về lại góc trái(tức là 2 đầu thông nhau)
câu lệnh sử dụng ở đây là
Do đó các bạn sẽ giới hạn lại phạm vi thanh trượt di chuyển nằm trong phạm vi độ rộng của thanh "bar", dưới đây là kiểu mẫu câu lệnh như vậy

*hình cho dễ hình dung*chấm đen là tọa độ x, thanh ngang đen là độ rộng của "bar" còn thanh ngang đỏ chính là độ rộng của thanh "trượt"
nếu điều kiện kia thõa mãn thì tức là thanh "trượt" đã vượt ra ngoài thanh "bar", ta sẽ cho nó quay lại vị trí ban đầu với lệnh
câu lệnh sử dụng ở đây là
@truot.x += #Tốc độ di chuyển, là số pixel mà mỗi lần thanh "trượt" này đi được
Vào test thử sẽ thấy thanh này chạy 1 mạch qua góc kia màn hình rồi biến mấtDo đó các bạn sẽ giới hạn lại phạm vi thanh trượt di chuyển nằm trong phạm vi độ rộng của thanh "bar", dưới đây là kiểu mẫu câu lệnh như vậy
if @truot.x >= @bar.x + @bar.bitmap.width - @truot.bitmap.width
câu lệnh này có nghĩa là
các bạn có thể tưởng tượng trong đầu hoặc vẽ ra giấy câu này sẽ thấy đó là giới hạn bên phải của thanh "bar"nếu tọa độ x của thanh "trượt" lớn hơn (tọa độ x của thanh "bar" + độ rộng của thanh "bar" trừ đi độ rộng của thanh "trượt")

*hình cho dễ hình dung*chấm đen là tọa độ x, thanh ngang đen là độ rộng của "bar" còn thanh ngang đỏ chính là độ rộng của thanh "trượt"
nếu điều kiện kia thõa mãn thì tức là thanh "trượt" đã vượt ra ngoài thanh "bar", ta sẽ cho nó quay lại vị trí ban đầu với lệnh
@truot.x = @bar.x
vậy thì nãy h ta sẽ có những lệnh như sau
Ở đây ta dùng 1 biến đệm là @switch để đảo chiều chuyển động, do đó lên trên def main khai @switch = true
pha đầu chuyển động sang bên phải, nếu như đi đến hết chiều rộng của thanh "bar" thì bật qua pha thứ 2 với lệnh @switch = false
pha đầu chuyển động sang bên phải, nếu như đi đến hết chiều rộng của thanh "bar" thì bật qua pha thứ 2 với lệnh @switch = false
pha thứ 2 di chuyển về phía bên trái, chạm góc trái của "bar" thì bật qua pha 1 lại
Về cơ bản là xong hết rồi, nhưng mà mini game thì phải có thưởng chứ.
Ta sẽ kiểm tra nếu như người chơi bấm nút C và thanh "trượt" nằm trong phạm vi của ô "đích"*nãy giờ mới nhắc tới biến "đích" này, tưởng là khai báo dư nhỉ:D* thì ta cho biến $game_variables[1] giá trị 1, nếu bấm ngoài phạm vi đó thì gán cho nó giá trị 2.
Cuối cùng cho người chơi trở về lại map sau khi chơi xong :D
Xong rồi đó, bạn chỉ cần gọi Scene_Test này ra ở 1 event nào đó thôi, ví dụ như hình này nhé

Trong event này bạn tạo điều kiện nếu như $game_variables[1] = 1 thì cho phần thưởng, còn = 2 thì thông báo thua :D
Một số thứ mình k hướng dẫn ở đây mà làm trong Demo,ai có hứng thú thì xem nha, cũng k có gì nhiều đâu: http://www.mediafire.com/?2t8shhr5g2p2xxf
Nếu có bạn nào muốn sử dụng thì mình sẽ update thêm phần bấm các nút lên xuống qua về để cho giống Audition luôn, mình k làm ở bài hd này bởi vì thấy 4rum mình ít người xài RMXP quá =.=
Comments
Có lẽ vậy :D, nhưng mà mình thêm phần kiểm tra vị trí của thanh trượt để đưa ra kết quả thắng hay thua nữa, bạn có thể tùy biến kiểu nào bạn thích mà, dù gì cũng là tạo trò chơi chứ có phải là lắp ráp trò chơi đâu :D