This article describes the greedy snake game implemented by the Java swing framework. Share it for your reference, as follows:
Java is a high-level language and is suitable for background when making games, but you can also use it to make games. When you have nothing to do, you can use it to write some small games to practice to prevent premature aging haha!
Don't talk anymore
The following are the works I practiced before. I am not afraid of everyone making jokes. It took me a week to make it.
The source code is as follows for everyone to learn.
Use java swing Jframe Jpanel JButton Of course you can also use awt
Let’s take a look at the running effect:
Specific code:
package 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.KeyListener;import java.awt.event.MouseAdapter;import 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.TimerTask;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class Snack extends JPanel implements KeyListener { public JButton bt = new JButton("Start"); public ArrayList<Treasure> bw = new ArrayList<Treasure>(); public body[] b = new body[5]; public String state = ""; public ArrayList<point> p = new ArrayList<point>(); public static int score; 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(new Color(165,41,10));//RGB method to define color 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); 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(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"; return true; } } public void stmove() { if (pzjc() == false && (yj() == false)) { b[0].speed = 8;// Here you can increase the speed and increase the difficulty b[0].move(); 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)); return jl; }// temporarily useless 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"; return true; } } return false; } public void crush() { if (bw.size() > 0) { if (p.get(0).equals(p.get(i))) { state = "GAME OVER"; return true; } } 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.mouseClicked(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 TimerTask() { public void run() { bzbw();// Generate treasure stmove();// Snake head movement ssmove();// Snake body movement crush();// Collision detection gameover(); repaint(); } }, 10, 83); } public static void main(String[] args) { JFrame jf = new JFrame("Wulin.com-Greed Snake Game Test"); jf.setBounds(0, 0, 400, 400); jf.setVisible(true); jf.setLayout(null); Container c = new Container(); 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"; } break; case KeyEvent.VK_DOWN: if (b[0].fx != "sz" && b[0].fx != "xz") { b[0].fx = "xz"; } break; case KeyEvent.VK_LEFT: if (b[0].fx != "zz" && b[0].fx != "yz") { b[0].fx = "xz"; } break; case KeyEvent.VK_LEFT: if (b[0].fx != "zz" && b[0].fx != "yz") { b[0].fx = "zz"; } break; case KeyEvent.VK_RIGHT: if (b[0].fx != "zz" && b[0].fx != "yz") { b[0].fx = "yz"; } break; } repaint(); } public void keyReleased(KeyEvent e) { }}Body class
package Tcs;public class body {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 setY(int y) { this.y = y;}public String 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(){ this.x+=-speed;}public void yz(){ this.x+=speed;}public void move(){ if(fx=="xz"){ xz(); } if(fx=="sz"){ sz(); } if(fx=="zz"){ zz(); } if(fx=="yz"){ yz(); }}}Treasures
package Tcs;public class Treasure {public int x;public int y;public String str;}point class
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 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;}}For more information about Java algorithms, readers who are interested in this site can view the topics: "Java Data Structure and Algorithm Tutorial", "Summary of Java Operation DOM Node Tips", "Summary of Java File and Directory Operation Tips" and "Summary of Java Cache Operation Tips"
I hope this article will be helpful to everyone's Java programming.