Project 2: CS61BYoG

news2024/10/5 18:30:45

Project 2主要分为两个部分:phase 1(World Generation)和 phase 2(Interactivity)。
最难的个人认为是phase 1中的生成随机地图的算法。这里也主要总结以下phase1。

自己一开始在这个位置卡了一天,一开始做lab5,还感觉还好,因为老师已经把方法说出来了,代码量并不大。

而phase 1 只列出了相关需求,思路要自己想。有点吃不消。现在看来,当时总想着一股脑把地图生成,并没有思考怎么一步步生成地图(细分步骤)。这个也是能够完成这个proj的关键方法。
在这里插入图片描述

我最终的phase1思路如下:

  1. 首先生成任意数量的、大小不同、不相交的房间;
    请添加图片描述

  2. 然后通过L型走道将相邻的房间两两连接;
    请添加图片描述

  3. 最后再将房门、人物添加到地图上。

请添加图片描述
代码太多,就不贴了。。。

这里最难想的是添加L型走道,我的做法是:在第一步中生成的房间全部放在List中,然后将按x坐标排好序。把L型走道分解为竖直和水平走道,分别实现这两种走道。然后将通过遍历List中已排好序的房间,每次选择两个房间,各自选择一个随机的坐标,最后通过L型走道连接两个房间里的随机坐标。

遍历完房间后,因为总是相邻的两个房间相连,也就能保证房间之间一定是连通的。

完成phase1后,然后通过lab 6 熟悉以下StdDraw的使用方法,以及弄懂如何分解游戏运行过程,再去做phase 2,就好多了。

请添加图片描述

这里讲了Serializable 接口的使用方法,phase 2的Saving And Loading 部分用得到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android动态代理源码分析

前言 前面我们简单介绍了代理模式的使用Android设计模式详解之代理模式,我们也明白了动态代理模式的重要性,那动态代理究竟是如何实现将方法交给InvocationHandler.invoke执行的呢?本文就从源码的角度一步步去探究这个问题; 源码…

开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务

Grapecity 提供软件开发技术和低代码平台 通过各类软件开发工具和服务 提升开发效率 推动软件产业发展 葡萄城研发各类开发控件和 商业智能报表工具 提供控件技术和数据分析工具 基于专业控件的技术积累 发布低代码开发平台 开发商介绍 葡萄城成立于1980年&#xff0c…

C# XML基本操作

一 XML的内容 二 XML的处理方式 1 DOM 文档对象模型(Document Object Model) 2 SAX XML解析的简单API(Simple API for XML) 3 .NET提供了XML支持:System.XML名称空间 三 常用的XML类 1 XmlDocument .LoadXml()…

linux安装mongodb的详细教程

目录 一、下载MongoDB Community Server(社区版) 三、启动mongodb 四、利用配置文件启动mongodb服务 一、下载MongoDB Community Server(社区版) 1.1、下载地址 Download MongoDB Community Server | MongoDB 1.2、选择安装版本 二、上传下载后的mongodb安装包,如…

vue路由写法小结

咱们先说路由的匹配语法,动态路由在项目中经常用到,在某些情况下我们要对路径参数进行正则表达式校验。 基础用法: 使用正则表达式后(仅匹配数字): 加入*传入多个params参数,此时参数可以传多个…

使用Nordic的nrf52832进行主从机连接抓包分析

主机使用例程:nRF5_SDK_17.1.0_ddde560\examples\ble_central\ble_app_blinky_c\pca10040\s132\arm5_no_packs 从机使用例程:nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_blinky\pca10040\s132\arm5_no_packs nrf528321. 空中数据包格式1.…

基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备

文章目录一、前言二、系列文章三、替换部分3.1 自动分配设备号3.2 自动创建设备四、解析:完整源码4.1 helloworld_amlogic_char_driver_auto_mknode.c4.2 Makefile五、编译执行(1)编译及部署(2)加载ko文件(…

HCIP作业三

文章目录一,建立拓扑图1,目的:实现全网可达二,在OSPF1区域1,所有路由器配置IP地址(包含OSPF100区域)2,进行O1的宣告,不能宣告ISP网段3,在O1区域的R3写缺省去I…

MIT6.830-2022-lab3实验思路详细讲解

文章目录一、实验概览二、实验过程成本估算(Cost Estimation):基数和选择率Exercise 1: IntHistogramExercise 2: TableStatsExercise 3: Join Cost EstimationExercise 4: Join Cost EstimationExtra Credit总结一、实验概览 对于这次lab&a…

尚医通-数据字典接口-前端列表(十三)

目录: (1)数据字典接口-需求和准备 (2)数据字典接口-列表 (3) 数据字典前端-列表 (1)数据字典接口-需求和准备 前面我们完成了医院设置模块的开发,现在来…

js数组篇

数组定义 var arr1new Array(33,44,55,66); var arr2[A,B,C,D]; var arr3new Array(4); 数组常用方法 splice()方法用于替换数组中的指定项 splice(3,2,X,Y,Z):从下标为3的项开始,连续替换2项 ,插入XYZ var arr[A,B,C,D,E,F,G]; arr.spl…

Java线程间通信机制 (等待唤醒机制)

1.1 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。 比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动…

[JavaEE] Thread类及其常见方法

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1.Thread 的常见构造方法 2.Thread 的几个常见属性…

机器学习基石2(noise和error)

文章目录一、什么是noise?二、什么是error?三、常用error一、什么是noise? 我们之前的讨论都是一种理想化的说明,比如数据来源于目标函数fff,似乎我们手里拿到的数据是这样得来的,随机取一个输入&#xff0…

DOM算法系列009-判断给定节点是否为块级元素

UID: 20221227215215 aliases: tags: source: cssclass: created: 2022-12-27 块级元素 给定一个节点,如何判定它是否为块级元素呢? 首先,块级元素一定是元素节点,所以它的nodeType 1其次,我们思考,有什…

Redis分布式缓存、秒杀

目录一、单点Redis的问题二、RDB三、AOF四、Redis优化秒杀流程1、秒杀步骤:2、Redis优化秒杀步骤:3、秒杀的lua脚本4、调用秒杀的lua脚本5、通过线程池,操作阻塞队列五、基于Redis实现共享session登录NoSQL数据库进阶实战哪吒精品系列文章一、…

linux常用命令(二)-文件操作

文件创建 - touch 一般使用touch 来创建某个新增的文件 语法 touch [-acfm][文件名]a:改变档案的读取时间记录c:假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。f:不使用,是为了与其他 unix 系统…

python的tkinter(图形用户界面)

目录标题什么是图形用户界面(GUI)Tinter函数和参数说明(常用)Lable(标签):效果Button(按钮)效果Entry(文本框)效果Text (多行文本框)Canvas(画布)效果Message(消息弹窗)效果什么是图形用户界面&…

kaggle学习笔记-otto-baseline4-本地CV的构建

总览 步骤 1 - 生成候选 对于每个测试用户,我们生成可能的选择,即候选人。、我们从 5 个来源生成候选人: 点击、购物车、订单的用户历史记录测试周期间最受欢迎的 20 次点击、购物车、订单具有类型权重的点击/购物车/订单到购物车/订单的共…

中国芯片奇才,仅用三年打破欧美垄断,创造奇迹

有这么一位中国人,打破了欧美长达10年的芯片技术垄断。这位最该追的星,她是谁?又是如何让欧美芯片领域闻风丧胆。早在2017年,芯片国产化已接近50%,然而25g以上芯片却仅有3%,该技术一直掌握在欧美等发达国家…