Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Java
- error
- ruby
- rubymine
- 루비
- 개발노트
- IntelliJ
- GitHub
- Python
- RaspberryPi
- kotlin
- jetbrains
- gradle
- Baekjoon
- react
- Android
- boj
- C
- gnuplot
- plugin
- CPP
- OTLanguage
- JS
- Spring
- maven
- Vane
- OAuth
- Shell
- ruby2d
- Godot
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[Ruby] 루비로 게임 제작해보기 7: 도착 로직 구현 본문
[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로 변경되고 도착하였다면 이동할 수 없도록 패스하도록합니다.
'Language > Ruby' 카테고리의 다른 글
[Ruby] 루비로 sin 그래프 구현하기 (0) | 2023.04.12 |
---|---|
[Ruby] 루비에서 그래프 구현하기 (gnuplot 설치) (0) | 2023.04.12 |
[Ruby] 루비로 게임 제작해보기 6-1: 물체 통과 막기 (0) | 2023.01.05 |
[Ruby] 루비로 게임 제작해보기 6: 물체 통과 막기 (0) | 2022.12.28 |
[Ruby] 루비로 게임 제작해보기 5: 상대 위치로 이동 (0) | 2022.12.27 |