zoukankan      html  css  js  c++  java
  • Java课设总结(个人版)

    1.小组博客地址

    (https://www.cnblogs.com/fanfaniscute/p/12173375.html)

    2.本组课题/本人任务

    1. 使用物理引擎JBox2D完成游戏关卡的各个物理状态模拟
    2. 根据物理引擎设计Bird,Pig,Brick等游戏中出现的可运动刚体类
    3. 建立JBox2d的工具类以实现

    本人对这次课设的看法与吐槽

    课设内容的脑洞是我在看完17级学长的游戏课设之后想出的
    当时还没学java网络编程的内容,误以为java课设只能做游戏(然后一路头铁到底)

    在前期准备的时候参考的基础代码和郑老师博客中的参考资料南洋理工Java Game Programming
    前者的代码仅使用了碰撞检测,无法对物体的实际运动状态进行模拟
    后者使用物理公式模拟了运动轨迹,利用圆的各向性质相同实现了圆形的碰撞后反向运动,而愤怒的小鸟游戏中各向性质相同的物体并不存在

    于是当时在前期调查报告中加了这句话

    天真的认为物理引擎是简单物理公式/数学公式进行编写碰撞,旋转等操作的代码
    下载了一个JBox2D的jar包,找不到文档,就先扔着了(并不知道将要面对什么)

    直到发现JBox2D的示例代码也基本没有时,到github下载了源码,才发现自己工作量远超想象

    3.物理引擎JBox2D简介/分析

    JBox2D是开源的物理引擎Box2D的Java版本
    该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数和弹性系数等,对2D刚体物理运动的全方位模拟
    安卓版的愤怒的小鸟也是依赖JBox2D引擎

    3.1 JBox2D引擎的主要类

    Vec2类 二维矢量

    World类 世界

    Body类 刚体

    BodyDef类 刚体描述

    Fixture 夹具

    FixtureDef 夹具描述

    CircleShape 圆形

    PolygonShape 多边形

    包含关系

    4.JBox2D在本项目的使用

    对物理引擎的调用架构参考(CSDN博客)[https://blog.csdn.net/cre2017/article/details/81268995]

    该博客使用的JBox2D版本已过时,大部分对物理引擎的调用方法已失效,已通过阅读新版源码的方式修正这些方法
    只有球类的自由落体演示,并且作者对Jbox2d方面的内容不再更新
    刚体绘制无法进行旋转,自行研究了如何进行刚体随实际运动
    但是作为唯一的一份找到的帮助我理解JBox2D引擎的代码,对作者还是十分感谢
    Conf类:配置参数

    存储构建世界/画布时使用的常量

    抽象类MyFrame 继承自JFrame

    属性:
    AABB aabb //规定世界范围

    World world //模拟的物理世界

    ArrayList bodyList //刚体集合

    MyBody类

    DrawThread类 继承自Thread
    绘制线程,同步启动鼠标监听器

    Gview 类 继承自JPanel
    设置背景,启动绘制线程

    Box2dUtil类
    根据JBox2d引擎进行Body的组装

    MymouseListener类
    根据鼠标点击创建并发射bird类

    MyBrickBody类
    矩形刚体及绘制方法

    MyCircleBody类
    圆形刚体及绘制方法

    Bird类 继承自MyCircleBody
    设置图片与hp

    Pig类 继承自MyCircleBody

    Wall类 继承自MyBrickBody类

    Brick类 继承自MyBrickBody类

    5.存在的问题

    对物理引擎的理解仍然不够深入,部分操作短时间内不能实现
    存在无法无法解决的bug,github上已经开源的代码与依赖jar包版本不匹配,对问题发生处朔源失败
    课设时间(一周)实在太短,只完成了勉强能动的游戏内容

  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/kisamko/p/12172427.html
Copyright © 2011-2022 走看看