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的更多相关文章

  1. java05 选择结构

    public static void main(String[] args) { /* * 张浩Java成绩大于90分,老师奖励他iPhone5 ,该怎么做呢? */ Scanner scanner= ...

  2. java05笔记

  3. java-05 面向对象

    class StudentDemo { String name; int age; String address; public void study(){ System.out.println(&q ...

  4. 重新梳理IT知识之java-05面向对象(一)

    一.Java面向对象学习的三条主线: 1.Java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其他关键字:this.super.s ...

  5. 集合2--毕向东java基础教程视频学习笔记

    Day14 08 LinkedList09 LinkedList练习10 ArrayList练习11 ArrayList练习2 12 HashSet13 HashSet存储自定义对象14 HashSe ...

  6. java四种内部类详解

    一般来说,有4中内部类:常规内部类.静态内部类.局部内部类.匿名内部类. 一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中.   1.常规内部类中的方法可以直接使用外部类的实例变 ...

  7. Java:Collection List Set

    Java:集合 常见集合:List Set List 特点:元素是有序的,而且元素可以重复,因为该集合体系有索引. 常见的三个子类:ArrayList.LinkedList.Verctor List集 ...

  8. 黑马程序员——【Java基础】——集合框架

    ---------- android培训.java培训.期待与您交流! ---------- 一.集合框架概述 (一)集合框架中集合类关系简化图 (二)为什么出现集合类? 面向对象语言对事物的体现都是 ...

  9. JAVA基础学习day14--集合一

    一.集合的出现 1.1.集合简述 面向对象语言对事物的体现都是以对象形式,为了方便对多个对象的操作,就对象对象进行存储,集合就是存仪储对象最常用的一种试 1.2.数组和集合都是容器 数组也存对象,存储 ...

随机推荐

  1. ANDROID_MARS学习笔记_S01原始版_016_Service

    一.代码1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  2. Delphi实现多个图像相互覆盖时无内容处点击穿透

    http://www.52delphi.com/list.asp?ID=1405 CM_HITTEST是Delphi自定义的控件消息

  3. 【图片处理】cocos2dx png图片压缩处理

    一.介绍 美术用photoshop出图有时候会包含一些无用的信息,这时候image magick可以把这些信息裁掉. 二.使用方法 1.下载并安装Image Magick 2.将脚本里的目录名改成Im ...

  4. CP_THREAD_ACP与CP_ACP

    在使用MultiByteToWideChar的时候,大部分都知道上述两个参数,MSDN上的解释也是简单到极致.通常我们会选择使用CP_ACP,但是总有人会在没有真正明白它们之间的区别前使用CP_THR ...

  5. linux 失败无连接 检查电缆吗

    将BOOTPROTO=dhcp改成 BOOTPROTO=static 改成手动获取IP的模式 原因: 虚拟机中的Linux目前是默认设成的自动获取IP设置,但你的网络中没有DHCP服务,所以会显示“正 ...

  6. [c#美味] Guid ToString 格式知多少?

    在日常编程中,Guid是比较常用的,最常见的使用就是如下所示: string id = Guid.NewGuid().ToString(); 这条语句会生成一个新的Guid并转成字符串,如下: // ...

  7. powerdesigner导出SQL时大写转换

    打开物理模型,点击菜单“Tools->Execute Commands -> Edit/Run Script...",或者快捷键(Ctrl+Shift+X)执行下面vbscrip ...

  8. [King.yue]EXT.NET TextFieldFor添加正则表达式

    EXT.NET TextFieldFor添加正则表达式以及提示用法 例:Html.Y().TextFieldFor().Regex("此处添加正则表达式") .InvalidTex ...

  9. Create Dynamic Modal Dialog Form in AdminLTE Bootstrap template

    原文地址 Create modal dialog form in jquery using bootstrap framework, slightly different from the usual ...

  10. linux下的rbenv和rails安裝

    今天是周一,我到新公司的第14天,今天继续linux下ruby和rails环境变量的配置. 首先碰到的问题是 主要看ubuntu下安装rbenv,ruby,rails开发环境, http://blog ...