Birdgame类 关于实践周的第一个项目选择了制作Flying Birds小游戏,首先会考虑到最直观的界面设计。 其中主要运用swing和awt包:图形界面工具,绘制出游戏场景。 主要设计对象包括游戏开始界面,游戏分数统计,游戏结束界面。
整个Birdgame类继承JPanel 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class BirdGame extends JPanel { ... ... } JPanel中常用方法 void add(Component):添加组件。 void add(Component,int):添加组件至索引指定位置。 void add(Component,Object):按照指定布局限制添加组件。 void add(Component,Object,int):按照指定布局管理器限制添加组件到指定位置。 void remove(Component):移除组件。 void remove(int):移除指定位置的组件。 void removeAll():移除所有组件。 void paintComponent(Graphics):绘制组件。`` void repaint():重新绘制。 void setPreferredSize(Dimension):设置组件尺寸。 Dimension getPreferredSize():获取最佳尺寸。
组件是构成应用程序界面的基本元素,按钮、文本框、进度条等,都是组件。可视化组件又可以分为容器组件和非容器组件,可以在JPanel中放置按钮、文本框等非容器组件,甚至可以在JPanel中再放置若干个JPanel组件,顶层容器也是容器组件,每一个窗口应用程序中有且只能有一个顶层容器组件。 经常使用JPanel先创建一个面板,在向这个面板添加组件,然后把这个面板添加到其他容器中。 JPanel面板的默认布局是FlowLayout布局** More info: JFrame,JPanel,JLabel详解
Graphics2D类基本使用 1 2 3 4 //绘制小鸟 Graphics2D g2=(Graphics2D) g; g2.rotate(-bird.alpha,bird.x,bird.y);//rotate(double arc,double x, double y):图形以点(x,y)为轴点,旋转arc弧度。 g2.rotate(bird.alpha,bird.x,bird.y);//rotate(double arc,double x, double y):图形以点(x,y)为轴点,旋转arc弧度。
Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供、坐标转换、颜色管理以及文字布局等更精确的控制。 Graphics2D定义了几种方法,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;以及设定填充图形的颜色和图案等。图形状态属性用特定的对象存储。 More info: Graphics2D类基本使用
与鼠标互动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 不断重复和绘制 MouseListener l=new MouseAdapter () { public void mousePressed(MouseEvent e) { try { switch(state) { case START: //在开始前按下鼠标转为运行状态 state=RUNNING; break ; case RUNNING: //在运行状态,按下鼠标小鸟向上飞行 bird.flappy(); break ; case GAME_OVER: //在结束状态,按下鼠标重置数据变为开始 column1=new Column(1); column2=new Column(2); bird=new Bird(); score=0; state=START; break ; } } catch (Exception ex) { ex.printStackTrace(); } } }; addMouseListener(l);
java中 addMouseListener()方法用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。) MouseListener与MouseAdapter的区别在于一个是类,一个是接口。 适配器已经实现了相应的接口,例如MouseAdapter类实现了MouseListener接口,因此可以使用MouseAdapter的子类创建的对象做监视器,只需重写需要的接口方法即可。
启动方法 1 2 3 4 5 6 7 8 9 10 11 12 13 public static void main(String[] args) throws Exception { JFrame frame=new JFrame(); BirdGame game=new BirdGame(); frame.add(game); frame.setSize(440,670); frame.setLocationRelativeTo(null);//设置窗口相对于指定组件的位置。如果组件当前未显示或者 为 null,则此窗口将置于屏幕的中央 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//如果在代码里没加这个方法,那么在点击框架的”叉叉“退出框架后,程序仍然没有退出,只是JFrame被关闭了。 frame.setVisible(true ); game.action(); }
关于Java的setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 这个方法是JFrame类的一个方法,EXIT_ON_CLOSE是JFrame的一个静态常量。 该方法的翻译大概是“设置默认的关闭操作,参数”在关闭动作时退出“。
Welcome back AM1ng!