JAVA Swing을 이용한 Tetris Project 지도 교수님 : 이 상 훈 교수님 발표자 : 하 두 경

Slides:



Advertisements
Similar presentations
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
12 장 자바 애플릿. 2 Applet 개요 Applet 프로그램 – 웹 페이지에 포함되어 구동 된다. 웹 브라우저나 애 플릿뷰어 (appletviewer) 에서 실행되는 프로그램 – 웹 브라우저 내에 Applet 을 해석하여 실행할 수 있 도록 Applet 구동용 인터프리터가.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
순차, 조건, 반복 이점숙 농대 뒷편 언덕을 넘어가며 같은 문제 다르게 해결 순차, 조건, 반복 이점숙
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
순차, 조건, 반복 이점숙 같은 문제 다르게 해결하기 순차, 조건, 반복 이점숙
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
Power Java 제3장 이클립스 사용하기.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Power Java 제2장 자바 개발 도구.
Kim heesang JDBC Programming 2 Kim heesang
Chapter 13 GUI 프로그래밍 01 GUI 화면 구성 02 GUI 이벤트 처리 03 GUI 메뉴와 툴바 예제 모음 요약
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Java 기초 (Java JDK 설치 및 환경설정)
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
TETRIS FOR QTOPIA.
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Power Java 제14장 배치 관리자.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
CHAP 12. 리소스와 보안.
Eclipse 를 이용한 네트워킹 퍼즐 게임 “Scrambled Net” 담당 교수님 전진우 교수님 최은아.
[INA470] Java Programming Youn-Hee Han
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
JAVA Canvas Swing.
Method & library.
자바응용.
10장 tkinter로 GUI 만들기.
30강 JAVA 그래픽 JAVA GUI(Graphic User Interface)란? AWT 컴포넌트? Swing 컴포넌트?
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
LIT-GenAppSetup ※ Texting+ 클라이언트 프로그램은 제품 인증을 받은 제품입니다.
CHAP 5. 레이아웃.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
웹디자인
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Mariadb JDBC PROGRAMMING2
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
PART 1 앱 인벤터 프로젝트 12 원격 로봇. PART 1 앱 인벤터 프로젝트 12 원격 로봇.
암호학 응용 Applied cryptography
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
발표자 : 이지연 Programming Systems Lab.
9 브라우저 객체 모델.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
김덕용 게임 엔진론 Project 2차발표.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Power Java 제14장 배치 관리자.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
프로젝트 결과 발표 네트워크정보통신과 강동성 이현미.
JAVA 프로그래밍 16장 JNLP.
20 XMLHttpRequest.
Presentation transcript:

JAVA Swing을 이용한 Tetris Project 지도 교수님 : 이 상 훈 교수님 발표자 : 하 두 경 소속 팀: 자바 프로젝트 팀

프로젝트 설정 동기 누구나 한번씩은 테트리스란 게임을 접하게 되었을 것이다. 막연히 알고만 있던 테트리스 게임의 알고리즘을 이해하고 직접 만들어 보고자 시작을 하게 되었다.   더욱이 자바의 스윙 프로그램을 이용하여 만들어진 게임은 별로 많지가 않다 그래서 아주 널리 알려져 있는 테트리스 게임을 자바의 스윙 프로그램으로 색다르게 바꿔보았다

프로젝트 과정 자바 프로젝트 시작 자바 기초 이론 공부 SCJP 공부 Swing 공부 테트리스 소스 분석 테트리스 구동 2002.03 자바 기초 이론 공부 2002.04 SCJP 공부 2002.06 Swing 공부 2002.07 2002.08 테트리스 소스 분석 테트리스 구동 2001.10 졸업 작품 발표준비및 파워포인트 작성 2001.11

자바란? 자바는 미국의 썬마이크로시스템스에서 만든 프로그래밍 언어의 일종이다. 즉 파스칼이 나 베이직, C와 같이 컴퓨터에서 수행되어지는 프로그램을 만드는 언어이다. 원래 자바는 90년대 개발자인 제임스 고슬링(James Gosling)이 당시 단순하고 버그가 없는 가전 전자 제품을 만드는 것을 목적으로 일에 착수하였다. 처음 사용한 것은 기존의 C++언어였는데, C++는 특정 CPU에 맞도록 컴파일 되어야 하기 때문에, 서로 다른 장치를 연결하는 분산 네트워크에 적당치 않았다. 그리하여 좀더 적절하게 사용될 수 있는 새로운 프로그래밍 언어의 개발에 착수하였다. 이 결과 나온 것이 바로 Oak이고 나중에 자바라는 이름으로 바뀌게 되었다.

AWT 프로그램 (1) 1.자바에서 GUI(Graphic User Interface)를 작성 2. 네이티브 윈도우를 바탕으로 함    (실행되는 환경에 따라 모양이 약간씩 다름) 3. Java.awt 패키지에 클래스들이 포함되어 있음

AWT 프로그램(2) Heavy-Weight Component들은 전부 native peer라는 것을 가지고 있다 native peer는 AWT에서는 OS에서 제공하는 그래픽 컴포넌트를 뜻한다. 즉 OS에서 제공하는 그래픽 컴포넌트와 AWT의 컴포넌트간에 1:1로 대응하는 관계가 성립된다는 뜻이다. 그래서 윈도우에서 사용하면 윈도우 모양의 버튼이 나오고 매킨토시에서 사용하면 매킨토시 모양의 버튼이 나온다. 따라서 AWT 프로그램은 실행되는 플랫폼마다 화면이 다르게 보이고 동작에 차이가 있을 수 있다는 단점도 있다 게다가 AWT는 각각의 컴포넌트가 다 각자 나름대로의 peer를 가지고 있게 되어 있어서 컴포넌트의 사용 양이 많아지면 갖가지 종류의 peer와 각각의 AWT 컴포넌트간의 통신 중 버그가 발생할 경우가 크다

Swing 프로그램(1) 1.주로 세련된 형태의 GUI를 작성 2.순수 자바코드로 된 사용자 인터페이스임 3.운영 체제의 윈도우 시스템에 대한 의존도최소 4.독자적이고 통일적인 사용자 인터페이스 가짐

Swing 프로그램 (2) 스윙프로그램은 light-Weight Component라 부른다. 스윙 프로그램은 하나하나의 컴포넌트에 나름대로의 peer와 연결되어 있지 않다. 그렇기 때문에 여러 종류의 peer와 통신에 걸리는 과부하를 줄일 수 있고 버그가 자동 해결된다. 자바에서는 직접 컴포넌트를 그려서 운용하는 기능이 있다. 그래픽 툴킷은 내부적으로 메시지 큐와 화면을 유지 보수해주는 기능, 사용자의 입력을 받는 기능 등이 구현 되어 있기 때문에 하나의 peer만 생성하면 여기에 나름대로의 기능을 덧붙여서 구현할 수 있다.

자바의 윈도우 컴포넌트 자바의 추상 윈도우 시스템의 여러 컴포넌트들은 각각 클래스로 구현되어 있다. 이 컴포넌트들은 두가지로 구성되어 있다 하나는 다른 컴포넌트들을 자신 안에 두어 정렬시킬 수 있는 컨테이너 컴포넌트이고 다른 하나는 컨테이너 역할을 할 수 없는 단순한 컴포넌트이다. Window : 윈도우는 경계 표시나 타이틀 바와 같은 아무런 치장도 없는 단순한 사각형 윈도우 컴포넌트를 나타내는 클래스 이다. Frame : 프레임은 경계 표시와 타이틀 바를 가지는 윈도우 컴포넌트이다. Window 클래스로부터 상속 받은 자식 클래스 이다. Button : 버튼을 표시하는 컴포넌트이다. Panel : 다른 컴포넌트를 배치하는 데 주로 사용되는 간단한 컨테이너 컴포넌트이다. Layout : 각 컨테이너는 하나의 레이아웃매니저를 가지고 있다 이는 각 요소들을 어디에 배치할 것인가를 결정해준다.

자바 Package 설명 (1) 자바는 단순히 함수들만을 모은 라이브러리가 아닌 프로그램에서 많이 사용되는 클래스를 한 데 묶은 패키지 형태를 제공한다. 애플릿(Applet) 패키지 자바 애플릿 패키지는 자바 애플릿을 만드는데 기본이 되는 Applet 클래스를 제공한다. 즉, 웹 브라우저 상에서 수행되는 자바 애플릿들은 기본적으로 Applet 클래스를 베이스 클래스로 해서 만들어진다. - java.awt.*; 사용자 인터페이스를 만들고 그래픽과 이미지를 그리기 위한 모든 클래스들을 포함하고 있다 - java.awt.event.*; 인터페이스와 AWT 컴포넌트에 의해 서로 다른 이벤트들을 가지고 온다

자바 Package 설명 (2) 스윙(Swing) 패키지 - Javax.swing.*; 자바 스윙에서 반드시 사용되며, 자바 스윙 컴포넌트, 어댑터, 디폴트 컴포넌트 모델 등 포함하고 있다 - Javax.swing.event.*;   java.awt.event 패키지에 정의된 이벤트 이외에 스윙에서 추가적으로 사용될 수 있는 각종 이벤트 및 listener들을 정의하고 있다 - Javax.swing.plaf .*;   스윙에서 시각적으로 보여지는 것들을 하나의 인터페이스와 여러 개의 추상 클래스들로 정의하고 있다

테트리스란? 1985년 모스크바의 알렉시파지트노브에 의해 처음으로 개발되었고, 소비에트 일렉트로니카-60이라 불리는 컴퓨터를 이용해서 테트리스를 개발하고 그 이듬해 IBM PC를 위한 테트리스를 개발했다. 테트리스는 각기 다른 모양으로 붙어 있는 4개의 블럭을 차곡차곡 쌓아서 한 줄 이상을 채우면 없어지는 퍼즐형 게임으로 누구나 쉽게 할 수 있고 많은 사람들이 즐기는 게임 중의 하나이다.

프로그램 전체 구조

구현 설명 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

Newpiece 메서드 (1) Newpiece메서드는 테트리스의 각 블럭들을 만든다. 각각의 블록은 아래의 소스에 의해 생성 된다.

Newpiece 메서드 (2) 블럭을 만드는 방법은 각 위치의 좌표 값을 이용한다. 만약 (0,-1) (-1,-1) (1,-1) (2,-1) 이라 하면 위와 같은 모양이 나오게 된다. 다른 블럭들도 이와 같은 원리로 만든다.

KeyHandler 클래스 키에 따른 값들을 가지고 온다

paintComponent 메서드 실제 적으로 화면에 출력하는 부분이다. 테트리스 블록이 움직이는 것을 나타내는 부분이다. F[][]배열에는 기본적으로 모두 검은 색으로 지정되어 있고 블럭이 있는 부분에만 현재 나와 있는 블록의 색이 들어 있다. 이것은 쓰레드에서 관리하는 시간에 따라 바뀌어 지고 바뀌어 질때 마다 다시 그린다. 그래서 블록이 움직이는 것처럼 보인다.

프로젝트를 마치며 배운점 앞으로 해야 할 것들 기초적인 자바 언어 AWT와 Swing 구현 방법 테트리스 소스 분석 좀더 많은 기능을 가진 테트리스 (네트워크) Java를 이용한 다른 개임 프로그램