java 太阳系模型练习3-- 行星运行轨迹练习
package solar;
import util.GameUtil;
import java.awt.*;
/**
星球的共同属性
*/
public class Star {//Star星
Image img;
double x,y;
int width,height;//创建方法 :draw画;Graphics制图
public void draw(Graphics g){//画图
g.drawImage(img,(int)x,(int)y,null);}
//2:创建空构造器
public Star() {
}
//4:
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.img = img;
this.x = x;
this.y = y;
}
//获取图片路径 用这个
public Star(String imgpath,double x,double y){this(GameUtil.getImage(imgpath),x,y);
}
/public Star(Image img, double x, double y, int width, int height) {
this.img = img;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}/
}
//-----------------------------------------------------------
package solar;
import util.GameUtil;
import java.awt.*;
/**
Planet行星
*/
public class Planet extends Star{//提示增加构造器
//行星自己还有特点; 行星有椭圆运行,长轴,短轴,速度;围绕某个星球运行
Star center;//围绕某个星球运行;center中心
double longAxis;//椭圆长轴
double shortAxis;//椭圆短轴
double speed;//速度
double degree;//角度
//5:
boolean satellite;//satellite卫星//3:这里重写父类方法;Star()父类里有,这里需重写;
//5:
public void draw(Graphics g) {
//4: g.drawImage(img, (int) x, (int) y, null);//强制转型
super.draw(g);
//5:x , y;移到move类//沿着椭圆轨迹飞行
/* x = (center.x + center.width / 2) + longAxis * Math.cos(degree);
y = (center.y + center.height / 2) + shortAxis * Math.sin(degree);
//每次循环后变量逐渐增加
degree += speed;
*/
move();//调用
//5:加判断
if(!satellite){
drawTrace(g);
}}
//4:Trace轨迹
public void drawTrace(Graphics g){
double x2,y2,width2,height2;//椭圆的变量
//算坐标
width2 = longAxis2;
height2 = shortAxis2;
x2 = (center.x+center.width/2) - longAxis;
y2 = (center.y+center.height/2)-shortAxis;//设颜色Color c = g.getColor();//原来的颜色g.setColor(Color.blue);//蓝色g.drawOval((int)x2,(int)y2,(int)width2,(int)height2);//需要强转g.setColor(c);
}
//4:创建新的方法;move 移动
public void move(){
//沿着椭圆轨迹飞行
x = (center.x+center.width/2)+longAxisMath.cos(degree);
y = (center.y+center.height/2)+shortAxisMath.sin(degree);
//每次循环后变量逐渐增加
degree += speed;
}
//2:给上面属性创建构造器;
public Planet(Star center,String imgpath, double
longAxis, double shortAxis, double speed) {
super(GameUtil.getImage(imgpath));//super上级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);
}
//5:添加卫星后的构造器
public Planet(Star center,String imgpath, double longAxis,
double shortAxis, double speed,boolean satellite) {
this(center, imgpath, longAxis, shortAxis, speed);
this.satellite = satellite;
}
//5:创建构造器
public Planet(Image img, double x, double y) {
super(img, x, y);
}
//5:创建构造器
public Planet(String imgpath, double x, double y) {//直接调用父类
super(imgpath, x, y);//super上级
}
}
//---------------------------------------------------------
package solar;
import util.Constant;
import util.GameUtil;
import util.MyFrame;
import java.awt.*;
/**
太阳系主窗口
*/
public class SolarFrame extends MyFrame {
Image bg = GameUtil.getImage(“images/bg.jpg”);
// 创建太阳对象;调用Constant常量类;Constant.GAME_WIDTH/2, Constant.GAME_HEIGHT/2:中心点
Star sun = new Star(“images/sun.jpg”, Constant.GAME_WIDTH/2,Constant.GAME_HEIGHT/2);
//earth地球
Planet earth = new Planet(sun,“images/earth.jpg”, 150, 100, 0.1);
//5:给地球添加卫星
Planet moon = new Planet(earth,“images/moon.jpg”, 15, 30, 0.07,true);//去掉轨迹//5:添加行星 mars火星
Planet mars = new Planet(sun,“images/Mars.jpg”, 200, 130, 0.09);
//按照离太阳的距离从近到远,它们依次为水星、金星、地球、火星、木星、土星、天王星、海王星。八大行星
//6:水星
Planet mercury = new Planet(sun,“images/mercury.jpg”, 100, 60, 0.2);
//6:金星
Planet venus = new Planet(sun,“images/venus.jpg”, 130, 80, 0.15);
//6:木星
Planet jupiter = new Planet(sun,“images/jupiter.jpg”, 220, 160, 0.08);
//6:土星
Planet saturn = new Planet(sun,“images/saturn.jpg”, 250, 200, 0.07);
//6:天王星
Planet uranus = new Planet(sun,“images/uranus.jpg”, 280, 220, 0.06);
//6:海王星
Planet neptune = new Planet(sun,“images/neptune.jpg”, 300, 250, 0.05);public void paint(Graphics g) {
g.drawImage(bg, 0, 0, null);// 背景
sun.draw(g);// 把背景传进去
earth.draw(g);//5:调用mars.draw(g);moon.draw(g);//6:mercury.draw(g);venus.draw(g);jupiter.draw(g);saturn.draw(g);uranus.draw(g);neptune.draw(g);
}
public static void main(String[] args) {
new SolarFrame().launchFrame();}
}
//---------------------------------------
java 太阳系模型练习3-- 行星运行轨迹练习相关推荐
- HTML+CSS 绘制太阳系各个行星运行轨迹
模拟宇宙太阳系 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...
- CSS 绘制太阳系各个行星运行轨迹
效果图 原理 行星沿着自身轨道旋转. 设置盒子,宽高均为800px,采用相对定位. 太阳绝对定位到盒子中间. 地球轨道盒子,宽高250px为圆形,背景色透明,加一个灰色边框,就是地球轨道, 绝对定位, ...
- 太阳系行星运行轨道图,C语言,源代码分享
[精选]太阳系八大行星运转轨迹程序,C语言,源代码分享 目录 [精选]太阳系八大行星运转轨迹程序,C语言,源代码分享 程序展示 一.项目环境 简单介绍一下easyx图形库 Easyx图形库 二.运行效 ...
- 天体运行轨迹_海王星轨道外发现139个新天体, 能揭开太阳系第九颗行星奥秘?...
美国天体物理学家在距太阳最远的海王星轨道外发现139个新天体 有助揭开太阳系第九颗行星奥秘 (神秘的地球uux.cn报道)据东网:自天文学家把冥王星降格为矮行星后,太阳系只余下八大行星.美国有天体物理 ...
- 用java画太阳图_使用Java制作太阳系模型(3)
开发工具与关键技术:MyEclipse 10.JAVA 作者:曾浩源 撰写时间:2019年04月22日 做任何程序都离不开良好的封装,封装好自己代码,到时候传变量到方法,即可一步到位.像太阳系,虽然它 ...
- HTML+CSS绘制太阳系九大行星运行轨迹
HTML+CSS绘制太阳系九大行星运行轨迹 最近正在菜鸟教程学习前端的相关知识,学习过程中发现这个项目比较有趣且知识涵盖比较多,所以就写篇博客记录一下,方便以后查看.这是我第一次写技术博客,如遇有缘人 ...
- java编写太阳_java绘图--太阳系模型
java绘图在工作中使用的并不是很多,但是从这种小程序中用到很多基本知识和编程理念,最重要的是,可以很快的看到效果,体会到学习java的乐趣,不像C语言那样,学了很久却不知道学了有什么用,在枯燥的学习 ...
- js制作的炫酷3D太阳系行星运行效果
想象着打开网页就能浏览太阳系行星的运行情况,促进我们更好的了解这个宇宙星空,于是找到了这样一段代码可以完美的实现这个功能,通过css和js就可以实现在网页上展示一个完美的太阳系行星的运行情况,效果炫酷 ...
- 天体运行轨迹_太阳系内天体的运行轨迹是什么?开普勒为什么这么伟大?
哥白尼的日心说在近代科学发展史上具有重大的革命意义.但由于受到历史条件的限制,这一理论也存在着不可避免的缺点和错误.臂如说,哥白尼认为行星运动的轨道是圆形的,因为轨道应当是"完美的" ...
最新文章
- FPGA(1)基础入门 -- 按键控制led灯
- 求解线性最小二乘问题的奇异值分解及广义逆法的C++实现
- 国学早教视频 16G
- 开学测试代码——需求征集系统
- C# -- 多线程向同一文件写入
- ios如何获取gps坐标(定位第二节)
- linux shell脚本链接操作符,Shell脚本中的操作符
- activemq中怎么知道推送消息是否成功_消息队列面试,你能顶得住面试官这波10大连环炮的攻势吗?...
- 录像机CIF、D1、720P、960P、1080P分辨率及硬盘所占空间
- 计算机网络原理(04741)第1章:计算机网络概述
- android 使用adb命令安装安卓apk包
- 市政管理学(试题及答案)汇总
- 【RabbitMQ】SpringBoot的RabbitMQTemplate实战
- vue项目报错[Vue warn]: Property “visible“ must be accessed with “$data.visible“ because properties start
- 清北学堂2018noip集训D1
- ios逆向工具 theos tweak多文件使用方法
- oracle 按照中文姓首字母排序,按照偏旁部首,笔画排序 sql
- html怎么设置左侧内边距,CSS 内边距(Padding)
- linux下github上传文件,linux下将本地文件上传到github中?
- 端到端与点到点的区别
热门文章
- 下面为子代选择器结合符的是_奥鹏2014秋福建师范大学《语言学概论》在线作业一答案...
- 中级软考证书有什么作用?
- 【基础算法】开平方算法 C++实现
- 用Python轻松生成二维码,让生活更便捷!
- 【操作系统】分段存储管理方式
- 大学英语四六级准考证号找回最新教程!
- 给大家推个社群管理软件?
- 硬件钱包linux安装,使用Trezor硬件钱包管理Omni版USDT教程
- 计算机绘图课程绘图模式主要有,关于“计算机绘图”课程教学研究的探索
- 淘集集打单软件那个好?那个打单软件能批量打单?