Android游戏编程实验:射击游戏开发与音乐播放功能实现

需积分: 0 0 下载量 149 浏览量 更新于2024-06-30 收藏 10.31MB DOCX 举报
"16337341_朱志儒_游戏实验1 - Android游戏编程,学习Android多媒体编程、服务、广播、画布和SurfaceView" 在这个实验中,学生朱志儒将深入学习Android游戏编程,特别是涉及MediaPlayer、Service、Broadcast、Canvas和SurfaceView的相关知识。实验的主要目标是开发一个可以在不同屏幕尺寸的手机上实现多人对战的射击游戏应用。 首先,实验者需要了解并分析SpaceBattle.mp4这个游戏示例,以及尝试运行老师提供的apk,以便对游戏的运行机制有直观的理解。 在编程过程中,重要的一点是使用虚拟单位来定义游戏元素的位置和尺寸,如x、y坐标,width和height等,这样可以在不同分辨率的设备上保持一致性。当需要在屏幕上显示时,再将这些虚拟单位转换为实际的像素值。此外,处理用户点击事件时,也需要将屏幕坐标转换为虚拟坐标。 实验内容的第一部分是实现音乐播放功能,即MusicPlay项目。这个功能将音乐播放逻辑封装在一个IntentService中,通过BroadcastReceiver接收消息来控制音乐的播放和停止。开机启动广播接收器被配置来响应ACTION_BOOT_COMPLETED和ACTION_USER_PRESENT这两个系统广播,确保服务能够在设备启动或用户解锁屏幕时自动运行。为了能够接收来自其他应用的广播,实验者需要添加额外的action。MediaPlayer实例应被声明为静态,以防止每次启动服务时创建新的线程播放音乐。 实验者需要参考的课程资料包括多媒体编程.pdf,其中介绍了如何使用MediaPlayer;服务消息和广播.pdf,涵盖了IntentService、BroadcastReceiver以及常见的系统广播;还有列表和布局.pdf,这部分可能涉及Spinner组件的使用,使得用户可以通过Spinner选择音乐并控制播放状态。 参考项目包括MediaPlayer、NewBroadcastReceiver、NewBroadcastSender、NewIntentService和SpinnerStat,这些都是为了实现音乐播放功能和广播交互的关键组件。 通过这个实验,朱志儒不仅会掌握基本的游戏编程技术,还会深入了解Android服务、广播和多媒体处理的高级概念,为开发更复杂的游戏应用打下坚实基础。

优化:def generate_data(add_user): # 学/工号 id_num = random.randint(100000, 999999) # 姓名 first_names = ['张', '王', '李', '刘', '赵', '陈', '周', '钱', "孙", "吴", "曾", "冯", "陶", "将", "黄", "胡", "朱", "杨", "江", "何"] s_names = ['云', '风', '山', '河', '林', '羽', '行', "雪", '月', '雨', '冰', '雷', '鞥', '时', '文', '代', '格', '台', "发", '方', '欧', '白'] l_names = ['雷', '鞥', '时', '文', '代', '格', '台', "发", '方', '欧', '白'] name = random.choice(first_names) + random.choice(s_names) + random.choice(l_names) # 性别 gender = random.choice(['男', '女']) # 身份 identity = random.choice(["学生"]) # 部门 department = random.choice( ["20230608094700005793941100036910"]) # 手机号 phone_num = '1' + str(random.randint(3, 9)) + ''.join(str(random.randint(0, 9)) for _ in range(9)) id_types = ['身份证', '护照', '驾驶证', '学生证', '工作证'] if add_user: id_type = random.choice(id_types) if id_type == '身份证': id_num = ''.join(str(random.randint(0, 9)) for _ in range(18)) elif id_type == '护照': id_num = ''.join(str(random.randint(0, 9)) for _ in range(9)) elif id_type == '驾驶证': id_num = ''.join(str(random.randint(0, 9)) for _ in range(12)) elif id_type == '学生证': id_num = ''.join(str(random.randint(0, 9)) for _ in range(10)) else: id_num = ''.join(str(random.randint(0, 9)) for _ in range(8)) return [id_num, name, gender, phone_num, identity, department, phone_num, id_type, id_num] else: return [name, gender, identity, department, phone_num]

2023-06-09 上传