当前位置:   article > 正文

用Java实现贪吃蛇小游戏_java语言开发一个贪吃蛇小游戏

java语言开发一个贪吃蛇小游戏

一、创建新项目
首先创建一个新的项目,并命名为贪吃蛇

其次在贪吃蛇项目下创建一个名为images的文件夹用来存放游戏相关图片。

然后再在项目的src文件下创建一个com.xxx.view的包用来存放所有的图形界面类,创建一个com.xxx.controller的包用来存放启动的入口类(控制类)。

二、游戏界面

package com.snake.view;
 
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.border.EmptyBorder;
 
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class SnakeJPanel extends JPanel implements ActionListener{
    
    private boolean start;//当前游戏状态
    
    private int speed;//速度
    
    private boolean exist;//当前是否存在食物
    
    private int foodType;//食物种类
    
    private int x;//豆子的横坐标
    private int y;//豆子的纵坐标

private ArrayList<int[]> localList;//蛇
    
    
    public String direction;//方向
    
    private String direction2;//引导方向
    
    public boolean flag;
    
    Random rand = new Random();
 
    private ImageIcon up;
    private ImageIcon down;
private ImageIcon right;
    private ImageIcon left;
    private ImageIcon body; 
    private ImageIcon food;
    private ImageIcon title;
    Timer time;

private int score;//当前得分情况
    
    private int num;//吃到的食物个数
    
//    private Image offScreenImage;  //图形缓存
    
    
    //图片绘制
    @Override
    public void paint(Graphics g) {
        
        direction = direction2;
        
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, 900, 700);
  //绘制游戏框
        //标题框
//        g.drawRect(25, 30, 800, 75);
        title.paintIcon(this, g, 25, 10);
        
        //内容框
        g.setColor(Color.black);
        g.fillRect(25, 75, 850, 600);
        
        //绘制食物的坐标位置
        if(!exist) {//如果当前不存在豆子,随机绘制一个豆子    
            if(num % 5 == 0) {
                foodType = 1;
            }else {
                foodType = 0;
  }
            boolean isProduce = true;
            while(isProduce) {
                isProduce = false;
                x = rand.nextInt(33) * 25 + 25;        
                y = rand.nextInt(23) * 25 + 75;            
                for (int[] arr:localList) {
                    if(x == arr[0] && y == arr[1]) {    
                        isProduce = true;
                        break;    
                    }
                }
}            
            System.out.println(x + "---" + y);
        }
        
         if(eat()) {
            exist = false;
         }else {
            exist = true;
         }
         
         
        if(foodType == 0) {
            //绘制食物
 g.setColor(Color.blue);
//            g.fillRect(x, y, 25, 25);
            g.drawImage(food.getImage(),x, y, 25, 25,null);
        }else {
            //绘制食物
     

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/699437
推荐阅读
相关标签
  

闽ICP备14008679号