第六次作业

本篇介绍如何在3D游戏中应用Adapter模式,整合物理运动与运动学运动,以增强飞碟游戏的交互性和真实感。通过切换动力学与运动学动作管理器,实现飞碟抛物线运动与坐标变化的模拟。

3D游戏编程与设计 第六次作业

编程题

改进飞碟(Hit UFO)游戏:

游戏内容要求:
按 adapter模式 设计图修改飞碟游戏
使它同时支持物理运动与运动学(变换)运动

上次作业用到的代码文件:
Action:动作管理器
Controller:场景控制器
DiskData:飞碟数据
DiskFactory:管理飞碟的生产、销毁
Model:搭建基础场景
ScoreRecorder:记录分数
View:GUI界面的生成

在上次作业的基础上,分解了Action动作管理器——
ActionInterface:运动学/动力学动作管理器的共用代码部分
ActionManagerAdapter:提供两个动作管理器的切换
DynamicsAction:动力学动作管理器(通过给飞碟施加作用力来模拟飞碟作抛物线运动)
KinematicsAction:运动学动作管理器(通过改变飞碟坐标来模拟飞碟作抛物线运动)

除此以外,还要给预制的disk添加rigidbody组件,从而实现添加作用力的操作(还要在Collider组件中选上“is trigger”属性以避免两个飞碟发生碰撞)
在这里插入图片描述
在main camera中的Controller脚本里有个switch_phy的复选框,在两个动作管理器之间进行切换。
在这里插入图片描述
有关代码的细节请转至Github:
项目传送门

### Python 第六次作业题目及要求 #### 一、课程复习与巩固 为了帮助学生更好地掌握所学的知识,第六次作业通常会涉及之前学习过的重要概念和技术。这可能包括但不限于函数定义、模块导入以及面向对象编程的基础。 对于具体实现方面,在此提供一个基于面向对象的学生管理系统的简化版本作为例子[^3]: ```python class Student: def __init__(self, name, age, grade): self.name = name self.age = age self.grade = grade def display_student(self): return f'Name: {self.name}, Age: {self.age}, Grade: {self.grade}' students_list = [] def add_student(): student_name = input('Enter the new student\'s name:') student_age = int(input('Enter the new student\'s age:')) student_grade = float(input('Enter the new student\'s grade:')) students_list.append(Student(student_name,student_age,student_grade)) def list_students(): for i in range(len(students_list)): print(f'Student No.{i+1}:',end=' ') print(students_list[i].display_student()) add_student() list_students() ``` 上述代码展示了如何创建`Student`类并利用它来进行简单的增删改查操作。当然实际应用中还需要考虑更多细节比如异常处理等。 #### 二、综合实践——开发小型应用程序 鼓励同学们尝试构建一个小规模的应用程序来解决现实生活中的某个问题或模拟某种场景。例如可以参考纸牌游戏的设计思路[^2],通过编写Python脚本来完成特定功能的游戏逻辑;也可以继续深化前面提到的学生管理系统,增加更多的交互性和实用性特性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值