计算机控制系统课程设计中期报告,课程设计中期报告模板.doc

课程设计中期报告模板概要

新疆大学

信息科学与工程学院

《程序设计》课程设计中期报告

题目:

专 业 计算机科学与技术

学 生 姓 名

学 号

联 系 方 式

班 级 计算机15-班

组 员 姓 名

联 系 方 式

检 查 日 期 2016.7.29

新疆大学信息科学与工程学院

目 录

1. 课程设计内容概述1

1.1 项目来源及开发目的和意义1

1.2总体设计内容及方案1

1.3 本人所承担任务(模块)说明3

1.4 开发环境和开发工具6

1.4.1 开发语言6

1.4.2 开发工具6

1.4.3 开发环境7

1.5 项目原定进度安排7

2. 中期完成情况说明8

2.1 预定计划的执行情况8

2.2 中期工作说明及成果汇报8

2.3 存在的困难与问题13

2.4 如期完成预定任务的可能性分析13

2.5 后期工作安排14

1. 课程设计内容概述

1.1 项目来源及开发目的和意义

(以下为范例)

1.2总体设计内容及方案

(以下为范例)

本项目主要任务Run-Time Type Identification运行时类型识别Simplified Wrapper and Interface Generator)轻松实现由C/C++接口到脚本的绑定。

编辑器(editor模块),编辑器是本游戏引擎的一个集成开发环境,包括脚本的编写、调试,游戏场景的制作、游戏资源文件的制作等。这是引擎中相对复杂的一个模块。

1.3 本人所承担任务(模块)说明

(以下为范例)

本人在整个项目中的具体任务是ReferenceCounted,记录当前的引用计数并实现了加减操作并负责对引用计数降为0是对象的释放。Pointer类就是我们的智能指针类,它是一个模板类,在构造、拷贝、赋值运算、销毁时确保正确地对它所控制的Object类的指针进行增减引用计数操作。

文件系统:使用了开源库PhysFS并进行了简单的接口包装。

editor模块:

使用开源的界面库wxWidgets2.8.9进行界面的开发,选择的理由:

开源、跨平台,符合我们引擎的设计初衷。

它不仅仅是一套界面库,还提供了一些其他的平台无关的类库。

它使用操作系统的原生控件。

众多的contrib库和辅助开发程序,并且有Code::Blocks等IDE也是使用它来开发的。

编辑器的总体设计:

图-1 编辑器组成示意图

编辑器主要功能使用动态库的方式实现,并对外提供一套API接口,主程序通过调用此动态库来完成相应的功能,并且主程序提供编辑器的主要的UI框架与用户交互。为什么不将两者合在一起实现呢?这是因为我们的编辑器要支持扩展,支持扩展的代价就是要对外开放接口,而开发接口的最好的方法就是动态库。这样第三方扩展插件便可以轻松地使用编辑器的接口来完成它的功能,但它也必须遵从一定的规范才能被编辑器的主程序识别并顺利地加载,这个规范就是:插件一定要实现“插件接口”,编辑器内留出了多种支持的插件类型的接口,如:调试器插件用于对脚本语言的调试、向导插件用于新建某一类型的文件、文件类型处理插件用于对特定类型的文件进行编辑(材质编辑、粒子编辑、UI编辑都属于这种类型)。

编辑过程中与用户的交互是无法避免的,如何把在编辑过程中用户触发的事件在编辑器和插件之间以及插件和插件之间传递需要由一个系统来处理——事件系统:

图-2 编辑器事件系统示意图

用户进行编辑操作时会触发编辑器内部的事件,事件进入编辑器的事件处理系统,处理系统根据其类型查找相应的EventSinks,然后依次调用注册的回调函数将消息分派下去处理。这样一些插件就可以通过注册某些关心的事件的回调函数来响应用户操作。

要实现相同的功能还有另一种方式:为每一个类型的事件写一个虚函数,由插件继承并实现此接口,利用C++的多态特性来实现。相比较而言,我们的处理方式更加灵活,并且性能更好(因为多层次的继承C++的虚函数表会造成性能问题)。

调试器的实现:调试有2种实现方式:单进程使用线程调试和多进程使用进程间通信的方式。

方式一:容易编码,但需要保证调试和运行能够“友好”地相处,我们的编辑器不满足这种条件,编辑器和游戏是两个不同的进程,并且编辑器本身也使用游戏的一些库,着非常容易造成资源的混乱。

方式二:必须进行进程间的通信,进程间的通信又主要有三种方式:管道、共享内存、套接字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值