java05
RGB(红绿蓝)-
全0就是黑色,全是最高255就是白色。 //第一步类
package cn.bjsxt.test; import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; /**
* 游戏基本知识测试类
* @author dell
*
*/
public class GameFrame extends Frame {//GUI编程:AWT,swing等,AWT是落后了的,AWT不用学不是重点。java不擅长写桌面(windows)软件,擅长写手机软件和服务器端软件。 Image img = GameUtil.getImage("images/sun.jpg"); /**
* 加载窗口
*/
public void launchFrame(){
setSize(, );//画窗口要定义宽度和高度,
setLocation(, );//定义位置,窗口的左上角的坐标(相对于window桌面的左上角)
setVisible(true);//窗口可见了 new PaintThread().start(); //启动重画的线程 //增加一个窗口监听
addWindowListener(new WindowAdapter() {//WindowAdapter是匿名内部类,申明和使用在一起。
@Override
public void windowClosing(WindowEvent e) {//匿名内部类里面重写方法
System.exit();//结束当前运行虚拟机
} });
} private double x=,y=; @Override
public void paint(Graphics g) {//在窗口画东西要重写父类的方法,g就是一支笔一样。
g.drawLine(, , , );//画线,起点和终点坐标(这是以窗口的左上角为起点的,而这个窗口的坐标是以window桌面的左上角为起点的)
g.drawRect(, , , );//画矩形
g.drawOval(, , , );//画圆 Font f =new Font("楷体",Font.BOLD,);
g.setFont(f); g.drawString("我是尚学堂高琪", , );//画一个字符串 g.fillRect(, , , );//画一个实心矩形 Color c = g.getColor();//保存原来的颜色
g.setColor(Color.red);//改画笔的颜色
g.fillOval(, , , );
g.setColor(c);//改完之后又回复之前的颜色 g.drawImage(img, (int)x, (int)y, null);//图图片,图片画的坐标。 x += ;
y += ;
} /**
* 定义一个重画窗口的线程类,是一个内部类
* @author dell
*
*/
class PaintThread extends Thread { public void run(){//重写父类的方法
while(true){//一直画,直到程序关掉
repaint();
try {
Thread.sleep(); //1s = 1000ms,歇一会,不然cpu撑不住。
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} } public static void main(String[] args) {
GameFrame gf = new GameFrame();
gf.launchFrame();
} } package cn.bjsxt.test; import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL; public class GameUtil { private GameUtil(){} //工具类最好将构造器私有,里面的方法是静态方法。这样就不会new出一个对象,而是直接调用静态方法。 public static Image getImage(String path){
BufferedImage bi=null;
try {
URL u = GameUtil.class.getClassLoader().getResource(path);//返回url对象
System.out.println(u);
bi = javax.imageio.ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}
return bi;//BufferedImage是Image的子类,所以可以返回。
}
}
package cn.bjsxt.solar; import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image; import cn.bjsxt.util.GameUtil; public class Planet extends Star { //除了图片,坐标。 行星沿着某个椭圆运行:长轴、短轴、速度、角度。 绕着某个Star飞。
double longAxis; //椭圆的长轴
double shortAxis; //椭圆的短轴
double speed; //飞行的速度
double degree;
Star center; boolean satellite; public void draw(Graphics g){
super.draw(g);
move();
if(!satellite){
drawTrace(g);
}
} public void drawTrace(Graphics g){
double ovalX,ovalY,ovalWidth,ovalHeight; ovalWidth = longAxis*;
ovalHeight = shortAxis*;
ovalX = (center.x+center.width/)-longAxis;
ovalY = (center.y+center.height/)-shortAxis; Color c =g.getColor();
g.setColor(Color.blue);
g.drawOval((int)ovalX, (int)ovalY, (int)ovalWidth, (int)ovalHeight);
g.setColor(c);
} public void move(){
//沿着椭圆轨迹飞行
x = (center.x+center.width/) + longAxis*Math.cos(degree);
y = (center.y+center.height/)+ shortAxis*Math.sin(degree); degree += speed;
} public Planet(Star center,String imgpath, double longAxis,
double shortAxis, double speed) {
super(GameUtil.getImage(imgpath)); this.center = center;
this.x = center.x + longAxis;
this.y = center.y; this.longAxis = longAxis;
this.shortAxis = shortAxis;
this.speed = speed; this.width = img.getWidth(null);
this.height = img.getHeight(null); } public Planet(Star center,String imgpath, double longAxis,
double shortAxis, double speed,boolean satellite) {
this(center, imgpath, longAxis, shortAxis, speed);
this.satellite = satellite; }
public Planet(Image img, double x, double y) {
super(img, x, y);
}
public Planet(String imgpath, double x, double y) {
super(imgpath, x, y);
} } package cn.bjsxt.solar; import java.awt.Graphics;
import java.awt.Image; import cn.bjsxt.util.Constant;
import cn.bjsxt.util.GameUtil;
import cn.bjsxt.util.MyFrame; /**
* 太阳系的主窗口
* @author dell
*
*/
public class SolarFrame extends MyFrame {
Image bg = GameUtil.getImage("images/bg.jpg");
Star sun = new Star("images/sun.jpg", Constant.GAME_WIDTH/, Constant.GAME_HEIGHT/);
Planet earth = new Planet(sun, "images/earth.jpg", , , 0.1);
Planet moon = new Planet(earth, "images/moon.jpg", , , 0.3,true);
Planet mars = new Planet(sun, "images/Mars.jpg", , , 0.2); public void paint(Graphics g){
g.drawImage(bg, , , null);
sun.draw(g);
earth.draw(g);
mars.draw(g);
moon.draw(g);
} public static void main(String[] args) {
new SolarFrame().launchFrame();
}
} package cn.bjsxt.solar; import java.awt.Graphics;
import java.awt.Image; import cn.bjsxt.util.GameUtil; public class Star {
Image img;
double x,y;
int width,height; public void draw(Graphics g){
g.drawImage(img, (int)x, (int)y, null);
} public Star(){
} public Star(Image img){
this.img = img;
this.width = img.getWidth(null);
this.height = img.getHeight(null); } public Star(Image img,double x,double y){
this(img);
this.x = x;
this.y = y; } public Star(String imgpath,double x,double y){
this(GameUtil.getImage(imgpath), x, y); //通过this调用另一个构造方法
} } package cn.bjsxt.util; /**
* 游戏项目中用到的常量
* @author dell
*
*/
public class Constant {
public static final int GAME_WIDTH = ;
public static final int GAME_HEIGHT = ; } package cn.bjsxt.util; import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL; public class GameUtil { private GameUtil(){} //工具类最好将构造器私有了。 public static Image getImage(String path){
BufferedImage bi=null;
try {
URL u = GameUtil.class.getClassLoader().getResource(path);
System.out.println(u);
bi = javax.imageio.ImageIO.read(u);
} catch (IOException e) {
e.printStackTrace();
}
return bi;
}
} package cn.bjsxt.util; import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; public class MyFrame extends Frame { /**
* 加载窗口
*/
public void launchFrame(){
setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);
setLocation(, );
setVisible(true); new PaintThread().start(); //启动重画线程 addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit();
}
});
} /**
* 定义一个重画窗口的线程类,是一个内部类
* @author dell
*
*/
class PaintThread extends Thread { public void run(){
while(true){
repaint();
try {
Thread.sleep(); //1s = 1000ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} }
}
java05的更多相关文章
- java05 选择结构
public static void main(String[] args) { /* * 张浩Java成绩大于90分,老师奖励他iPhone5 ,该怎么做呢? */ Scanner scanner= ...
- java05笔记
- java-05 面向对象
class StudentDemo { String name; int age; String address; public void study(){ System.out.println(&q ...
- 重新梳理IT知识之java-05面向对象(一)
一.Java面向对象学习的三条主线: 1.Java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其他关键字:this.super.s ...
- 集合2--毕向东java基础教程视频学习笔记
Day14 08 LinkedList09 LinkedList练习10 ArrayList练习11 ArrayList练习2 12 HashSet13 HashSet存储自定义对象14 HashSe ...
- java四种内部类详解
一般来说,有4中内部类:常规内部类.静态内部类.局部内部类.匿名内部类. 一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中. 1.常规内部类中的方法可以直接使用外部类的实例变 ...
- Java:Collection List Set
Java:集合 常见集合:List Set List 特点:元素是有序的,而且元素可以重复,因为该集合体系有索引. 常见的三个子类:ArrayList.LinkedList.Verctor List集 ...
- 黑马程序员——【Java基础】——集合框架
---------- android培训.java培训.期待与您交流! ---------- 一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是 ...
- JAVA基础学习day14--集合一
一.集合的出现 1.1.集合简述 面向对象语言对事物的体现都是以对象形式,为了方便对多个对象的操作,就对象对象进行存储,集合就是存仪储对象最常用的一种试 1.2.数组和集合都是容器 数组也存对象,存储 ...
随机推荐
- hadoop异常: 到目前为止解决的最牛逼的一个异常(java.io.IOException: Incompatible clusterIDs)
(注意: 本人用的版本为hadoop2.2.0, 旧的版本和此版本的解决方法不同) 异常为: 9 (storage id DS-2102177634-172.16.102.203-50010-1384 ...
- PowerStack
int curInc; HashMap<Integer, Integer> incMap; Stack<Integer> stack; public SuperStack() ...
- Webform——验证控件
验证控件一般是在注册的时候用到,是直接将JS代码封装到了控件里面,拉过来直接可以用,下面介绍一下主要用法: 1.CompareValidator:比较验证 常用属性:ControlToCompare ...
- 深入理解c语言_从编译器的角度考虑问题_纪念Dennis Ritchie先生
开源中国: Dennis Ritchie教授过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不训的语言,今天很多语言都受到C的影 响,C++,Java,C ...
- wcf 多个节点名出错
无法加载协定为“ServiceReference1.xxxxxx”的终结点配置部分,因为找到了该协定的多个终结点配置.请按名称指示首选的终结点配置部分. 原因是config节点中多了endpoint相 ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.4
(1). The singular value decomposition leads tot eh polar decomposition: Every operator $A$ can be wr ...
- 如何监听非本地IP
做HA的时候,如果每个机器上同时需要监听多个IP的同一个端口.那么肯定是需要写死监听的IP和端口.比如在haproxy里面: frontend free bind default_backend te ...
- HashPasswordForStoringInConfigFile 已过时
在.net 4.5版本下,使用System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile进行MD5加密时,会出 ...
- 2015年10月22日CSS学习笔记
XHTML1.0对HTML4.0的改进 借鉴了XML的写法,语法更加严格. 把页面的内容和样式分离了,废弃了html4中的表示样式的标签和属性.推荐使用css来描述页面的样式. CSS样式的优先级 ! ...
- 洛谷P1220 关路灯
洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...