Cet article décrit le jeu de serpent gourmand mis en œuvre par le framework Java Swing. Partagez-le pour votre référence, comme suit:
Java est une langue de haut niveau et convient au fond lors de la fabrication de jeux, mais vous pouvez également l'utiliser pour faire des jeux. Lorsque vous n'avez rien à faire, vous pouvez l'utiliser pour écrire quelques petits jeux pour s'entraîner pour éviter un vieillissement prématuré haha!
Ne parle plus
Voici les œuvres que j'ai pratiquées auparavant. Je n'ai pas peur que tout le monde fasse des blagues. Il m'a fallu une semaine pour y arriver.
Le code source est le suivant pour que tout le monde puisse apprendre.
Utilisez Java Swing Jframe Jpanel JBUTTON Bien sûr, vous pouvez également utiliser AWT
Jetons un coup d'œil à l'effet de course:
Code spécifique:
Package tcs; / ** * * * * @author tx * / import java.awt.color; importer java.awt.container; import java.awt.font; import java.awt.graphics; import; java.awt.event.mouseevent; import java.awt.event.mouseListener; import java.util.arraylist; import java.util.arrays; importer java.util.collection; import java.util.random; import java.util.timer; import java.util.timtask; import java.wing.jbutton; javax.swing.jframe; import javax.swing.jpanel; la collation de classe publique étend Jpanel implémente keyListener {public jbutton bt = new JButton ("start"); public ArrayList <Treasure> bw = new ArrayList <Treasure> (); corps public [] b = nouveau corps [5]; public string state = ""; public arrayList <point> p = new ArrayList <point> (); Score d'int statique public; 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; peinture publique vide (graphiques g) {super.paint (g); g.setColor (nouvelle couleur (165,41,10)); // méthode RGB pour définir la couleur 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 ("Score:" + Score, 30, 30); peinturejs (g); peinturebw (g); } public void paintjs (graphiques g) {g.setColor (color.black); if (state.length ()> 1) {g.Drawstring (State, 140, 200); }} public void peintbw (graphics 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 = "game over"; Retour Vrai; }} public void stmove () {if (pzjc () == false && (yj () == false)) {b [0] .Speed = 8; // vous pouvez augmenter la vitesse et augmenter la difficulté b [0] .move (); p.add (nouveau 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 (corps a, trésor b) {int jl = 0; jl = (int) math.sqrt ((ax - bx) * (ax - bx) + (ay - by) * (ay - by)); retourner jl; } // Temporairement inutile 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 (s); }} 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"; Retour Vrai; }} return false; } public void Crush () {if (bw.size ()> 0) {if (p.get (0) .equals (p.get (i))) {state = "game over"; Retour Vrai; }} return 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 (); score + = 10; }}} public void gameover () {MouseListener K = new MouseAdapter () {public void MouseClicked (MouseEvent e) {super.MousClicked (e); state = ""; b = arrays.copyof (b, 5); P.Clear (); Shengc (); score = 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 TimeMtask () {public void run () {bzbw (); // générer du trésor stmove (); // mouvement de tête de serpent ssmove (); // mouvement du corps de serpent Crush (); // Collision Detection GameOver (); Repainte ();}}}, 10, 83); } public static void main (string [] args) {jframe jf = new JFrame ("wulin.com-ged gibier de gibier"); jf.setBounds (0, 0, 400, 400); jf.setVisible (true); jf.setLayout (null); Conteneur c = nouveau conteneur (); c = jf.getContentPane (); C.SetBackground (Color.white); jf.setDefaultCloseOperation (jframe.exit_on_close); Snack S = new Snack (); S.SetVisible (true); S.SetBounds (0, 0, 600, 600); S.SetLocation (0, 0); S.SetBackground (Color.Orange); jf.add (s); 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"; } casser; case keyevent.vk_down: if (b [0] .fx! = "sz" && b [0] .fx! = "xz") {b [0] .fx = "xz"; } casser; case keyevent.vk_left: if (b [0] .fx! = "zz" && b [0] .fx! = "yz") {b [0] .fx = "xz"; } casser; case keyevent.vk_left: if (b [0] .fx! = "zz" && b [0] .fx! = "yz") {b [0] .fx = "zz"; } casser; case keyevent.vk_right: if (b [0] .fx! = "zz" && b [0] .fx! = "yz") {b [0] .fx = "yz"; } casser; } repeain (); } public void keyrelent (keyevent e) {}}Classe de corps
package tcs; body de classe publique {public int x = 0; public int y = 0; public int Speed; private String Str; public String fx; public body () {fx = "yz";} public int getX () {return x;} public void setx (int x) {this.x = x;} public int gety () {return y;} public void sey gettr () {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 () {this.x + = - speed;} public void yz () {this.x + = Speed;} public Void () {) {this.x + = Speed;} public Void () {) if (fx == "xz") {xz (); } if (fx == "sz") {sz (); } if (fx == "zz") {zz (); } if (fx == "yz") {yz (); }}}Trésors
package tcs; public class treasure {public int x; public int y; public string str;}classe de points
package 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 booléen est égal (objet 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;}}Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.