Download presentation
Presentation is loading. Please wait.
1
JAVA Swing을 이용한 Tetris Project 지도 교수님 : 이 상 훈 교수님 발표자 : 하 두 경
소속 팀: 자바 프로젝트 팀
2
프로젝트 설정 동기 누구나 한번씩은 테트리스란 게임을 접하게 되었을 것이다.
막연히 알고만 있던 테트리스 게임의 알고리즘을 이해하고 직접 만들어 보고자 시작을 하게 되었다. 더욱이 자바의 스윙 프로그램을 이용하여 만들어진 게임은 별로 많지가 않다 그래서 아주 널리 알려져 있는 테트리스 게임을 자바의 스윙 프로그램으로 색다르게 바꿔보았다
3
프로젝트 과정 자바 프로젝트 시작 자바 기초 이론 공부 SCJP 공부 Swing 공부 테트리스 소스 분석 테트리스 구동
자바 기초 이론 공부 SCJP 공부 Swing 공부 테트리스 소스 분석 테트리스 구동 졸업 작품 발표준비및 파워포인트 작성
4
자바란? 자바는 미국의 썬마이크로시스템스에서 만든 프로그래밍 언어의 일종이다.
즉 파스칼이 나 베이직, C와 같이 컴퓨터에서 수행되어지는 프로그램을 만드는 언어이다. 원래 자바는 90년대 개발자인 제임스 고슬링(James Gosling)이 당시 단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목적으로 일에 착수하였다. 처음 사용한 것은 기존의 C++언어였는데, C++는 특정 CPU에 맞도록 컴파일 되어야 하기 때문에, 서로 다른 장치를 연결하는 분산 네트워크에 적당치 않았다. 그리하여 좀더 적절하게 사용될 수 있는 새로운 프로그래밍 언어의 개발에 착수하였다. 이 결과 나온 것이 바로 Oak이고 나중에 자바라는 이름으로 바뀌게 되었다.
5
AWT 프로그램 (1) 1.자바에서 GUI(Graphic User Interface)를 작성
2. 네이티브 윈도우를 바탕으로 함 (실행되는 환경에 따라 모양이 약간씩 다름) 3. Java.awt 패키지에 클래스들이 포함되어 있음
6
AWT 프로그램(2) Heavy-Weight Component들은 전부 native peer라는 것을 가지고 있다
native peer는 AWT에서는 OS에서 제공하는 그래픽 컴포넌트를 뜻한다. 즉 OS에서 제공하는 그래픽 컴포넌트와 AWT의 컴포넌트간에 1:1로 대응하는 관계가 성립된다는 뜻이다. 그래서 윈도우에서 사용하면 윈도우 모양의 버튼이 나오고 매킨토시에서 사용하면 매킨토시 모양의 버튼이 나온다. 따라서 AWT 프로그램은 실행되는 플랫폼마다 화면이 다르게 보이고 동작에 차이가 있을 수 있다는 단점도 있다 게다가 AWT는 각각의 컴포넌트가 다 각자 나름대로의 peer를 가지고 있게 되어 있어서 컴포넌트의 사용 양이 많아지면 갖가지 종류의 peer와 각각의 AWT 컴포넌트간의 통신 중 버그가 발생할 경우가 크다
7
Swing 프로그램(1) 1.주로 세련된 형태의 GUI를 작성 2.순수 자바코드로 된 사용자 인터페이스임
3.운영 체제의 윈도우 시스템에 대한 의존도최소 4.독자적이고 통일적인 사용자 인터페이스 가짐
8
Swing 프로그램 (2) 스윙프로그램은 light-Weight Component라 부른다.
스윙 프로그램은 하나하나의 컴포넌트에 나름대로의 peer와 연결되어 있지 않다. 그렇기 때문에 여러 종류의 peer와 통신에 걸리는 과부하를 줄일 수 있고 버그가 자동 해결된다. 자바에서는 직접 컴포넌트를 그려서 운용하는 기능이 있다. 그래픽 툴킷은 내부적으로 메시지 큐와 화면을 유지 보수해주는 기능, 사용자의 입력을 받는 기능 등이 구현 되어 있기 때문에 하나의 peer만 생성하면 여기에 나름대로의 기능을 덧붙여서 구현할 수 있다.
9
자바의 윈도우 컴포넌트 자바의 추상 윈도우 시스템의 여러 컴포넌트들은 각각 클래스로 구현되어 있다.
이 컴포넌트들은 두가지로 구성되어 있다 하나는 다른 컴포넌트들을 자신 안에 두어 정렬시킬 수 있는 컨테이너 컴포넌트이고 다른 하나는 컨테이너 역할을 할 수 없는 단순한 컴포넌트이다. Window : 윈도우는 경계 표시나 타이틀 바와 같은 아무런 치장도 없는 단순한 사각형 윈도우 컴포넌트를 나타내는 클래스 이다. Frame : 프레임은 경계 표시와 타이틀 바를 가지는 윈도우 컴포넌트이다. Window 클래스로부터 상속 받은 자식 클래스 이다. Button : 버튼을 표시하는 컴포넌트이다. Panel : 다른 컴포넌트를 배치하는 데 주로 사용되는 간단한 컨테이너 컴포넌트이다. Layout : 각 컨테이너는 하나의 레이아웃매니저를 가지고 있다 이는 각 요소들을 어디에 배치할 것인가를 결정해준다.
10
자바 Package 설명 (1) 자바는 단순히 함수들만을 모은 라이브러리가 아닌 프로그램에서 많이 사용되는 클래스를 한 데 묶은 패키지 형태를 제공한다. 애플릿(Applet) 패키지 자바 애플릿 패키지는 자바 애플릿을 만드는데 기본이 되는 Applet 클래스를 제공한다. 즉, 웹 브라우저 상에서 수행되는 자바 애플릿들은 기본적으로 Applet 클래스를 베이스 클래스로 해서 만들어진다. - java.awt.*; 사용자 인터페이스를 만들고 그래픽과 이미지를 그리기 위한 모든 클래스들을 포함하고 있다 - java.awt.event.*; 인터페이스와 AWT 컴포넌트에 의해 서로 다른 이벤트들을 가지고 온다
11
자바 Package 설명 (2) 스윙(Swing) 패키지 - Javax.swing.*;
자바 스윙에서 반드시 사용되며, 자바 스윙 컴포넌트, 어댑터, 디폴트 컴포넌트 모델 등 포함하고 있다 - Javax.swing.event.*; java.awt.event 패키지에 정의된 이벤트 이외에 스윙에서 추가적으로 사용될 수 있는 각종 이벤트 및 listener들을 정의하고 있다 - Javax.swing.plaf .*; 스윙에서 시각적으로 보여지는 것들을 하나의 인터페이스와 여러 개의 추상 클래스들로 정의하고 있다
12
테트리스란? 1985년 모스크바의 알렉시파지트노브에 의해 처음으로 개발되었고, 소비에트 일렉트로니카-60이라 불리는 컴퓨터를 이용해서 테트리스를 개발하고 그 이듬해 IBM PC를 위한 테트리스를 개발했다. 테트리스는 각기 다른 모양으로 붙어 있는 4개의 블럭을 차곡차곡 쌓아서 한 줄 이상을 채우면 없어지는 퍼즐형 게임으로 누구나 쉽게 할 수 있고 많은 사람들이 즐기는 게임 중의 하나이다.
13
프로그램 전체 구조
14
구현 설명 getContentPane().add(bt_start);
public class JTetris extends JFrame getContentPane().add(bt_start); bt_start.setBounds(370, 330, 100, 40); bt_start.setBackground(Color.PINK); bt_start.setForeground(Color.BLACK); bt_start.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event){ tetris.draw(); } ); setResizable(false); getContentPane().setLayout(null); ImageIcon backgrim = new ImageIcon("aa.jpg"); JLabel backlabel = new JLabel(backgrim); getLayeredPane().add(backlabel, new Integer(Integer.MIN_VALUE)); backlabel.setBounds(0,0,backgrim.getIconWidth(), backgrim.getIconHeight()); public class Tetris extends JPanel implements Runnable
15
Newpiece 메서드 (1) Newpiece메서드는 테트리스의 각 블럭들을 만든다.
각각의 블록은 아래의 소스에 의해 생성 된다.
16
Newpiece 메서드 (2) 블럭을 만드는 방법은 각 위치의 좌표 값을 이용한다.
만약 (0,-1) (-1,-1) (1,-1) (2,-1) 이라 하면 위와 같은 모양이 나오게 된다. 다른 블럭들도 이와 같은 원리로 만든다.
17
KeyHandler 클래스 키에 따른 값들을 가지고 온다
18
paintComponent 메서드 실제 적으로 화면에 출력하는 부분이다. 테트리스 블록이 움직이는 것을 나타내는 부분이다.
F[][]배열에는 기본적으로 모두 검은 색으로 지정되어 있고 블럭이 있는 부분에만 현재 나와 있는 블록의 색이 들어 있다. 이것은 쓰레드에서 관리하는 시간에 따라 바뀌어 지고 바뀌어 질때 마다 다시 그린다. 그래서 블록이 움직이는 것처럼 보인다.
19
프로젝트를 마치며 배운점 앞으로 해야 할 것들 기초적인 자바 언어 AWT와 Swing 구현 방법 테트리스 소스 분석
좀더 많은 기능을 가진 테트리스 (네트워크) Java를 이용한 다른 개임 프로그램
Similar presentations