[Ruby] 루비로 게임 제작해보기 6: 물체 통과 막기
[Ruby] 루비로 게임 제작해보기 6-1: 물체 통과 막기
지금까지 이동하는 로직을 구현했으므로 게임의 진행하고 끝나는 로직을 구현할려고 합니다.
direction.rb
6-1
코드 유지
start.rb
require 'ruby2d'
require_relative 'direction'
check_in = lambda do |o1, os, x, y|
os.each do |o|
if Direction.check o1, o
o1.x, o1.y = x, y
end
end
end
set title: "Game"
@width = get :width
@height = get :height
@is_finish = false
# 장애물
block = []
# 중간에 설치하는 로직
def set_center_x(o)
o.x = @width / 2
o.x -= o.width
o
end
def set_center_y(o)
o.y = @height / 2
o.y -= o.height
o
end
st = Text.new("Start")
en = Text.new("End")
character = Rectangle.new(width: 20, height: 20, color: "red")
set_center_x st
set_center_x en
st.y = @height - st.height
# 시작 위치로 이동하는 로직
character.x = st.x + st.width / 2
character.y = st.y
Window.on :key_held do |e|
if @is_finish
next
end
x, y = character.x, character.y
Direction::move(e, character, speed=3)
if Direction::check(character, en)
@is_finish = true
clear_message = Text.new("성공")
set_center_x clear_message
set_center_y clear_message
end
if character.x < 0 || character.x + character.width > @width; character.x = x end
if character.y < 0 || character.y + character.height > @height; character.y = y end
check_in.call(character, block, x, y)
end
show
start.rb
@is_finish = false
동작이 끝이 났는지 확인하는 로직
set_center_x
x축의 가운데로 이동시키는 로직
set_center_y
y축의 가운데로 이동시키는 로직
st = Text.new("Start")
시작하는 위치를 나타내는 텍스트
en = Text.new("End")
끝나는 위치를 나타내는 텍스트
if @is_finish
만약에 도착을 했으면 @is_finish의 값이 true로 변경되고 도착하였다면 이동할 수 없도록 패스하도록합니다.