В этой статье описывается жадная игра Snake, реализованная Framework Java Swing. Поделитесь этим для вашей ссылки, следующим образом:
Java-это язык высокого уровня и подходит для фона при создании игр, но вы также можете использовать его для создания игр. Когда вам нечего делать, вы можете использовать его, чтобы написать несколько небольших игр, чтобы практиковать, чтобы предотвратить преждевременное старение, ха -ха!
Больше не говори
Ниже приведены работы, которые я практиковал раньше. Я не боюсь, что все шутят. Мне потребовалась неделя, чтобы сделать это.
Исходный код заключается в следующем, чтобы учить.
Используйте Java Swing Jframe JPanel Jbutton, конечно, вы также можете использовать AWT
Давайте посмотрим на эффект бега:
Конкретный код:
пакет tcs;/** * * * * @author tx */import java.awt.color; import java.awt.container; import java.awt.font; импорт java.awt.graphics; import java.awt.event.keyevent; import java.awt. java.awt.event.mouseevent; импорт java.awt.event.mouselistener; импорт java.util.arraylist; import java.util.arrays; импорт java.util.collection; импорт java.util.random; импорт java.util.timer; импорт. javax.swing.jframe; import javax.swing.jpanel; Public Class Snack расширяет JPanel реализует keylistener {public jbutton bt = new jbutton ("start"); Public ArrayList <Сокровище> BW = новый ArrayList <сокровищ> (); общественное тело [] b = новое тело [5]; public String state = ""; public ArrayList <popt> p = new ArrayList <popt> (); общественный статический балл; public snack () {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 (Graphics G) {super.paint (g); G.SetColor (новый цвет (165,41,10)); // метод RGB для определения цвета G.SetFont (новый шрифт (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 (новый шрифт (font.sans_serif, font.bold, 20)); G.DrawString («Оценка:» + Оценка, 30, 30); Paintjs (g); Paintbw (g); } public void paintjs (Graphics g) {g.setcolor (color.black); if (state.length ()> 1) {g.drawstring (state, 140, 200); }} public void paintbw (Graphics G) {g.setfont (новый шрифт (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 = "Game Over"; вернуть истину; }} public void stmove () {if (pzjc () == false && (yj () == false)) {b [0] .speed = 8; // Здесь вы можете увеличить скорость и увеличить сложность b [0] .move (); P.Add (новая точка (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 (тело A, сокровище B) {int jl = 0; jl = (int) math.sqrt ((ax - bx) * (ax - bx) + (ay - by) * (ay - by)); вернуть JL; } // временно бесполезная публичная 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; }}} Случайный r = new Random (); public void bzbw () {if (bw.size () <1) {сокровищ s = newcure (); SX = R.Nextint (300) + 50; bw.add (ы); }} public void bwxs () {timer 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"; вернуть истину; }} вернуть false; } public void crush () {if (bw.size ()> 0) {if (p.get (0). equals (p.get (i))) {state = "Game Over"; вернуть истину; }} вернуть false; } 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] = New Body (); счет += 10; }}} public void GameOver () {mouseListener k = new MouseAdapter () {public void mouseClicked (mouseevent e) {super.mouseclicked (e); state = ""; b = arrays.copyof (b, 5); p.clear (); shengc (); Оценка = 0; bt.setvisible (false); }}; if (state.length ()> 1) {this.add (bt); bt.setvisible (true); Bt.SetBounds (150, 150, 100, 30); Bt.AddmouseListener (k); } if (bt.isvisible () == false) {this.remove (bt);} this.requestfocus (); } public void zMaction () {timer timer = new Timer (); timer.schedule (new timertask () {public void run () {bzbw (); // генерировать сокровище stmove (); // Движение головы змеи ssmove (); // Движение тела змеи (); // обнаружение столкновения Gameover (); Repaint ();}}, 10, 83); } public static void main (string [] args) {jframe jf = new jframe ("wulin.com-greed Game Test"); jf.setbounds (0, 0, 400, 400); jf.setvisible (true); jf.setlayout (null); Контейнер C = новый контейнер (); c = jf.getContentPane (); c.setbackground (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 keyReled (keyEvent e) {}}Класс тела
Пакет TCS; открытый класс Body {public int x = 0; public int y = 0; public int speed; частная строка Str; public String fx; public body () {fx = "yz";} public int getx () {return x;} public void setx (int x) {x = x;} public yte () {return y;} public void void setty (int y) getStr () {return str;} public void setstr (string str) {this.str = str;} public void sz () {this.y+=-speed;} public void xz () {this.y+= speed;} public void zz () {x+=-speed;} public yz () {this.x+= speed; if (fx == "xz") {xz (); } if (fx == "sz") {sz (); } if (fx == "zz") {zz (); } if (fx == "yz") {yz (); }}}Сокровища
Пакет TCS; Public Class Treasure {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 exactionof point) {point p = (точка) o; if (px == this.x && p.y == this.y) {return true; }} if (o == this) {return true;} if (o == null) {return false;} вернуть false;}}Для получения дополнительной информации об алгоритмах Java, читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.