82-83_游戏项目_使用继承封装MyFrame作为以后窗口类共同父类
来源:互联网 发布:文明6 简体中文 mac版 编辑:程序博客网 时间:2024/05/21 20:37
根据游戏先前版本的特点封装一个父类MyFrame代码如下
package com.zhushen.Test;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;/** * 简单窗口类 * @author zhushen * */public class MyFrame extends Frame { private static final long serialVersionUID = 1L; /** * 加载窗口 */ public void launchFrame(){ setSize(Constant.FRAME_WIDTH,Constant.FRAME_HEIGHT); setLocation(Constant.FRAME_X,Constant.FRAME_Y); setVisible(true); new PaintThread().start();//启动重画线程 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }) ; } /** * 定义一个重画窗口的线程类,内部类 * @author zhushen * */ class PaintThread extends Thread{ public void run(){ while(true){ repaint(); try { Thread.sleep(40);//1s画1000/40次 } catch (InterruptedException e) { e.printStackTrace(); } } } }}
由于游戏的窗口的一般是固定的,所有的常量也可以封装一个常量类来处理。
package com.zhushen.Test;/** * 项目的一些配置常量 * @author zhushen * */public class Constant { public static final int FRAME_X =100;//窗口初始位置的横坐标 public static final int FRAME_Y =100;//窗口初始位置的纵坐标 public static final int FRAME_WIDTH =500;//窗口的宽度 public static final int FRAME_HEIGHT =500;//窗口的高度}
GameFrame
package com.zhushen.Test;import java.awt.Graphics;import java.awt.Image;/** * 游戏窗口类 * @author zhushen * */public class GameFrame extends MyFrame { private static final long serialVersionUID = 1L; Image img=GameUtil.getImage("images/mylove.png"); /** * 在窗口里面画元素 */ private double x=250,y=250; private double degree=Math.PI/3;//[0,2PI] private double speed=10; public void paint(Graphics g){ g.drawImage(img, (int)x, (int)y, null); if(speed>0){ speed-=0.05; }else{ speed=0; } x+=speed*Math.cos(degree); y+=speed*Math.sin(degree); if(y<50||y>Constant.FRAME_HEIGHT-30){ degree=-degree; } if(x>Constant.FRAME_WIDTH-30||x<0){ degree=Math.PI-degree; } } public static void main(String[] args) { GameFrame gf=new GameFrame(); gf.launchFrame(); }}
GameUtil
package com.zhushen.Test;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;import javax.imageio.ImageIO;public class GameUtil { private GameUtil(){//工具类的一般构造方法私有 } /** * 根据path加载一张图片,返回Image * @param path * @return */ public static Image getImage(String path){ URL u=GameUtil.class.getClassLoader().getResource(path); BufferedImage img=null; try { img=ImageIO.read(u); } catch (IOException e) { e.printStackTrace(); } return img; }}
阅读全文
0 0
- 82-83_游戏项目_使用继承封装MyFrame作为以后窗口类共同父类
- 77_游戏项目_加载窗口_画图形_加载图片_编程中坐标基本知识
- c#_类和继承
- Python基础_继承类
- GUI awt 四个继承Frame的MyFrame窗口
- 设计模式_继承_类中成员_覆盖_子类的实例化过程
- 黑马程序员_面对对象_继承_抽象类_接口
- 学习笔记_毕向东 Java_继承_抽象类_接口_多态 2014.7.13
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- 黑马程序员_基础、封装、继承、多态
- 黑马程序员_封装、继承、多态
- 面向对象2_主要特征【封装】【继承】
- python进阶六_封装与继承
- 黑马程序员_封装继承多态
- 黑马程序员_封装、继承、多态
- 黑马程序员_封装、继承、多态
- 黑马程序员_java 继承_抽象类_接口
- 黑马程序员_面向对象_继承&抽象类
- 主机上连接到 vmware虚拟机的方式
- 架构师之路16年精选50篇
- 使用Jquery的getJSON跨域请求蘑菇街图片资源实现瀑布流
- AOP实现Spring多数据源操作
- 我的github&&Git学习资源
- 82-83_游戏项目_使用继承封装MyFrame作为以后窗口类共同父类
- 基础技术篇 7 —— NB-IoT技术(二)
- Android-APP之桌面宠物
- [leetCode刷题笔记]113. Path Sum II
- tomcat在add项目的时候,project facet java version 6.0 is not supported
- R中lines()和abline()函数
- 使用ViewFlipper实现屏幕切换动画效果
- Linux系统编程——特殊进程之僵尸进程
- Java IO 操作基础1---普通文件的相关操作