※ 해당 게시물은 GitHub에 작성된 내용을 기반으로 작성되었습니다.
>> GitHub 바로가기
이 프로젝트는 국비 교육 과정 중 "혼자 공부하는 자바" 책의 교육이 끝난 후 평가를 위해 진행된 개인프로젝트입니다.
개발을 처음 접한 입문자가 두달 정도 Java를 공부한 후 제작한 프로젝트로 Java 입문 단계인 분들께 좋은 참고가 되길 바랍니다.
약 일주일간 오직 Java로만 제작한 프로젝트입니다.
Java로 그래픽을 구현하기 위해 jdk에서 기본적으로 제공해주는 GUI 개발용 라이브러리인 Swing을 이용했습니다.
자바의 라이브러리인 Swing의 각종 클래스를 상속받아 사용하며 자바의 상속에 대한 이해력을 재미있게 키우기 위해 게임으로 구현한 프로젝트입니다.
※ Swing은 Java로만 프로젝트를 진행하기 위해 사용하는 부가적인 것이지 Swing을 굳이 깊게 학습할 필요는 없습니다.
해당 프로젝트는 JavaSE-11, Eclipse 2020. 09. 버전으로 제작된 프로젝트입니다.
GitHub에서 해당 파일을 import하여 실행할 수 있습니다.
우선 Swing을 어떤식으로 사용하는지 간략하게 소개하도록 하겠습니다.
javax에 속한 swing은 다음과 같이 import하여 사용할 수 있습니다.
import javax.swing.JFrame;
setTitle(), setSize()등을 이용하여 띄울 창의 이름, 크기, 위치등을 설정해 전체 틀을 구현합니다.add)합니다.setVisible(true|false) 메서드를 이용해 각 장면을 활성화/비활성화 합니다.***로 처리되어 보여집니다.getText()를 이용해 입력값을 얻어옵니다.
isVisible()값을 확인하여 B를 setVisible(true)하는 메서드를 만듭니다.



Main panel이 활성화된 후 각종 기능들이 실행됩니다.
addKeyListener를 이용해 각종 키를 눌렀을때 필요한 메서드를 실행합니다.mf.addKeyListener(new KeyAdapter() { // 키 이벤트 @Override public void keyPressed(KeyEvent e) { // 키 눌렀을때 switch (e.getKeyCode()) { // 키 코드로 스위치 case KeyEvent.VK_DOWN: // 방향키(아래) 눌렀을때 ma.climb(mf, 1); break; case KeyEvent.VK_UP: // 방향키(위)눌렀을때 ~~~
while (true) { try { Thread.sleep(20); // 속도 지연 } catch (Exception e) { } ma.mopCheck(mf); // mob : 위치, move, hit, die, 모션 등 구현 ma.plCheck(mf); // player : Icon, 위치, 중력, Hit 등 구현 if (ma.end) { break; } }
void aSkill(MyFrame mf) { Thread tr = new Thread() { @Override public void run() { try { ~~~
setIcon()을 이용해 이미지를 변경합니다.~~~ public ImageIcon stand0 = new ImageIcon(MyFrame.class.getResource("../pl_image/stand0.gif")); ~~~ public Player() { setIcon(stand0); ~~~
Thread.sleep()을 적절히 이용하면 애니메이션을 구현할 수 있습니다.중력구현, 충돌구현, 공격구현 등 그 밖의 자세한 기능들은 Main.java의 내용을 확인해주세요.
>> Main.java 바로가기
프로젝트 평가 당시 코로나를 심하게 앓아서 개발 기간이 부족했습니다.
당시 아직 배우지 못했던 기능도 있었습니다.
다음은 미처 구현하지 못한 구상 단계의 내용입니다.
1) 회원가입 : Login 화면에서 DB를 연동
2) 캐릭터 생성 : CharSelect 화면에서 DB를 연동
3) 보스몬스터 : 캐릭터가 Lv.5가 되었을 때 포탈을 생성, 보스맵으로 이동하여 보스를 처치해서 게임을 클리어
4) 메소 드랍 : 몬스터 처치 시 메소를 드랍하여 치장아이템을 구매
해당 게임 내 이미지들은 개인 프로젝트에서 비상업용으로 사용한 이미지로 무단 도용을 금합니다.