Javagui 프로그래밍을 배우려고했을 때 작은 게임 Goji를 썼습니다.
현재 독립형 버전 만 구현되었으며 모든 것이 간단하게 제작됩니다. 궁금한 점이 있으면 조언을 해주세요.
여기의 체스 보드와 체스 조각은 그림이 아니며 모두 Java의 그래픽을 사용하여 그려집니다.
소스 코드가 github에 제출되었습니다. 여기를 클릭하여 Github 소스 코드
Gozi Chess 카테고리의 다음 목록 :
import java.awt.borderlayout; import java.awt.color; import java.awt.container; import java.awt.graphics; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.util.vector; javax.jframe javax.swing.joptionpane; public class FiveInarow 확장 jframe 구현 mouselistener {vector v = new vector (); // 각 단계 벡터 white = new vector ()에 대한 모든 체스 정보; // 화이트 체스 정보 벡터 블랙 = 새로운 벡터 (); // 블랙 체스 정보 부울 b; // 흰색 깃발 또는 검은 색 체스 int WhiteCount, BlackCount인지 판단하는 데 사용됩니다. // 후회 체계의 수를 계산합니다. 체스 단계 int w = 25; // 간격 크기 int px = 100, py = 100; // 보드의 크기 int pxw = px + w, pyw = py + w; int width = w * 16, 높이 = w * 16; int vline = width + px; // 수직선의 길이 int hline = height + py; // 수평 선 길이/***구성 방법*/public fiveInarow () {super ( "독립형 고지"); this.setDefaultCloseOperation (jframe.exit_on_close); // 버튼 컨테이너 con = this.getContentPane (); Con.setLayout (New BorderLayout ()); this.addmouseListener (this); // 청취자 추가 this.setsize (600, 600); // 양식 크기를 설정 this.setbackground (color.orange); this.set -Visible (true); }/*** 체스 보드 및 체스 조각 그리기* @param e*/public void Paint (그래픽 g) {g.clearRect (0, 0, this.getWidth (), this.getheight ()); // artboard g.setcolor (color.black); // grid color g.wraw (px, py, py, py, py, py, py, py) G.DrawString ( "독립형 고지 미니 게임, 체스를 후회하기 위해 마우스 오른쪽 버튼으로 클릭하고 사용 환영합니다", 180, 70); for (int i = 0; i <15; i ++) {g.drawline (pxw+i*w, py, pxw+i*w, hline); // 각 수평 및 수직 선 G.Drawline (px, pyw+i*w, vline, pyw+i*w); } for (int x = 0; x <v.size (); x ++) {string str = (string) v.get (x); 문자열 tmp [] = str.split ( "-"); int a = integer.parseint (tmp [0]); int b = integer.parseint (tmp [1]); a = a * w + px; b = b * w + py; if (x%2 == 0) {g.setColor (color.white); } else {g.setColor (color.black); } g.fillarc (aw/2, bw/2, w, w, 0, 360); }} @override public void mouseclicked (mouseevent e) {if (e.getButton () == e.button1) {int x = e.getx (); int y = e.gety (); x = (x -x % w) + (x % w> w / 2? w : 0); y = (y -y % w) + (y % w> w / 2? w : 0); x = (x -px) / w; y = (y -py) / w; if (x> = 0 && y> = 0 && x <= 16 && y <= 16) {if (v.contains (x+"-"+y)) {system.out.println ( "이미 체스가 있습니다!"); } else {v.add (x+"-"+y); this.repaint (); if (v.size () % 2 == 0) {black.add (x+"-"+y); this.victory (x, y, black); // system.out.println ( "검은 체스"); } else {white.add (x+"-"+y); this.victory (x, y, white); // system.out.println ( "화이트 체스"); } // system.out.println (e.getx ()+"-"+e.gety ()); }} else {// system.out.println (e.getx ()+"-"+e.gety () | "+x+"-"+y+"/t 경계를 초과한다 "); }} if (e.getButton () == E.Button3) {// 체스 // System.out.println을 마우스 오른쪽 버튼으로 클릭하는 메소드 ( "체스-체스"); if (v.isempty ()) {joptionpane.showmessagedialog (이것은 "후회할 체스가 없다"); } else {if (v.size () % 2 == 0) {// 체스를 후회하는 흰색 체스인지, 체스 블랙 카운트 ++를 후회하는 검은 체스; if (blackCount> 3) {joptionpane.showmessagedialog (이것은 "Black Chess가 3 단계를 후회했다"); } else {v.remove (v.lastElement ()); this.repaint (); }} else {WhiteCount ++; if (whitecount> 3) {joptionpane.showmessagedialog (이것은 "Black Chess가 3 단계를 후회했다"); } else {v.remove (v.lastElement ()); this.repaint (); }}}}}}}} / ** * 승리를 판단하는 메소드 * @param x * @param y * @param은 * / private void victory (int x, int y, vector contains) {int cv = 0; // 수직 방향으로 체스 조각의 수 int ch = 0; // 수평 체스 조각 int ci1 = 0; // 경사 방향으로 체스 조각 수 1 int CI2 = 0; // 경사 방향의 체스 조각 수 2 // (int i = 1; i <5; i ++)의 수평 방향으로 체스 조각의 수를 계산합니다 (if (contain.contains ((x+i)+"-"+y)) {ch ++; } else {break; }} for (int i = 1; i <5; i ++) {if (contain.contains ((xi)+"-"+y)) {ch ++; } else {break; }} // (int i = 1; i <5; i ++)의 수직 방향으로 체스 조각의 수를 계산합니다. } else {break; }} for (int i = 1; i <5; i ++) {if (contain.contains (x+"-"+(yi))) {cv ++; } else {break; }} // (int i = 1; i <5; i ++)에 대한 45 ° 경사 방향으로 체스 조각의 수를 계산합니다 (if (contain.contains ((x+i)+"-"+(y+i))) {ci1 ++; } else {break; }} for (int i = 1; i <5; i ++) {if (contain.contains ((xi)+"-"+(yi))) {ci1 ++; } else {break; }} // (int i = 1; i <5; i ++)의 135 ° 경사 방향으로 체스 조각의 수를 계산합니다 (if (cantion.contains ((x+i)+"-"+(yi))) {Ci2 ++; } else {break; }} for (int i = 1; i <5; i ++) {if (contain.contains ((x+i)+"-"+(yi))) {ci2 ++; } else {break; }} for (int i = 1; i <5; i ++) {if (contain.contains ((xi)+"-"+(y+i))) {ci2 ++; } else {break; }} if (ch> = 4 || cv> = 4 || ci1> = 4 || ci2> = 4) {system.out.println (v.size ()+"step"); if (v.size () % 2 == 0) {// joptionpane.showmessagedialog (null, "black")를이기는 것이 검은 색인지 흰색인지 판단합니다. } else {joptionpane.showmessagedialog (null, "white"); } this.v.clear (); this.black.clear (); this.white.clear (); this.repaint (); }} @Override public void mouseEntered (mouseevent e) {// todo auto-kened method stub} @override public void mouseexited (mouseevent e) {// todo 자동 생성 메소드 stub} @override public void mousepressed (mouseevent e) {// to auto-goder retoded method genderned method renfenerated method renfence mousepressed (mouseevent e) {// todo 자동 생성 메소드 스터브} @override public void mousereLeased (mouseevent e) {// todo 자동 생성 메소드 스텁}}}추신 : 나는 다른 온라인 버전의 Goji를 작성할 계획이지만 불행히도 나는 Java의 인터넷에 대해 잘 모른다. 나는 계속해서 그것을 완료하고 개인 학습 결과를 테스트하기 전에 잠시 공부해야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.