第79集:游戏项目1_动画的实现
本集知识点
-
一段用于画线程的代码
/** * * 定义一个重画窗口的线程类,是一个内部类 * */ class PaintThread extends Thread { public void run() { while(true){ repaint(); try { Thread.sleep(40); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //1s=1000ms } } }
动画实现的原理是,坐标的变化。
第80集:游戏项目1_物体的水平和纵向移动
本集知识点
直接在eclipse里复制java文件,eclipse可以直接连同类名都给改过来
-
回弹的原理是在特定坐标改变坐标+或者—。
private double x=100,y=100; private boolean left,up; @Override public void paint(Graphics g) { g.drawImage(img,(int)x,(int)y,null); // if(left){ // x -= 3; // } else { // x += 3; // } // if(x>500-30){ // left = true; // } // if(x<0){ // left = false; // } if(up){ y -= 3; } else { y += 3; } if(y>500-100){ up = true; } if(y<30){ up = false; }
第81集:游戏项目1台球游戏核心功能开发物体沿着任意角度飞行和停止
-
物体碰到窗口边界弹回来的原理
g.drawImage(img,(int)x,(int)y,null); x += 10*Math.cos(degree); y += 10*Math.sin(degree); if(y>500-30||y<30){ degree = -degree; } if(x<0 || x>500-30){ degree = Math.PI-degree; }
-
物体逐步减速
private double x=100,y=100; private boolean left,up; private double degree = 3.14/3;//[0,2PI] private double speed=10; @Override public void paint(Graphics g) { g.drawImage(img,(int)x,(int)y,null); x += speed*Math.cos(degree); y += speed*Math.sin(degree); if(speed>0){ speed -= 0.05; } else { speed = 0; } if(y>500-30||y<30){ degree = -degree; } if(x<0 || x>500-30){ degree = Math.PI-degree; }
第82-83集:游戏项目1_椭圆轨迹的实现_使用继承封装MyFrame作为以后窗口类共同父类
用一个父类,避免代码重复。
用一个Constant类,存放常量。
-
椭圆轨迹的生成
package com.test077; 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 wangtao * 测试窗口物体沿着各种路径移动 */ public class GameFrame05 extends MyFrame { Image img = GameUtil.getImage("images/plane.jpeg"); //画笔类,这个地方用了回调 private double x=100,y=100; private double degree = 3.14/3;//[0,2PI] @Override public void paint(Graphics g) { g.drawImage(img,(int)x,(int)y,null); x += 10*Math.cos(degree); y += 5*Math.sin(degree); degree += 0.1; } public static void main(String[] args){ GameFrame05 gf = new GameFrame05(); gf.launchFrame(); } }