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 }
效果: