Skip to content

Commit

Permalink
돌아가기 링크 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
xtra72 committed Feb 6, 2024
1 parent 60cd7a3 commit 665f0f9
Show file tree
Hide file tree
Showing 14 changed files with 92 additions and 64 deletions.
4 changes: 2 additions & 2 deletions 01.introduction.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
* src/main/java/com/nhnacademy/ - com.nhnacademy
* src/test/ - test code
* src/main/java/com/nhnacademy/example/ - example code

image::./image/figure01.png[title="프로젝트 구성", align=center]

==== 1-3-3. 도움 자료
Expand All @@ -71,4 +71,4 @@ image::./image/figure01.png[title="프로젝트 구성", align=center]

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
26 changes: 15 additions & 11 deletions 02.ball_world.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ image::./image/figure02.png[title="Ball",align=center]
* 각 변수의 값을 요청할 수 있다.
** x, y, radius
* **코딩 규칙을 따라 작성**한다.
** VSCode 또는 IntelliJ에 SonarLint와 CheckStyle을 설치하여 확인한다.
** VSCode 또는 IntelliJ에 SonarLint와 CheckStyle을 설치하여 확인한다.
* class Ball를 참고하라
+
[source,java]
Expand Down Expand Up @@ -145,13 +145,13 @@ public class Ball {

{empty} +

---
---

=== Exam-2-1-3. JUnit을 이용해 테스트 코드를 작성하여 확인해 보라.

** https://junit.org/junit5/docs/current/user-guide/#overview-getting-started[JUnit5 User Guide]
** 동일한 기능 확인을 N번 반복해서 실행하도록 가능하다.
*** https://junit.org/junit5/docs/current/user-guide/#writing-tests-repeated-tests[@RepeatedTest]
*** https://junit.org/junit5/docs/current/user-guide/#writing-tests-repeated-tests[@RepeatedTest]
*** https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepetitionInfo.html[RepetitionInfo]

{empty} +
Expand Down Expand Up @@ -179,7 +179,7 @@ public class Ball {
* Color color
** 볼 색상
** 생성할 때 생략 가능
** 생략 시
** 생략 시
*** 기본값으로 검은색(BLACK)

{empty} +
Expand Down Expand Up @@ -244,7 +244,7 @@ image::./image/figure03.png[title="oval",align=center]

* Test code를 사용할 경우, 화면 출력 검증이 어려워 해당 기능을 대신할 것이 필요
* Graphics를 검증 가능한 형태인 DummyGraphics를 정의하여 사용
* Graphics를 확장해서 만든 DummyGraphics를 이용해 해당 함수가 정상적으로 동작하는지 확인
* Graphics를 확장해서 만든 DummyGraphics를 이용해 해당 함수가 정상적으로 동작하는지 확인

{empty} +

Expand Down Expand Up @@ -283,7 +283,7 @@ image::./image/figure03.png[title="oval",align=center]

{empty} +

---
---

=== Exam-2-2-3. Color를 지정하지 않을 경우, 기본 값을 사용하도록 수정하라.

Expand Down Expand Up @@ -317,16 +317,16 @@ image::./image/figure03.png[title="oval",align=center]
* ball이 존재할 공간이면서 화면에 출력될 영역
** Swing component JPanel 확장
** 전체 프로그램의 틀이 될 JFrame 생성 후 world 추가하여 실행
{empty} +

{empty} +

==== Variable

* List<Ball> ballList
** ball 관리
** https://en.wikipedia.org/wiki/List_(abstract_data_type)[List(abstract data type)]

{empty} +
{empty} +

==== Method

Expand Down Expand Up @@ -360,7 +360,7 @@ image::./image/figure03.png[title="oval",align=center]

image::./image/figure04.png[title="실행 화면",align=center]

{empty} +
{empty} +

==== 확인

Expand Down Expand Up @@ -447,4 +447,8 @@ image::./image/figure05.png[title="World & Balls",align=center]
*** exception의 발생 원인이 외부에서 주어진 데이터 잘못이므로, 외부에서 처리하도록 함.
** link:./example/chapter02/src/main/java/com/nhnacademy/exam020303/World.java[class World]
*** Ball 추가 시점에 영역이 벗어나는지 확인
*** 영역을 벗어난 ball을 등록할 경우, world에서는 exception을 발생시킴
*** 영역을 벗어난 ball을 등록할 경우, world에서는 exception을 발생시킴

---

link:./00.index.adoc[돌아가기]
4 changes: 2 additions & 2 deletions 03.movable_world.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ image::./image/figure07.png[title="Movable Ball",align=center]
{empty} +

==== Method

* int getDX()
** 단위 시간당 x축으로 이동량 가져오기
* int getDY()
Expand Down Expand Up @@ -348,4 +348,4 @@ image::./image/figure13.png"[title="단위시간 오차 보정",align=center]

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
12 changes: 6 additions & 6 deletions 04.bounded_world.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ image::./image/figure16.png"[title="볼과 경계영역",align=center]
+
image::./image/figure17.png"[title="실행 결과",align=center]
* 물음
** 단위 시간을 길게 주면 ball이 경계영역에 벗어나는 시점에 튕지 않고, 일부는 영역을 벗어났다 튕겨 들어오는 것을 볼 수 있다.
*** 왜 그럴까?
** 단위 시간을 길게 주면 ball이 경계영역에 벗어나는 시점에 튕지 않고, 일부는 영역을 벗어났다 튕겨 들어오는 것을 볼 수 있다.
*** 왜 그럴까?
*** 해결 방법은?

---
Expand Down Expand Up @@ -290,7 +290,7 @@ ball 간 거리가 두 ball의 반지름 합보다 작을 경우, 두 ball은

=== Exam-4-3-1. 가려지는 ball이 없도록 생성하라

임의의 위치에 생성한 결과 일부 ball이 겹침을 ball 수 있다.
임의의 위치에 생성한 결과 일부 ball이 겹침을 ball 수 있다.

이는 앞서 추가된 ball이 어디에 얼만한 크기로 존재하는지 확인하지 않고 추가해 발생한 문제이다.

Expand Down Expand Up @@ -335,7 +335,7 @@ image::./image/figure25.png"[title="볼과 박스 간 거리",align=center]

복잡한 식을 이용하면 구할 수도 있을 것이다.

**하지만, 본 과정에서는 중요한 문제가 되지 않는다.**
**하지만, 본 과정에서는 중요한 문제가 되지 않는다.**

이러한 경우, 물체가 충돌한 조건을 정의하고 충돌 시 그에 대한 행동만 정의할 수 있으면 된다.

Expand All @@ -356,7 +356,7 @@ image::./image/figure27.png"[title="중첩되지 않는 ball",align=center]

==== 확인

* Source Code
* Source Code
** link:./example/chapter04/src/main/java/com/nhnacademy/exam040302/Ball.java[class Ball]
*** ball이 들어갈 수 있는 최소 4각 영역을 돌려주는 getRegion 함수 추가
*** ball간 충돌을 중심점 거리 계산에서 영역 계산으로 변경
Expand Down Expand Up @@ -410,5 +410,5 @@ image::./image/figure29.png"[title="중첩 영역",align=center]

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]

14 changes: 7 additions & 7 deletions 05.abstract.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* 2차원 평면에서 X축 정보와 Y축 정보가 함께 존재할 때 의미를 가짐
* awt에서 2차원 평면상의 특정 지점을 표현하기 위해 Point class를 정의하고 있음

---
---

=== Exam-5-1-1. Ball class에서 Point class를 사용하도록 수정하라.

Expand Down Expand Up @@ -119,10 +119,10 @@ Motion은 수학과 물리학에서 이야기하는 벡터로서 각각의 성
** X축 +방향을 기준으로한 각도
* int getMagnitude()
** 크기
* void turnDX()
* void turnDX()
** Y축을 기준으로 방향 전환
** x => -x
* void turnDY()
* void turnDY()
** X축을 기준으로 방향 전환
** y => -y

Expand All @@ -143,10 +143,10 @@ Motion은 수학과 물리학에서 이야기하는 벡터로서 각각의 성
** link:./example/chapter05/src/main/java/com/nhnacademy/exam050301/Motion.java[class Motion]
* 물음
* Position Vector와 Displacement Vector간에는 변환이 자유롭다. 여기서도 그러한가?
* 그렇지 않다면 무엇이 문제인가?
* 그렇지 않다면 무엇이 문제인가?
* 해결 방법은?

---
---

=== Exam-5-3-2. Motion class를 JUnit으로 확인하라.

Expand Down Expand Up @@ -213,11 +213,11 @@ public class MovableBall extends Ball {
==== 확인

* Source Code
** link:./example/chapter05/src/main/java/com/nhnacademy/exam050401/MovableBall.java[class MovableBall]
** link:./example/chapter05/src/main/java/com/nhnacademy/exam050401/MovableBall.java[class MovableBall]
* 물음
** 무엇이 달라지고, 그 의미는 무엇인가?
** 코드의 복잡도는 어떻게 달라졌는가?

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
2 changes: 1 addition & 1 deletion 06.new_object_box.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,4 @@ World class에서 했던 작업을 동일하게 반복해야 한다.

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
30 changes: 20 additions & 10 deletions 07.simple_world.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ World class는 출력되는 오브젝트들은 모두 일정한 영역을 갖는
* public int getMaxY();
** 영역의 최대 Y 좌표

* public boolean intersects(Region other);
* public boolean intersects(Regionable other);
** 영역간 교차 영역 존재 여부

* public Region intersection(Region other);
* public Regionable intersection(Regionable other);
** 영역간 교차 영역

---
Expand Down Expand Up @@ -128,8 +128,6 @@ image::./image/figure35.png"[title="Exam-26",align=center]
** 설정되어 있는 단위 시간당 이동량
* void move()
** 단위 시간당 이동량만큼 이동하기
* void moveTo(int x, int y)
** 특정 위치로 이동하기

---

Expand All @@ -141,27 +139,39 @@ image::./image/figure35.png"[title="Exam-26",align=center]

---

== 7-3. Bounded 인터페이스
== 7-4. 새로운 물체 추가

=== 정의

* Triangle 추가
* Region을 설정하고, Region에 들어가는 triangle
* Ball, Box와 같이 그려지고, 움직임

=== Exam-7-4-1. Triangle, PaintableTriangle, MovableTriangle을 추가하라.

* 단, World, MovableWorld, BoundedWorld의 수정은 없어야 한다.

== 7-5. Bounded 인터페이스

=== 정의

* BoundedBall, BoundedBox 그리고 BoundedWorld?? Bounded!

==== Method

* Region getBounds()
* Regionable getBounds()
** 경계 정보
* void setBounds(Region bounds)
* void setBounds(Regionable bounds)
** 경계 정보 설정
* boolean isOutOfBounds(Region bounds)
* boolean isOutOfBounds(Regionable bounds)
** 이동 후 경계를 벗어났는지 확인
* void bounce()
* 경계를 벗어 경우 벽에서 튕김

---

=== Exam-7-3-2. BoundedBall과 BoundedWorld도 Bounded 인터페이스를 선언해 해결하는 것과 같은 방법으로 해결하라
=== Exam-7-5-1. BoundedBall과 BoundedWorld도 Bounded 인터페이스를 선언해 해결하는 것과 같은 방법으로 해결하라

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
2 changes: 1 addition & 1 deletion 08.upside_down.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,4 @@ image::./image/figure35.png"[title="좌표계", align=center]

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
8 changes: 7 additions & 1 deletion 09.external_effect.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,10 @@ Movable 오브젝트들은 게임상에서 움직이는 물체들을 나타내

---

link:./index.adoc[돌아가기]
== 9-3. 반발 계수 (COR - Coefficient Of Restitution)

* 물체가 충돌하기 전후의 속도 비율을 나타내는 분수
* 1은 완전 탄성 충돌을 의미
* 예를 들어, 골프공의 반발 계수는 0.7 근처

link:./00.index.adoc[돌아가기]
2 changes: 1 addition & 1 deletion 10.self_moving_world.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,4 @@ BoundedWorld에서 이동과 충동 검출을 함께 할 경우, 이동 후 시

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
2 changes: 1 addition & 1 deletion 11.cannon_game.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,4 @@

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
8 changes: 4 additions & 4 deletions 12.break_bricks.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ image::./image/SuperBrickBreaker.gif[title="벽돌깨기", align=center]

* ball
** 모든 물체에 반사된다.
** 한개 이상도 가능하다.
** 한개 이상도 가능하다.
*** 즉, 동시에 두개 이상의 ball 사용도 가능하며, ball간 충돌시에도 튕긴다.
** 게임당 1개 이상의 볼이 주어질 수 있다.
** 게임당 1개 이상의 볼이 주어질 수 있다.
*** 동시 사용과는 다르다
* 벽돌
** 단색 또는 복수의 색 사용이 가능하다.
** 종류에 따라 점수를 달리 줄 수 있다.
** 종류에 따라 강도를 정할 수 있다.
** 종류에 따라 강도를 정할 수 있다.
*** 1번에 깨지는 벽돌, 3번에 깨지는 벽돌이 존재할 수 있다.
* 튕김 바
** 깨지지 않는다.
Expand All @@ -32,4 +32,4 @@ image::./image/SuperBrickBreaker.gif[title="벽돌깨기", align=center]

---

link:./index.adoc[돌아가기]
link:./00.index.adoc[돌아가기]
Loading

0 comments on commit 665f0f9

Please sign in to comment.