首页 > 编程语言 >使用Java开发贪吃蛇游戏一之静态界面

使用Java开发贪吃蛇游戏一之静态界面

时间:2023-03-17 21:47:53浏览次数:32  
标签:ImageIcon Java 一之 snakeX 贪吃蛇 static import new public

一、设置窗口,包括但不限于窗口标题、可见、窗口可关闭,固定大小、设置大小

 

package learn_snake;
/*
* @author MK
* @date 2023年3月15日
*/

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class SankeDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        
        //frame.add(frame, new SankePanel());
        frame.add(new SankePanel() );
        
        frame.setTitle("贪吃蛇大作战");
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setBounds(10,10,900,720);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
}

 

二、创建一个面板类

  1. 设置面板,颜色(black)

  2. 这个面板是画图面板,paintComponent

  3. 创建一个存放素材的文件夹

  4. 记住,所有的素材都是画上去的。

  5. if判断蛇头的朝向

  6. for循环添加蛇的身体

  7. if 判断游戏的状态,并添加一个欢迎的字符串

 

package learn_snake;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Iterator;

/*
* @author MK
* @date 2023年3月15日
*/
import javax.swing.JPanel;
import javax.xml.crypto.Data;

public class SankePanel extends JPanel {
    //
    int length;
    int snakeX[] = new int[600];
    int snakeY[] = new int[500];
    String fx;//蛇头的朝向
    boolean isStart;
    //构造器
    public SankePanel() {
        // TODO Auto-generated constructor stub
        init();
    }
    //蛇的初始位置
    //x坐标和y坐标
    public void init() {
        length = 3;
        snakeX[0] = 100;snakeY[0] = 100;
        snakeX[1] = 75;snakeY[1] = 100;
        snakeX[2] = 50;snakeY[2] = 100;
        fx = "r";//初始化蛇头的朝向
        isStart = false;
    }
    
    
    
    @Override
    protected void paintComponent(Graphics g) {
        // TODO Auto-generated method stub
        super.paintComponent(g);//清屏
        this.setBackground(Color.white);
        //画上头部广告区
        Date.header.paintIcon(this, g, 25, 11);
        g.fillRect(25,75,850,600);
        //画上蛇
        //Date.body.paintIcon(this, g, snakeX[0], snakeY[0]);
        //用for循环进行蛇身体的添加
        for (int i = 1; i < length; i++) {
            Date.body.paintIcon(this, g, snakeX[i], snakeY[i]);
        }
        //用if判断蛇头的朝向
        if (fx.equals("r")) {
            Date.right.paintIcon(this, g, snakeX[0], snakeY[0]);
        }else if (fx.equals("l")) {
            Date.left.paintIcon(this, g, snakeX[0], snakeY[0]);
        }else if (fx.equals("u")) {
            Date.up.paintIcon(this, g, snakeX[0], snakeY[0]);
        }else if (fx.equals("d")) {
            Date.down.paintIcon(this, g, snakeX[0], snakeY[0]);
        }    
        //用if判断游戏的状态
        if (isStart==false) {
            g.setColor(Color.white);
            g.setFont(new Font("微软雅黑",Font.BOLD,40));
            g.drawString("按下空格开始游戏",300,300);
        }
    }
}
三、创建数据类
  1. 定义出窗口的头部图片(用来存放数据),数据中心(data类)

  2. 定义出蛇的身体图片

package learn_snake;
/*
* @author MK
* @date 2023年3月16日
*/

import java.net.URL;

import javax.swing.ImageIcon;
import javax.xml.crypto.Data;

public class Date {
    //画上头部
    public static URL headerUrl = Data.class.getResource("/learn_snake/header.png");
    public static ImageIcon header = new ImageIcon(headerUrl);
    //画身体
    public static URL bodyUrl = Data.class.getResource("/learn_snake/body.png");
    public static ImageIcon body = new ImageIcon(bodyUrl);
    
    public static URL upUrl = Data.class.getResource("/learn_snake/up.png");
    public static ImageIcon up = new ImageIcon(upUrl);
    public static URL downUrl = Data.class.getResource("/learn_snake/down.png");
    public static ImageIcon down = new ImageIcon(downUrl);
    public static URL leftUrl = Data.class.getResource("/learn_snake/left.png");
    public static ImageIcon left = new ImageIcon(leftUrl);
    public static URL rightUrl = Data.class.getResource("/learn_snake/right.png");
    public static ImageIcon right = new ImageIcon(rightUrl);
    
}

总结:

标签:ImageIcon,Java,一之,snakeX,贪吃蛇,static,import,new,public
From: https://www.cnblogs.com/mkdance/p/17227434.html

相关文章

  • Java基础字符串练习
    ​请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:"abcba"、"上海自来水来自海上"均为对称字符串。训练提示:1、判断是否对称,方法的返回值......
  • Java基础字符串练习
    ​我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数......
  • JAVA代码查错
    JAVA代码查错1.abstractclassName{privateStringname;publicabstractbooleanisStupidName(Stringname){}}大侠们,这有何错误?答案: 错。abstract method必......
  • JAVA编程题
    JAVA编程题1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供resetimportjava.util.*;publicclassbycomma{publicsta......
  • Java中使用字节流和字符流操作文件的几种方法和性能对比
    注:本文转自:https://mp.weixin.qq.com/s/QuFkw-f1l0kyOqsBNNrRmw在Java中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入......
  • Java中获取 List中最后一个元素
    场景简单实现思路:list.get(list.size()-1);实现举例:List数据如下获取最后一个元素bookInfo.getFlightResult().get(bookInfo.getFlightResult().size()-1).getDsttime())......
  • Java中通过substring和charAt截取字符串并获取指定字符
    场景字符串类似如下现在要获取S:后面的数字9实现indedOf方法,获取某字符所在下标。flightResult.getCabinString().indexOf(flightResult.getDefaultCabin().getCabinCode())......
  • Java中将CST格式的时间字符串进行格式化
    场景Java中实现将CST格式的时间字符串按指定格式进行格式化。实现代码SimpleDateFormatdateFormat=newSimpleDateFormat("EEEMMMddHH:mm:sszzzyyyy",Locale.US);......
  • Javascript使用function创建类的两种方法
    1、使用function类1234567891011121314151617181920212223//myFunction.jsvarCMyFunc=function(){//类的公共方法,供外部调用this.Fun......
  • 如何在Docker下部署nacos并注册Java服务
    在Docker下部署nacos并注册Java服务并不是一个困难的事,难就难在碰到Java服务注册碰到的异常,下面分享一下如何在Docker中部署Docker,如何注册Java服务,并且来解决这个异常的......