이 기사는 Java Swing 프레임 워크에서 구현 한 탐욕스러운 뱀 게임에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
Java는 높은 수준의 언어이며 게임을 만들 때 배경에 적합하지만 게임을 만들기 위해 사용할 수도 있습니다. 할 일이 없으면 조기 노화를 막기 위해 연습하기 위해 소규모 게임을 작성하는 데 사용할 수 있습니다!
더 이상 말하지 마세요
다음은 내가 전에 연습 한 작품입니다. 나는 모든 사람이 농담을하는 것을 두려워하지 않습니다. 그것을 만드는 데 일주일이 걸렸습니다.
소스 코드는 모든 사람이 배울 수있는 다음과 같습니다.
Java Swing JFrame JPANEL JBUTTON 사용 AWT도 사용할 수 있습니다.
실행 효과를 살펴 보겠습니다.
특정 코드 :
패키지 tcs;/** * * * @author tx */import java.awt.color; import java.awt.container; import java.awt.font; import java.awt.graphics; import java.awt.event.keyevent; import java.awt.event.event.event.event.event.event.event.event.event.event.event.event.event.event.event. java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.util.arraylist; import java.util.arrays; import java.util.collection; import java.util.random; import java.util.timer; import java.util javax.swing.jframe; import javax.swing.jpanel; public class 스낵 확장 jpanel implements keylistener {public jbutton bt = new Jbutton ( "start"); public arraylist <Treasure> bw = new Arraylist <Treasure> (); 공공 기관 [] B = 새로운 몸 [5]; 공개 문자열 상태 = ""; public arraylist <point> p = new Arraylist <point> (); 공개 정적 INT 점수; 공개 간식 () {this.addkeylistener (this); shengc (); } public void shengc () {for (int i = 0; i <b.length; i ++) {b [i] = new body (); b [i] .x = 10 -i * 10; b [i] .y = 150; }} public int x = 0, y = 0; public void paint (그래픽 g) {super.paint (g); g.setColor (새 색상 (165,41,10)); // rgb 메소드 색상 G.setfont (new font (font.sans_serif, font.bold, 20)); for (int i = 0; i <b.length; i ++) {body z1 = b [i]; G.DrawString ( "o", b [i] .x, b [i] .y); } g.setColor (color.blue); g.setfont (new font (font.sans_serif, font.bold, 20)); G.DrawString ( "점수 :" + 점수, 30, 30); Paintjs (g); Paintbw (G); } public void paintjs (그래픽 g) {g.setcolor (color.black); if (state.length ()> 1) {G.DrawString (state, 140, 200); }} public void paintbw (그래픽 g) {g.setfont (new font (font.sans_serif, font.bold, 25)); g.setcolor (color.red); for (int i = 0; i <bw.size (); i ++) {g.drawString ( "o", bw.get (i) .x, bw.get (i) .y); }} public boolean yj () {if ((b [0] .x <400 && b [0] .x> 0) && (b [0] .y <400 && b [0] .y> 0)) {return false; } else {state = "게임 오버"; 진실을 반환하십시오. }} public void stmove () {if (pzjc () == false && (yj () == false)) {b [0] .speed = 8; // 속도를 높이고 난이도를 증가시킬 수 있습니다. p.add (new point (b [0] .x, b [0] .y, b [0] .fx)); if (p.size ()> b.length) {p.remove (p.get (0)); // system.out.println (p.size ()); }}} public int jl (Body A, Treasure B) {int jl = 0; jl = (int) math.sqrt ((ax -bx) * (ax -bx) + (ay -by) * (ay -by)); jl 리턴; } // 일시적으로 쓸모없는 public void ssmove () {if (p.size ()> = B.length) {for (int i = 0; i <b.length -1; i ++) {b [i+1] .fx = p.get (i) .fx; b [i + 1] .x = p.get (i) .x; b [i + 1] .y = p.get (i) .y; }}} random r = new random (); public void bzbw () {if (bw.size () <1) {Treasure s = new Treasure (); sx = r.nextint (300) + 50; bw.add (들); }} public void bwxs () {타이머 t = new Timer (); t.schedule (new Timertask () {public void run () {}}, 0, 8000); } public boolean pzjc () {for (int i = 1; i <p.size (); i ++) {if (p.get (0) .equals (p.get (i))) {state = "Game Over"; 진실을 반환하십시오. }} 거짓을 반환합니다. } public void crush () {if (bw.size ()> 0) {if (p.get (0) .equals (p.get (i))) {state = "Game Over"; 진실을 반환하십시오. }} 거짓을 반환합니다. } public void crush () {if (bw.size ()> 0) {if (jl (b [0], bw.get (0)) <8) {bw.remove (0); b = arrays.copyof (b, b.length + 1); B [B.length -1] = 새로운 바디 (); 점수 += 10; }}} public void gameover () {mouselistener k = new mouseadapter () {public void mouseclicked (mouseevent e) {super.mouseclicked (e); 상태 = ""; b = arrays.copyof (b, 5); p.clear (); shengc (); 점수 = 0; Bt.set -Visible (false); }}; if (state.length ()> 1) {this.add (bt); Bt.set -Visible (true); Bt. 세트 바운드 (150, 150, 100, 30); bt.addmouselistener (k); } if (bt.isvisible () == false) {this.remove (bt);} this.requestFocus (); } public void zmaction () {타이머 타이머 = new Timer (); timer.schedule (new Timertask () {public void run () {bzbw (); // 보물 생성 stmove (); // 스네이크 헤드 움직임 ssmove (); // 뱀 바디 크러쉬 (); // Collision Detection GameOver (); Refaint ();}}, 10, 83); } public static void main (String [] args) {jframe jf = new Jframe ( "wulin.com-greed snake game test"); JF. 세트 바운드 (0, 0, 400, 400); jf.set -Visible (true); jf.setlayout (null); 컨테이너 C = 새로운 컨테이너 (); c = jf.getContentPane (); C. 세트 백 (Color.white); JF.SetDefaultCloseOperation (jframe.exit_on_close); 간식 S = 새로운 스낵 (); S.setvisible (true); S.SetBounds (0, 0, 600, 600); S.SetLocation (0, 0); S.Setbackground (Color.Orange); jf.add (들); s.zmaction (); S.RequestFocus (); } public void keytyped (keyevent e) {} public void keypressed (keyevent e) {int k = e.getKeyCode (); switch (k) {case keyevent.vk_up : if (b [0] .fx! = "sz"&& b [0] .fx! = "xz") {b [0] .fx = "sz"; } 부서지다; case keyEvent.vk_down : if (b [0] .fx! = "sz"&& b [0] .fx! = "xz") {b [0] .fx = "xz"; } 부서지다; case keyevent.vk_left : if (b [0] .fx! = "zz"&& b [0] .fx! = "yz") {b [0] .fx = "xz"; } 부서지다; case keyevent.vk_left : if (b [0] .fx! = "zz"&& b [0] .fx! = "yz") {b [0] .fx = "zz"; } 부서지다; case keyevent.vk_right : if (b [0] .fx! = "zz"&& b [0] .fx! = "yz") {b [0] .fx = "yz"; } 부서지다; } Repaint (); } public void keyreleased (keyevent e) {}}바디 클래스
패키지 tcs; public class body {public int x = 0; public int y = 0; public int speed; public int speed; private string str; public string fx; public body () {yz ";} public int getx () {return x;} public void setx (int x) {this.x = x;} public int gety () {retud void setty (int y) {int y). getStr () {return str;} public void setstr (string str) {this.str = str;} public void sz () {this.y+=-속도;} public void xz () {this.y+= speed;} public void zz () {this.x+=-speed;} public void yz () {this.x+=) {}} if (fx == "xz") {xz (); } if (fx == "sz") {sz (); } if (fx == "zz") {zz (); } if (fx == "yz") {yz (); }}}보물
패키지 tcs; 공개 클래스 보물 {public int x; public int y; public string str;}포인트 클래스
패키지 tcs; public class point {public int x; public int y; public String fx; public point (int x, int y, string fx) {this.x = x; this.y = y; this.fx = fx;} public boolean Equals (Object O) {if (o instanceof point) {point p = (point) o; if (px == this.x && p.y == this.y) {return true; }} if (o == this) {return true;} if (o == null) {return false;} return false;}}Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.