Java实现贪吃蛇

今天,我在家闲来无聊,于是就用Java写了一款经典的小游戏——贪吃蛇。贪吃蛇想必大家都玩过,可以说是经典中的经典了。我写完后,自己体验了几把,感觉找到了童年的感觉。~~~~~~~~~

好了,废话不多说,直接上游戏的源码。

package com.liuyuhe;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.LinkedList;

/**
 * @PackageName:com.liuyuhe
 * @ClassName: Snake
 * @Description:
 * @author:xxxx
 * @date:2019/8/9 9:24
 */
public class Snake extends JFrame {
    private Point point=new Point();
    private LinkedList list=new LinkedList();
    private int key=37;
    public void init(){
        point.setLocation(100,100);
        list.add(new Point(300,300));
        list.add(new Point(310,300));
        list.add(new Point(320,300));
        list.add(new Point(330,300));
        list.add(new Point(340,300));
        list.add(new Point(350,300));
        list.add(new Point(360,300));
        new Thread(new MoveThread()).start();
    }
    public void paint(Graphics g){
        Image img=createImage(500,500);
        Graphics g2=img.getGraphics();
        g2.setColor(Color.WHITE);
        g2.fillRect(0,0,500,500);
        g2.translate(50,50);
        g2.setColor(Color.RED);
        g2.drawRect(0,0,400,400);
        g2.setColor(Color.GREEN);
        for(int i=0;i=37&&e.getKeyCode()<=40){
                    if(Math.abs(key-e.getKeyCode())!=2){
                        key=e.getKeyCode();
                    }
                }
            }
        });
        init();
    }
    class MoveThread implements Runnable{
        public void run(){
            while(true){
                try {
                    Thread.sleep(150);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Point p=list.getFirst().getLocation();
                switch(key){
                    case 37:
                        p.x=p.x-10;
                        break;
                    case 38:
                        p.y=p.y-10;
                        break;
                    case 39:
                        p.x=p.x+10;
                        break;
                    case 40:
                        p.y=p.y+10;
                        break;
                }
                if(p.x<0||p.x>390||p.y<0||p.y>390||list.contains(p)){
                    JOptionPane.showMessageDialog(null,"游戏结束!!!");
                    break;
                }
                list.addFirst(p);
                if(p.equals(point)){
                    int x=(int)(Math.random()*40)*10;
                    int y=(int)(Math.random()*40)*10;
                    int flag=0;
                    while(true){
                        for (int j=0;j

注意:

这个贪吃蛇只是一个精简版本的,还有很多功能可以自己添加,请大家尽情发挥自己的想象力吧!

本人刚开始接触Java,源码中可能会有bug,希望大家多多包涵。

最后,祝所有在梦想道路上拼搏的人们,能够有所收获,能够走向成功。

 

你可能感兴趣的:(Java)