下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何运用java程序设计创建移动图形(碰撞检测)

作者:课课家教育     来源: http://www.kokojia.com点击数:1397发布时间: 2018-11-23 09:09:05

标签: JAVA游戏设计JAVA游戏制作

大神带你学编程,欢迎选课

  如何运用java程序设计创建移动图形(碰撞检测)

  在上一节的教程中,如何运用java程序设计认识了运动的控制,那么现在我们在深入去制作,那么就是对于碰撞检测吧。

  在游戏中判断物体是否碰撞到其他物体,是一个非常重要的知识点,例如子弹碰到飞机,小球碰到墙壁,贪吃蛇碰到障碍物等。

  阅读课本碰撞检测部分,碰撞检测主要靠判断两个物体,是否有重叠部分来进行。

  下面我们用一个运动过程中,碰到墙壁会反弹的例子,来说明碰撞检测的方法。

  我们可以将上一节课的MyPanel改成下面的代码,可以实现小球碰到墙壁时反弹:

import java.awt.*;

import java.awt.image.*;

import java.util.*;

public class MyPanel extends Panel implements Runnable {

    private int x;

    private int y;

    private int dx,dy;

    private int diameter;

    private int width;

    private int height;

    private Image im;

    private Graphics dbg;

 

 

    public MyPanel() {

        x=50;

        y=50;

        dx=10;dy=10;

        diameter=50;

        width=300;

        height=200; 

        setPreferredSize(new Dimension(width, height));//设置组件的大小

 

    }

 

 

    public void gamePaint() { //前屏绘制

        Graphics g;

        try {

            g = this.getGraphics(); //获取当前屏幕的Graphics对象

            if (g != null && im != null) {

                g.drawImage(im, 0, 0, null);//将图像缓冲区中的内容复制到前屏缓冲区,显示出来

            }

            g.dispose();//释放当前屏幕的Graphics对象

        } catch (Exception e) {

        }

    }

 

    public void gameRender() { //离屏绘制

        if (im == null) {

            im = createImage(width, height);

            if (im == null) {

                System.out.println("im is null");

            } else {

                dbg = im.getGraphics();

            }

        }

        dbg.setColor(Color.WHITE);

        dbg.fillRect(0, 0, width, height);//用底色矩形填充画版,擦去图案

        dbg.setColor(Color.blue);

        dbg.fillOval(x, y, diameter, diameter); //画出椭圆

    }

 

    public void gameUpdate() { //更新游戏逻辑

    x=x+dx;

    y=y+dy;

    if((x<0)||(x>width-diameter)){

    dx=-dx;

    }

    if((y<0)||(y>height-diameter)){

    dy=-dy;

    }  

    }

    

    public void run() {

     while(true){

        gameUpdate();

        gameRender();

        gamePaint();

        //以下我们用一个延时函数代替空循环来延时,sleep(10)中的数字代表延时毫秒,数字越小越快

        try {

            Thread.sleep(200);} //括号里面的10代表10毫秒,也就是0.001秒,可以该成你需要的时间

        catch (InterruptedException e) {

            e.printStackTrace();}          

        }

   }

}

  温馨提醒大家:注意,(最好分步骤实现,先实现水平方向方画出两条直线,让小球左右反弹,再实现画四条直线,斜向反弹)。

如何运用java程序设计创建移动图形(运动的控制)_JAVA游戏设计_JAVA_游戏制作_课课家

  最后给大家一个练习,让大家可以在原基础上进行游戏的修改,并且学会如何去运用与修改。

  练习5:能否在上题的基础加上一个红色小球,让一蓝一红两个小球在窗口中弹动,如果两个小球相互碰到,就反弹开.(自己先试一下,做不出再参考”两小球碰撞.doc”)

  小编结语:大家在学完了如何运用JAVA程序设计创建移动图形(碰撞检测),大家有什么感想呢?希望大家能够好好学习程序设计,这对于我们以后的生活是非常有用的。

赞(20)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程