본문 바로가기

전체보기66

자바 비행기 게임 만들어보기 #4 이번 포스트에서는 적 비행기를 생성하고, 충돌 로직을 구현할 예정이다. 전체적인 구조를 설계했기 때문에, 크게 수정해야하는부분은 없다. 순서 적 비행기 생성 충돌 구현 기타 처리 끝! 적 비행기 생성 적 비행기를 생성하고, 자동적으로 움직이는 것 까지 구현을 해보려 한다. 전 포스터에서 설계한 클래스가 있기 때문에 그대로 사용하면 된다. width와 height은 충돌 처리를 위한 변수이다. ( 충돌처리를 하기 위해서 객체마다의 크기가 필요하다. ) x,y는 적 비행기의 위치값이며, moveSpeed는 말그대로 움직이는 속도를 말한다. 순서는 아래와 같이 동작하게 된다. Model객체에 적 비행기 객체를 담을 리스트(enemyFlights)를 선언해준다. 적 비행기를 원하는 만큼 enemyFlights객.. 2020. 5. 4.
[백준 16194] 카드 구매하기 2 - 자바 https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 1. 풀이 이 문제는 [백준 11052] 카드 구매하기 - 자바와 거의 똑같은 문제이다. 이번엔 카드 N개를 구매하는데 최소 비용을 고르는 문제이다. 주의할 점은 처음 배열을 선언하면 초기값이 0이므로, 배열의 초기값을 잘 설정해줘야한다. 그래서 카드 N개를 구하는 비용을 카드가 N개 들어있는 카드팩으로 초기 설정해주면 쉽게 풀 수 있다. 백준님의 경우는 배열의 초깃값을 입력값의 최대 개수와 비용의 .. 2020. 5. 2.
[백준 11052] 카드 구매하기 - 자바 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 1. 풀이 보통 DP의 경우 경우의 수를 구하는 경우가 많아 처음엔 다른 방식으로 풀어보다 백준 강의를 통해 DP로 푸는 방법을 알 수 있었다. 카드 N개를 구매하는데 드는 비용의 최대값을 구하면 되는 문제이다. 이를 점화식으로 표현하기위해서 다음과 같은 식이 나온다. 카드 N개의 최대비용을 구한다면, 아래식을 반복하면서 최대값을 구한다. 카드 1개가 들어있는 카드팩을 구매한다면, 카드 N-1개를 구매한.. 2020. 5. 2.
자바 비행기 게임 만들어보기 #3 이번엔 게임 동작시키는데 있어서 큰 그림을 그리는 순서가 될 것 같다. 저번 포스터에서 비행기를 출력하고 움직이는 것까지 했는데, 이걸 하나의 비행기가 아닌 여러개의 비행기가 동시에 출력되고, 미사일등이 날라다니면서 충돌로직을 구현하려면 구조가 잘 짜여있어야한다. 또한, 나중의 확장성을 고려한다면 구조는 효율성에 있어서도 매우 중요하다고 생각든다. 이것저것 공부하다 결국 Swing에서 많이 사용되는 MVC패턴을 응용해서 만들어보기로 했다. 순서 MVC응용 구조 설계 Model View Controller 미사일 발사 MVC 응용 구조 설계 MVC를 알게된 경로는 Java 공식 문서와 튜토리얼 사이트 그리고 블로그이다. 기본적인 개념은 MVC - 위키피디아에 잘 나와 있다. 이번 프로젝트의 MVC 구조가 .. 2020. 5. 2.
자바 비행기 게임 만들어보기 #2 저번 포스터에서 비행기를 출력하고 움직이는 것 까지 구현을 하였다. 하지만 디버깅을 해보니 스레드로 인해 repaint()가 연속적으로 실행되는 부분이 많았다. 그래서 이를 해결하고자 paint()관련 메서드를 정리하고 해당 코드를 조금 수정하였다. 그리고 출력할 때 깜빡임을 없애고 부드럽게 하기 위해서 더블버퍼링을 구현하려고 한다. 순서 paint, update, repaint 더블 버퍼링 paint(), update(), repaint() 구글링을 통해 여러 블로그를 보고 그 개념에 따라서 구현을 했는데, 자꾸 생각한대로 결과가 안 나왔다. 그래서, 공식 문서를 확인하고나서 몇몇 블로그들과 내가 구현하고자하는 것이 다른 것을 알 수 있었다. 무작정 다른 블로그를 따라 공부하는 것보다, 공식 문서를 먼.. 2020. 5. 1.
[백준 11727] 2xn 타일링 2 - 자바 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 1. 풀이 [백준 11726 2xn 타일링] 와 거의 똑같은 문제이다. 하지만 조건에서 2x2의 타일도 가능하다했으므로 점화식을 세워보면 D[n] = D[n-1] + D[n-2] + D[n-2]가 나오는 것을 볼 수 있다. 2. 코드 import java.util.*; public class Main { static int[] memo = new int[1001]; static int tile2(int n){ if(memo[n.. 2020. 5. 1.