[Java] Java GUI로 게임 만들기 1
📌 들어가며 이번 글에서는 먼저 컬렉션 프레임워크(Set·List·Map)를 정리하고, 이어서 자바 그래픽스(Graphics)로 간단한 슈팅 게임(주인공 1기 + 적군 5기)을 만든다. 컬렉션 프레임워크란? 객체를 모아서 처리하는 데 유용한 객체들을 지원하는 라이브러리. 계열 특징 ...
📌 들어가며 이번 글에서는 먼저 컬렉션 프레임워크(Set·List·Map)를 정리하고, 이어서 자바 그래픽스(Graphics)로 간단한 슈팅 게임(주인공 1기 + 적군 5기)을 만든다. 컬렉션 프레임워크란? 객체를 모아서 처리하는 데 유용한 객체들을 지원하는 라이브러리. 계열 특징 ...
📌 들어가며 저번의 간단한 게임을 이번엔 제법 그럴듯하게 발전시킨다. 7개 클래스로 나뉘며, 추상 클래스 상속·게임 쓰레드(루프)·어댑터·익명 클래스같은 중요한 개념이 총출동한다. GameMain (JFrame, 메뉴바) └─ GamePanel (JPanel, 게임 쓰레드 + paintComponent) └─ GameCompon...
📌 들어가며 이번 글에서는 Swing GUI로 채팅 앱을 만들면서, 클래스·객체·주소값 공유와 이벤트 리스너를 깊이 있게 익힌다. 두 개의 창(ChatA, ChatB)이 서로의 주소값을 주고받아 메시지를 공유하는 것이 핵심이다. 이번엔 java.awt 대신 업그레이드 버전인 javax.swing을 사용한다. (JFrame, JTextArea,...
📌 들어가며 이번엔 알라딘 같은 도서관리 애플리케이션을 만든다. 힘들었지만, 실무의 핵심인 MVC 패턴 · VO(DTO) · DAO를 실제로 엮어보는 값진 예제다. 아직 완성은 아니지만 회원가입·로그인까지 구현했다. MVC 패턴으로 패키지 분리 view — 디자인(화면)을 담당하는 클래스들 model — 로직(DB 처리)을...
📌 들어가며 지난 시간에 이어 파일 입출력(File I/O)을 다룬다. 이번엔 파일에 텍스트를 쓰고, 특정 줄을 수정·삭제하는 방법을 정리한다. 핵심 로직: 파일은 특정 줄만 콕 집어 바꾸기 어렵다. 그래서 임시 저장소(temp)에 원본을 옮기며 수정/삭제하고, 완성된 temp로 원본을 덮어쓰는 방식을 쓴다. 원본 파일 ──읽기(Reade...
📌 들어가며 이번 글에서는 스트림(Stream) 기반의 파일 입출력과 예외 처리(try-catch, throws)를 다루고, 마지막으로 인터넷 이미지 다운로드 앱까지 만들어본다. 스트림(Stream)이란? 강 줄기처럼 흘러가는 것. 컴퓨터에서 그 대상은 데이터다. 자바는 java.io 패키지에서 스트림 API를 지원한다. 방향에 따른 분류...
📌 들어가며 이번 글에서는 상속(extends)과 객체 간 형변환(casting)을 다룬다. 문법 자체보다, 자바가 상속·생성자·오버라이딩을 통해 어떤 기능을 제공하는지에 초점을 둔다. 1. 상속 — 중복 제거 인류를 흑인·백인·황인 세 클래스로 나눈다고 하자. 멤버변수·메소드를 일일이 다 만드는 건 프로그래밍의 본질(중복 제거)을 잃는 것이...
📌 들어가며 이번 글에서는 국산 에디터 EditPlus를 소개하고, 객체지향의 핵심 개념(클래스·객체)을 자바가 아닌 HTML + JavaScript로 이해해본다. JS는 자바와 문법이 비슷해 객체·클래스를 배우기 좋다. 화살(→)을 만들어 버튼을 누르면 움직이는 미니 홈페이지를 만들어보자. 💡 EditPlus는 “메모장 상위호환” 느낌의...
📌 들어가며 이번 글에서는 Oracle/MySQL로 작업하던 것을 자바와 연동(JDBC)해, 자바에서 DB에 데이터를 추가(insert)하고 조회(select)한다. JDBC(Java Database Connectivity)란? 자바로 데이터베이스를 연동하는 기술. java.sql 패키지에서 지원한다. DB 연동은 항상 4단계를 따른다. ...
📌 들어가며 Eclipse를 쓰지 않으면, 다른 패키지의 클래스를 import하려면 모든 걸 수동으로 제어해야 한다. 이번 글에서는 EditPlus로 패키지를 구축하고, 다른 패키지의 클래스를 import·컴파일·실행하는 과정을 정리한다. 목표 구조: src 폴더에 .java, bin 폴더에 .class를 분리해서 넣는다. testapp/...