1.贪吃蛇之界面绘制

前景:
  :如果时间片足够小,就是动画,比如一秒30帧(就是一秒钟会放进30张图片,对人的眼睛来说,他其实已经开始动起来了)。小时候玩过翻书吧,你那一本书手动去拨,也能看见一个动画的效果,那个帧率是很低了。经常看到的游戏里就是30帧,60帧的也有,其实在人肉眼看来60帧和30帧区别不是很大。如果是只苍蝇的话,那就可以分辨出来,因为它比人慢百倍,你打不到它的有原因就是这个。连起来是动画,拆开来是静态的图片!比如做动漫,一秒钟24张画,就是24帧。
  键盘监听,定时器Timer类
一:导入静态资源

二:写一个游戏主启动类 JFrame
 1 package com.gui.snake;
 2 
 3 import javax.swing.*;
 4 
 5 //游戏的主启动类
 6 public class StartGame {
 7     public static void main(String[] args) {
 8         JFrame frame = new JFrame();
 9 
10         frame.setBounds(10, 10, 900, 720);
11         frame.setResizable(false);//窗口大小不可变
12         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
13 
14         //正常的游戏都应该放在面板上!
15         frame.add(new GamePanel());
16 
17         frame.setVisible(true);
18     }
19 }
三:游戏的面板 paintComponent、fillRect
 1 package com.gui.snake;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 
 6 //游戏的面板
 7 public class GamePanel extends JPanel {
 8 
 9     //绘制面板,我们游戏中的所有东西,都是用这个画笔来画。 Ctrl+O,画组件
10     @Override
11     protected void paintComponent(Graphics g) {
12         super.paintComponent(g);//清屏的作用,不用会闪烁
13         //绘制静态的面板
14         this.setBackground(Color.WHITE);
15         Data.header.paintIcon(this, g, 25, 11);//头部广告栏画上去
16         g.fillRect(25, 75, 850, 600);//默认游戏界面
17 
18 
19     }
20 }
四:数据中心 Data、ImageIcon
 1 package com.gui.snake;
 2 
 3 import javax.swing.*;
 4 import java.net.URL;
 5 
 6 //数据中心
 7 public class Data {
 8     //相对路径 tx.jpg
 9     //绝对路径  / 相当于当前的项目
10     public static URL headerURL = Data.class.getResource("statics/header.png");
11     public static ImageIcon header = new ImageIcon(headerURL);
12 
13     public static URL upURL = Data.class.getResource("statics/up.png");
14     public static URL downURL = Data.class.getResource("statics/down.png");
15     public static URL leftURL = Data.class.getResource("statics/left.png");
16     public static URL rightURL = Data.class.getResource("statics/right.png");
17     public static ImageIcon up = new ImageIcon(upURL);
18     public static ImageIcon down = new ImageIcon(downURL);
19     public static ImageIcon left = new ImageIcon(leftURL);
20     public static ImageIcon right = new ImageIcon(rightURL);
21 
22     public static URL bodyURL = Data.class.getResource("statics/body.png");
23     public static ImageIcon body = new ImageIcon(bodyURL);
24 
25     public static URL foodURL = Data.class.getResource("statics/food.png");
26     public static ImageIcon food = new ImageIcon(foodURL);
27 }
效果:
 
原文地址:https://www.cnblogs.com/duanfu/p/12599787.html