You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 자바 로 게임 만들기 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.prairiehousefreeman.com team, along with other related topics such as: 자바 로 게임 만들기 자바로 rpg 게임 만들기, 자바로 간단한 게임 만들기, 이클립스로 게임 만들기, 자바로 만들수 있는 프로그램, 자바로 만든 게임, 자바 GUI 간단한 게임, 자바 리듬게임 만들기, 자바 게임 코드
자바 게임 만들기 File 1 | 개요와 프레임 기본 셋업
- Article author: digiconfactory.tistory.com
- Reviews from users: 13178 Ratings
- Top rated: 3.1
- Lowest rated: 1
- Summary of article content: Articles about 자바 게임 만들기 File 1 | 개요와 프레임 기본 셋업 게임을 만드는 것에 흥미가 있다면 자바로 게임을 만드는 것은 어떨까? 라는 의문을 품을 수도 있다. 게임제작을 위해 어떤 언어가 가장 좋을까? …
- Most searched keywords: Whether you are looking for 자바 게임 만들기 File 1 | 개요와 프레임 기본 셋업 게임을 만드는 것에 흥미가 있다면 자바로 게임을 만드는 것은 어떨까? 라는 의문을 품을 수도 있다. 게임제작을 위해 어떤 언어가 가장 좋을까? 게임을 만드는 것에 흥미가 있다면 자바로 게임을 만드는 것은 어떨까? 라는 의문을 품을 수도 있다. 게임제작을 위해 어떤 언어가 가장 좋을까? 라는 질문도 생길 수 있다. 조금은 순진한 질문이지만 본질적인..코딩 (파이썬, C언어, 자바) 및 IT정보 블로그
- Table of Contents:
자바 게임 만들기 File 1 개요와 프레임 기본 셋업
티스토리툴바
[자바로 게임 만들기] 41. 윈도우 만들기
- Article author: ridd-coding.tistory.com
- Reviews from users: 18133 Ratings
- Top rated: 3.0
- Lowest rated: 1
- Summary of article content: Articles about [자바로 게임 만들기] 41. 윈도우 만들기 자바로 게임 만들기 – 슬라임 퇴치 게임 2탄을 시작해볼까합니다. 1탄은 TUI였지만 2탄은 GUI로 만들겠다고 했었죠. 이번시간에는 GUI의 기본 바탕이 되는 … …
- Most searched keywords: Whether you are looking for [자바로 게임 만들기] 41. 윈도우 만들기 자바로 게임 만들기 – 슬라임 퇴치 게임 2탄을 시작해볼까합니다. 1탄은 TUI였지만 2탄은 GUI로 만들겠다고 했었죠. 이번시간에는 GUI의 기본 바탕이 되는 … 안녕하세요. 자바로 게임 만들기 – 슬라임 퇴치 게임 2탄을 시작해볼까합니다. 1탄은 TUI였지만 2탄은 GUI로 만들겠다고 했었죠. 이번시간에는 GUI의 기본 바탕이 되는 ‘윈도우’를 만들어볼까 합니다. 자바에서는..
- Table of Contents:
자바 오목게임 만들기
- Article author: message0412.tistory.com
- Reviews from users: 28454 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about 자바 오목게임 만들기 로 진행된다. 오목을 시작하는 메인으로 코드를 작성 후 게임을 실행하는 클래스이다. GUI객체를 생성하는데 GUI 클래스를 확인해보자. …
- Most searched keywords: Whether you are looking for 자바 오목게임 만들기 로 진행된다. 오목을 시작하는 메인으로 코드를 작성 후 게임을 실행하는 클래스이다. GUI객체를 생성하는데 GUI 클래스를 확인해보자. 이번에는 오목게임을 만들어보도록 하겠다. 룰은 한번씩 돌아가며 돌을 놓고 먼저 5개를 놓는 사람이 이기는 게임이다. GUI는 JFrame과 JPane으로 그렸다. 지정된 판에 선을 그리고 마우스프레스드를 통해 마우가..
- Table of Contents:
태그
‘개발’ Related Articles
공지사항
최근 포스트
태그
검색
전체 방문자
티스토리툴바
안경잡이개발자 :: ‘자바 리듬게임 만들기 강좌’ 카테고리의 글 목록
- Article author: ndb796.tistory.com
- Reviews from users: 8296 Ratings
- Top rated: 4.0
- Lowest rated: 1
- Summary of article content: Articles about 안경잡이개발자 :: ‘자바 리듬게임 만들기 강좌’ 카테고리의 글 목록 안경잡이개발자. ndb796.tistory.com/m. 프로그래밍 강의를 진행하는 공간입니다. 더보기. 구독자: 93. 방명록 방문하기. 구독하기. 자바 리듬게임 만들기 강좌 … …
- Most searched keywords: Whether you are looking for 안경잡이개발자 :: ‘자바 리듬게임 만들기 강좌’ 카테고리의 글 목록 안경잡이개발자. ndb796.tistory.com/m. 프로그래밍 강의를 진행하는 공간입니다. 더보기. 구독자: 93. 방명록 방문하기. 구독하기. 자바 리듬게임 만들기 강좌 … ‘자바 리듬게임 만들기 강좌’ 카테고리의 글 목록
- Table of Contents:
자바(JAVA) 리듬게임 만들기 강좌 8강 – 게임 화면으로 이동하기 (How To Make Java Rhythm Game #8)
자바(JAVA) 리듬게임 만들기 강좌 7강 – 곡 선택 기능 구현 (How To Make Java Rhythm Game #7)
자바(JAVA) 리듬게임 만들기 강좌 6강 – 곡 선택 화면 디자인 (How To Make Java Rhythm Game #6)
자바(JAVA) 리듬게임 만들기 강좌 5강 – 화면 전환 (How To Make Java Rhythm Game #5)
자바(JAVA) 리듬게임 만들기 강좌 4강 – 메뉴 바 구현하기 (How To Make Java Rhythm Game #4)
자바(JAVA) 리듬게임 만들기 강좌 3강 – 시작 화면에 음악 삽입하기 (How To Make Java Rhythm Game #3)
자바(JAVA) 리듬게임 만들기 강좌 2강 – 게임 시작 화면 개발하기 (How To Make Java Rhythm Game #2)
자바(JAVA) 리듬게임 만들기 강좌 1강 – 자바 개발 환경 구축 및 GUI 시작하기 (How To Make Java Rhythm Game #1)
최근에 올라온 글
최근에 달린 댓글
공지사항
글 보관함
최근에 받은 트랙백
링크
자바 비행기 게임 만들어보기 #1
- Article author: binghedev.tistory.com
- Reviews from users: 41949 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about 자바 비행기 게임 만들어보기 #1 자바 GUI로 비행기 출력. import javax.swing.*; import java.awt.*; // Main public … …
- Most searched keywords: Whether you are looking for 자바 비행기 게임 만들어보기 #1 자바 GUI로 비행기 출력. import javax.swing.*; import java.awt.*; // Main public … 자바를 배우고, 한번도 나만의 프로젝트를 해본 적이 없다. 즉, 처음부터 내가 모든 것을 설계하고, 코드를 짜본적이 없다는 것이다. 자바 공부를 하고는 있는데, 문득 뭔가 정체되있다는 기분이 들었다. 여러 개..
- Table of Contents:
태그
관련글
댓글0
공지사항
최근글
인기글
최근댓글
태그
전체 방문자
자바(JAVA) 턴제 게임 만들기. – 달소씨의 하루
- Article author: blog.dalso.org
- Reviews from users: 40696 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about 자바(JAVA) 턴제 게임 만들기. – 달소씨의 하루 내가 이겼다잉. 클래스 객체 생성자 이해하기. 캐릭터의 공통 기능을 함수로 모아놓음 (붕어빵 틀처럼) package Game; public characters … …
- Most searched keywords: Whether you are looking for 자바(JAVA) 턴제 게임 만들기. – 달소씨의 하루 내가 이겼다잉. 클래스 객체 생성자 이해하기. 캐릭터의 공통 기능을 함수로 모아놓음 (붕어빵 틀처럼) package Game; public characters …
- Table of Contents:
See more articles in the same category here: https://toplist.prairiehousefreeman.com/blog.
자바 게임 만들기 File 1
반응형
게임을 만드는 것에 흥미가 있다면 자바로 게임을 만드는 것은 어떨까? 라는 의문을 품을 수도 있다.
게임제작을 위해 어떤 언어가 가장 좋을까? 라는 질문도 생길 수 있다.
조금은 순진한 질문이지만 본질적인 내용이라고도 할 수 있다.
사실 상업용 게임의 제작에는 단순히 언어를 선택하는 것에서 끝나지 않는다. 게임 제작의 품질과 효율성을 위해서 그보다 우선시되는 것은 어떤 게임 엔진을 사용하는가이다.
이 주제에 대한 통계가 없어서 그런지 예전에 Reddit 에서 한 용자가 직접 스팀에 올라온 6만개의 게임을 분석하여 통계를 만들었다. 결과적으로 반에 가까운 게임이 어떤 게임엔진을 사용했는지 알수가 없었고 언리얼 엔진이 23% 유니티가 11% 사용되었다는 사실을 알 수 있었다.
개인이 스크립트 봇으로 조사를 했으니 한계가 있었다고 해야겟지만 유니티의 비율이 상대적으로 낫다는 것에 많은 사람들이 의문을 품었다. 자료의 조사가 2년 전인 것도 감안해야 겠지만 어쨋든 당시 대중의 인식과는 차이가 있었다.
다른 엔진을 사용한 47%는 아마 세계 여러나라에 있을 자체 게임 제작 엔진일 것 이라고 추정된다.
그럼 Other를 제외하고 세계의 인터넷 커뮤니티에 가장 핫한 게임엔진은 언리얼과 유니티이다.
언리얼 엔진에서 사용하는 언어는 C++ 이고 유니티에서 사용하는 언어는 C#이다.
game-ace.com/blog/best-language-for-game-development/
그렇다면 자바는? 자바에도 게임엔진이 있다. LIGHT WEIGHT JAVA GAME LIBRARY 라는 긴 이름의 오픈 소스 게임 개발 라이브러리이다. 꽤 오래전이지만 마인트래프트도 이 라이브러리를 사용해 제작되었다고 한다
(마인크래프트는 규모가 커지면서 C++ 등 다른 언어를 함께 사용하여 제작되었다)
ko.wikipedia.org/wiki/LWJGL
또 자바는 안드로이드의 어플 개발에 많이 사용되고 안드로이드에는 자바를 계승한 코틀린도 있다.
모발일 게임의 시대에 캐주얼한 모바일 게임을 개발하기에 괜찮은 언어다.
우리가 컴퓨터 게임이라고 하면 분류가 복잡하다. 지금은 게임의 종류가 워낙 발달해서 하나의 큰 틀로 묶어서 정의하는데 무리가 있다. 여기서 말하는 것은 플레이스테이션이나 닌텐도 스위치 같은 콘솔(게임만을 위해 구매한 전용장치)을 제외한 PC와 모바일의 게임이다.
우리나라의 게임 제작사들이 주력하는 시장이다. 한국에 플레이 스테이션 독점 게임을 만드는 회사는 없다.
– AAA게임
대기업같은 대형 엔터테인먼트 제작사에서 수백억 단위로 돈을 투자하여 수백명의 인원과 고가의 장비 연예인등을 기용하여 만드는 게임을 ‘AAA’ 트리플 에이 게임이라고 한다. 특히 모바일 게임이나 MMORPG라면 네트워크에 연결해서 다른 플레이어들과 함께 플레이하도록 되있고 경쟁에 의한 과금 정책도 흔히 볼 수 있다. 돈을 많이 투자해서 만들었으니 서비스를 잘 해서 최대한 유저들의 지갑을 열게해야 게임회사가 성장할 수 있다.
엔씨소프트 넥슨 등 대한민국의 대표 IT기업(게임) 회사가 야심차게 내놓는 리니지2 작품을 AAA게임이라 한다.
해외에서 유명한 GTA5는 한화로 거의 3,000억원 넘게 들여서 누적 매출액이 한화로 7조를 달성한 게임이다.
그 밖에 중소기업들이 만드는 게임도 있고 인디 게임도 있다. 하지만 최근에는 중소기업이 만드는 게임과 대기업이 만드는 AAA게임과는 엄청난 차이가 그 아래는 별로 차별을 두지않는다. 스타듀밸리 처럼 1인 인디 게임 개발자들이 대박을 내는 경우도 아주 가끔 보이기 때문에 더 그렇다.
중소기업은 리스크가 큰 오리지널 게임 개발보다는 카카오 등 대기업의 수주를 받아서 회사를 운영하게 된다. 혹은 유행에 따라 수익이 나는 특정 분야 (모바일 게임)를 열심히 만들게 된다.
www.kakaocorp.com/service/KakaoGames
* 카카오 게임에게 원청을 받아 하청업체가 만드는 게임도 있다.
이처럼 게임 시장은 양극화가 되있다. 게임산업의 태동기인 1990년대나 2000년대 초에는 그렇지 않았을 것이다. 이 산업이 20세기 말에 세상에 처음 등장한 산업이라는 것을 감안하면 게임업계의 모든 것들이 신기하게 보인다,
한편 상업 논리에 휩싸이지 않고 자신들만의 아마추어 게임을 개발하는 커뮤니티도 있다. 게임 개발이 목적이라기 보다 게임 개발을 하면서 알고리즘도 배우고 물리엔진도 좀 다뤄보고 실력향상과 취미로 하는 사람들도 있다. 그들은 게임제작 뿐 아니라 어떤 프로그래밍에도 능한 사람일 가능성이 높다. 프로그래밍을 일이라 생각하지 않고 취미로 즐기기 때문일 것이다.
www.pygame.org/tags/all 20년 역사의 파이게임 커뮤니티는 수천개의 아마추어 게임이 오픈소스로 공개되있다.
게임을 다운로드 받아 실행할 수도 있고, 게임 코드를 분석하는 것도 사용자의 자유다.
이 포스팅의 목적은 아마추어 프로그래밍을 즐기기 위해 작성한다
생계를 걸고 제작하는 게임이라면 즐기면서 할 수 없을 것이다. 어쨋든 게임 시장에서 승부를 봐야 하니까. 그러나 프로그래밍 실력을 향상시키기 위해 순수하게 코딩하는 것은 즐거운 일이다. 게임 프로그래밍도 그 중의 하나이다.
*자바 게임 프레임 기본 셋업
이전의 포스팅 파이썬으로 게임만들기에서는 게임을 좀 더 간단하게 만들 수 있었다. 객체지향의 규칙을 엄격하게 지켜야 하는 자바에서는 조금 더 손이 간다. 코드가 길어지는 것은 자바의 특성이다. 길어진 만큼 더 좋은 개념으로 만들 수 있다면 충분하다.
1. 이클립스, 인텔리제이 등 IDE 를 사용하여 시작한다.
패키지 트리는 위와 같이 할 것이다. 메인 패키지에서 게임을 론칭하고 나머지 객체들을 하위 패키지(폴더)에 만들어 넣는다.
첫번째는 Display 클래스를 만든다. Display 클래스는…
– 스윙의 JFrame 을 사용하여 기본이 되는 게임창(프레임)을 생성하는 일을한다.
* 다음 예제 코드이다.
package com.kay.display; import javax.swing.*; public class Display { private JFrame frame; private String title; private int width, height; public Display(String title, int width, int height) { this.title = title; this.width = width; this.height = height; createDisplay(); } private void createDisplay(){ frame = new JFrame(title); frame.setSize(width, height); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
createDisplay 에서 하는일은 기본 윈도우의 설정을 하는 것이다. 창의 너비, 높이 종료처리 등이 들어간다.
* Display 객체의 생성자는 타이을, 너비, 높이로 되어 있다. 이 객체는 메인 Laucnher 에서 생성할 때 창의 타이틀과 사이즈를 설정할 수 있다.
* 론처의 코드는 간단하게 유지한다. 다른 클래스에서 정의한 내용을 하나씩 여기서 생성할 것이다. 론처의 메인 메소드를 보면 책의 목차 처럼 게임의 흐름을 확인할 수 있다.
package com.kay; import com.kay.display.Display; public class Launcher { public static void main(String[] args) { new Display(“게임타이틀”, 300, 300); } }
윈도우 창이 정상적으로 열렸다면 성공이다. 초기 셋업을 완료했다. 다음 포스팅에서 내용을 이어 나갈 것이다.
728×90
[자바로 게임 만들기] 41. 윈도우 만들기
안녕하세요.
자바로 게임 만들기 – 슬라임 퇴치 게임 2탄을 시작해볼까합니다.
1탄은 TUI였지만 2탄은 GUI로 만들겠다고 했었죠. 이번시간에는 GUI의 기본 바탕이 되는 ‘윈도우’를 만들어볼까 합니다.
자바에서는 윈도우를 프레임(frame)이라고 부릅니다. 사전을 찾아보면 액자나 틀, 뼈대라고 나오는데 나름 납득이 가는 명칭입니다.
자, 그럼 스터디01에 적혀있는 기존의 코드를 싹 지우고 아래와 같이 새롭게 코딩을 해봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // Study01.java package study; import javax.swing.JFrame; public class Study01 { public static void main( String [] args) { // 프레임 생성 JFrame frm = new JFrame( “슬라임 퇴치하기” ); // 프레임 크기 설정 frm.setSize( 350 , 300 ); // 프레임을 화면 가운데에 배치 frm.setLocationRelativeTo( null ); // 프레임을 닫았을 때 메모리에서 제거되도록 설정 frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임이 보이도록 설정 frm.setVisible( true ); } } Colored by Color Scripter cs
하나씩 설명 들어갑니다~
– 5행 : 임포트 문장은 수작업으로 적어줘도 되지만 다른 코드를 적고나서 컨트롤 + 시프트 + O 하면 자동 입력되죠^^
– 12행 : 이번 강좌의 핵심문장입니다. 기존에 자바에 내장돼있는 클래스인 JFrame 클래스를 이용해서 프레임을 만드는 문장입니다. 생성자의 인수가 프레임의 제목이 됩니다. (JFrame의 J는 자바의 이니셜이 아닐까 추측해봅니다)
– 15행 : setSize 함수는 가로값, 세로값을 인수로 받아서 프레임의 크기를 설정합니다.
– 18행 : 함수이름이 좀 어렵죠? ‘~에 관련하여 위치 설정’이라는 뜻인데 인수에다가 null을 집어넣으면 위치를 화면 가운데로 설정합니다.
– 21행 : 이 코드를 안적으면 X를 눌러서 창을 닫아도 프로그램이 종료가 안됩니다. 이클립스 콘솔창에 있는 빨간 네모를 눌러줘야 꺼집니다.
– 24행 : 필수 코드입니다. 안적으면 화면에 프레임이 나타나지 않습니다.
자, 이제 실행해봅시다.
성공이군요^^ 성공이군요^^
다음 시간에는 이 프레임에다가 버튼을 추가해보도록 하겠습니다.
감사합니다.
자바 오목게임 만들기
728×90
반응형
이번에는 오목게임을 만들어보도록 하겠다.
룰은 한번씩 돌아가며 돌을 놓고 먼저 5개를 놓는 사람이 이기는 게임이다.
GUI는 JFrame과 JPane으로 그렸다.
지정된 판에 선을 그리고 마우스프레스드를 통해 마우가 클릭하는 자리에 돌을 놓는 방식으
로 진행된다.
오목을 시작하는 메인으로 코드를 작성 후 게임을 실행하는 클래스이다.
GUI객체를 생성하는데 GUI 클래스를 확인해보자
GUI클래스는 전체적인 목을 그림을 그리는 판으로 JFrame과 JOptionPane을 이용하여 그림
을 그렸다.
MapSize와 DrawBoard클래스에 있는 것을 활용하여 전체적인 그림을 그리고
mouseEventHandler클래스를 이용하여 마우스가 클릭되는 곳에 돌을 넣어을 수 있도록 만들
었다.
showPopUp은 승리시 메세지 박스를 뜨게 만들어 누가 승리했는지 알려주게된다.
———————————————————————————-
package omoke;
public class Map {
private short[][] map;// 맵의 배열 1일때 흑,-1일때 백, 0일때 돌이 안놓여짐
private final short BLACK = 1;
private final short WHITE = -1;
private boolean checkBNW = true;// 흑백차례확인
public Map(MapSize ms) {
map = new short[ms.getSize()][];
for (int i = 0; i < map.length; i++) { map[i] = new short[ms.getSize()]; } } public short getBlack() { return BLACK; } public short getWhite() { return WHITE; } public short getXY(int y, int x) { return map[y][x]; } public boolean getCheck() { return checkBNW; } public void changeCheck() { if (checkBNW) { checkBNW = false; } else { checkBNW = true; } } public void setMap(int y, int x) { // checkBNW를 확인해 true일 때 map에 BLACK, false일 때 WHITE저장 if (checkBNW) { map[y][x] = BLACK; } else { map[y][x] = WHITE; } } // 승리확인 public boolean winCheck(int x, int y) { if (winCheckL(x, y) || winCheckLD(x, y) || winCheckLU(x, y) || winCheckR(x, y) || winCheckRD(x, y) || winCheckRU(x, y) || winCheckUp(x, y) || winCheckDown(x, y) || winCheckOneDown(x, y) || winCheckOneL(x, y) || winCheckOneLD(x, y) || winCheckOneLU(x, y) || winCheckOneR(x, y) || winCheckOneRD(x, y) || winCheckOneUp(x, y) || winCheckOneRU(x, y) || winCheckCenterLU(x, y) || winCheckCenterRL(x, y) || winCheckCenterRU(x, y) || winCheckCenterUD(x, y)) { return true; } else { return false; } } // 위쪽 public boolean winCheckUp(int x, int y) { try { for (int i = y; i < y + 5; i++) { if (map[y][x] != map[i][x]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } public boolean winCheckDown(int x, int y) { try { for (int i = y; i > y – 5; i–) {
if (map[y][x] != map[i][x])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
public boolean winCheckRU(int x, int y) {
try {
for (int i = y, z = x; i > y – 5; i–, z++) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
public boolean winCheckLU(int x, int y) {
try {
for (int i = y, z = x; i > y – 5; i–, z–) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
public boolean winCheckR(int x, int y) {
try {
for (int z = x; z < x + 5; z++) { if (map[y][x] != map[y][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } public boolean winCheckL(int x, int y) { try { for (int i = y, z = x; z > x – 5; z–) {
if (map[y][x] != map[i][z] || i > 19 || z > 19 || i < 0 || z < 0) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } public boolean winCheckRD(int x, int y) { try { for (int i = y, z = x; i < y + 5; i++, z++) { if (map[y][x] != map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } public boolean winCheckLD(int x, int y) { try { for (int i = y, z = x; i < y + 5; i++, z--) { if (map[y][x] != map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 한칸 위쪽 public boolean winCheckOneUp(int x, int y) { try { for (int i = y - 1; i < y + 4; i++) { if (map[y][x] != map[i][x]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 한칸 아래쪽 public boolean winCheckOneDown(int x, int y) { try { for (int i = y + 1; i > y – 4; i–) {
if (map[y][x] != map[i][x])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
// 한칸 오른쪽 위 대각선
public boolean winCheckOneRU(int x, int y) {
try {
for (int i = y + 1, z = x – 1; i > y – 4; i–, z++) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
// 한칸 왼쪽 위 대각선
public boolean winCheckOneLU(int x, int y) {
try {
for (int i = y + 1, z = x + 1; i > y – 4; i–, z–) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
// 한칸 오른쪽
public boolean winCheckOneR(int x, int y) {
try {
for (int z = x – 1; z < x + 4; z++) { if (map[y][x] != map[y][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 한칸 왼쪽 public boolean winCheckOneL(int x, int y) { try { for (int z = x + 1; z > x – 4; z–) {
if (map[y][x] != map[y][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
// 한칸 오른쪽 아래 대각선
public boolean winCheckOneRD(int x, int y) {
try {
for (int i = y – 1, z = x – 1; i < y + 4; i++, z++) { if (map[y][x] != map[i][z] || i > 19 || z > 19 || i < 0 || z < 0) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 한칸 왼쪽 아래 대각선 public boolean winCheckOneLD(int x, int y) { try { for (int i = y - 1, z = x + 1; i < y + 4; i++, z--) { if (map[y][x] != map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 센터 업다운 public boolean winCheckCenterUD(int x, int y) { try { for (int i = y - 2; i < y + 3; i++) { if (map[y][x] != map[i][x]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 센터 라이트 레프트 public boolean winCheckCenterRL(int x, int y) { try { for (int z = x - 2; z < x + 3; z++) { if (map[y][x] != map[y][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { return false; } return true; } // 센터 라이트 대각선 public boolean winCheckCenterRU(int x, int y) { try { for (int i = y + 2, z = x - 2; i > y – 3; i–, z++) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
// 센터 레프트 대각선
public boolean winCheckCenterLU(int x, int y) {
try {
for (int i = y + 2, z = x + 2; i > y – 4; i–, z–) {
if (map[y][x] != map[i][z])
return false;
}
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
return true;
}
}
————————————————————-
map 클래스는 전체 바둑판에서 돌의 검정색과 흰색이 놓여지는 위치와 돌의 색을 판정하여
돌이 놓여지는 위치를 설정한다.
배열로 설정하는 것이기 때문에 헷갈리지 않게 하는 것이 좋다.
mapsize는 전체 바둑판의 크기를 설정해 주는 것이다.
mousePressed를 통해 마우스 이벤트를 발생 시키고 판에서만 클릭될 수 있도록하며 판의
범위를 벗어나게 되면 값을 return해준다.
swing을 이용하여 gui를 만들고 코딩을 해보았다.
자바 console도 좋지만 그래픽이 조금만 가해지면 좀 더 재미난 게임을 만들 수 있을 것이다.
package Omoke;
public class Map{ private short[][] map; //맵의 배열 1일 때 흑, -1일 때 백, 0일 때 돌이 안놓여짐 private final short BLACK=1; private final short WHITE=-1; private boolean checkBNW=true; //흑차례 백차례 확인 public Map(MapSize ms){ // TODO Auto-generated constructor stub //배열 초기화 map=new short[ms.getSize()][]; for(int i=0;i
y-5;i–){ if(map[y][x]!=map[i][x]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //오른쪽 위 대각선 public boolean winCheckRU(int x,int y) { try { for(int i=y, z=x;i>y-5;i–,z++){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //왼쪽 위 대각선 public boolean winCheckLU(int x,int y) { try { for(int i=y, z=x;i>y-5;i–,z–){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //오른쪽 public boolean winCheckR(int x,int y) { try { for(int z=x;z x-5;z–){ if(map[y][x]!=map[y][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //오른쪽 아래 대각선 public boolean winCheckRD(int x,int y) { try { for(int i=y, z=x;i 19||z>19||i<0||z<0) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //왼쪽 아래 대각선 public boolean winCheckLD(int x,int y) { try { for(int i=y, z=x;i y-4;i–){ if(map[y][x]!=map[i][x]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //한칸 오른쪽 위 대각선 public boolean winCheckOneRU(int x,int y) { try { for(int i=y+1, z=x-1;i>y-4;i–,z++){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //한칸 왼쪽 위 대각선 public boolean winCheckOneLU(int x,int y) { try { for(int i=y+1, z=x+1;i>y-4;i–,z–){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //한칸 오른쪽 public boolean winCheckOneR(int x,int y) { try { for(int z=x-1;z x-4;z–){ if(map[y][x]!=map[y][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //한칸 오른쪽 아래 대각선 public boolean winCheckOneRD(int x,int y) { try { for(int i=y-1, z=x-1;i 19||z>19||i<0||z<0) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //한칸 왼쪽 아래 대각선 public boolean winCheckOneLD(int x,int y) { try { for(int i=y-1, z=x+1;i y-3;i–,z++){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } //센터 레프트 대각선 public boolean winCheckCenterLU(int x,int y) { try { for(int i=y+2, z=x+2;i>y-4;i–,z–){ if(map[y][x]!=map[i][z]) return false; } } catch (ArrayIndexOutOfBoundsException e) { // TODO: handle exception return false; } return true; } } <수정> package Omoke; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; @SuppressWarnings(“serial”) public class DrawBorad extends JPanel{ private MapSize size; private Map map; private final int STONE_SIZE=28; //돌 사이즈 public DrawBorad(MapSize m,Map map) { // TODO Auto-generated constructor stub setBackground(new Color(206,167,61)); //배경색 지정 size=m; setLayout(null); this.map=map; } @Override public void paintComponent(Graphics arg0) { // TODO Auto-generated method stub super.paintComponent(arg0); arg0.setColor(Color.BLACK); //그려질 색을 블랙지정 board(arg0); //보드를 그림 drawStone(arg0); //배열에 정보에 따라 돌을 그림 } public void board(Graphics arg0) { for(int i=1;i<=size.getSize();i++){ //가로 줄 그리기 arg0.drawLine(size.getCell(), i*size.getCell(), size.getCell()*size.getSize(), i*size.getCell()); //시작점 x : 30, 시작점 y : i값 (줄번호)*30, 끝점 x : 600,끝점 y : i값 (줄번호)*30 //세로줄 그리기 arg0.drawLine(i*size.getCell(), size.getCell(), i*size.getCell() , size.getCell()*size.getSize()); //시작점 x : i값 (줄번호)*30, 시작점 y : 30, 끝점 x : i값 (줄번호)*30, 끝점 y : 600 } } public void drawStone(Graphics arg0) { for(int y=0;y
So you have finished reading the 자바 로 게임 만들기 topic article, if you find this article useful, please share it. Thank you very much. See more: 자바로 rpg 게임 만들기, 자바로 간단한 게임 만들기, 이클립스로 게임 만들기, 자바로 만들수 있는 프로그램, 자바로 만든 게임, 자바 GUI 간단한 게임, 자바 리듬게임 만들기, 자바 게임 코드