CS61B Project 3: BYOW

伯克利cs61b总结贴 伯克利cs61b总结贴 ​ 花了一个多月,总算把cs61b 18sp的刷的差不多了,课后的lab、hw和project也差不多做完了,project3后面还剩几个hw,后面会一一补上。 ​ 总的来说,cs61b真的是名不虚传,果然是享誉全球的神课。开始上这门课的时候,我就只有一个感觉:后悔。后悔自己为什么没有早点接触到这门课,大二再开始上确实太晚了。很多美帝知名cs课程只是课后的lab非常好,而老师讲的其实很一般(比如我现在正在学的cs144…简直无力吐槽),而cs61b不仅lab设计的很好,能够让你真 阅读详情

CS61B Project 3: BYOW

FAQ
Each assignment will have an FAQ linked at the top. You can also access it by adding “/faq” to the end of the URL. The FAQ for Project 3 is located here.

Introduction
In Project 3, you will create an engine for generating explorable worlds. This is a large design project that will require you and one partner to work through every stage of development from ideation to presentation. The goal of this project is to teach you how to handle a larger piece of code with little starter code in the hopes of emulating something like a product development cycle. In accordance with this, the grading of this project will be different from other projects. Since there is no notion of “the correct answer” when it comes to world design and implementation, you will be assessed much like a performance review you might receive at an internship or job in addition to a very general autograder. While this means you will be graded slightly subjectively, we promise to be pretty nice bosses and will respect you as any boss should respect their hardworking employees. Please talk to us if you feel the grading scheme feels unfair.

This project will require you a great deal of exploration and experimentation. Searching the web for answers (not solutions from past semesters) should be a regular activity throughout this process. Please know that there are no right and wrong answers, as this is a very open-ended project. However, there are some implementations and ideas that are better than others. It is ok and expected that you will go through several iterations before settling on something that you deem good. That is, this project is about software engineering.

You’re not required to use any of the fancy data structures or concepts from class (A*, MSTs, Disjoint Sets, etc.). This project is about software engineering, not about data structures or algorithms. The data structures and algorithms we’ve learned about in class will make your code significantly simpler and more efficient, but please don’t use things just because we learned about them in class. Only use these tools if you feel comfortable using them in your implementation.

A video playlist (from Spring 2018) discussing tips for working on this project can be found at this link. A walkthrough of the new skeleton code is also available here.

Please also note that since the structure of the project has been changed, Phase 1 will refer to part 3A of the project.

Deliverables
Project 3 is worth 125 points. There are several key deadlines for this assignment:

在这里插入图片描述

cs61b 课程总结 使用 throw new Error 异常中止控制流, 无论如何用户都应该知道在异常出现的时候发生了什么 (当然也可以判断 null 或者返回一个特殊值, 但如果悄无声息, 用户就不知道发生了什么)DRY(Dont repeat yourself) 和 封装原则在软件工程中无处不在,如果你发现自己一遍又一遍重复某件事,你应该把他视为一个信号,告诉你需要抽象出一个方法来处理这个问题。不要在没有辅助方法的情况下嵌套 for 执行所有操作,虽然技术上可行,但他会融化你的大脑。 阅读详情

相关推荐

伯克利神课 CS61B 游戏项目 Project3 建立我的世界(地图生成)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 这是一个大的project,前前后后我断断续续做了一个月。真正自己的从无到有设计的迷宫出来的时候是很兴奋的。这个project老师给出的start code很少,不像BearMap骨架很清晰,自己思考怎样算法实现就是了。Project3 更倾向于让你从头到尾设计一个自己的小世界,不局限什么方法,也不限制方法的复杂度

lindaicoding的博客 3779

CS61B学习笔记——proj3 CS61BYoW的要求及实现

  记录proj3的要求及实现思路,只实现了proj3最基础的部分。总体来看,proj3的难度和价值都远低于pro2。 Skeleton Code Structure   Two main packages:byow.TileEngine & byow.Core   byow.TileEngine     TERenderer.java——与render相关的方法   byow.Core——推荐将此项目中所有代码都放在此package下     RandomUtils.java——处理随机性相关的组

weixin_43405649的博客 2788

CS61B project0实验记录

1.copy一个行星构造函数不会写 2.常数用 static final 修饰比较好 3.java支持科学记数法,例如 1.03e-7; 4.foreach循环的使用 for( type name : arrayname);

qq_36010523的博客 1277

【CS 61B】Data Structures, Spring 2021 -- Week 1(1. Intro and 2. Classes, Lists, Arrays, Maps)

【CS 61B】Data Structures, Spring 2021 -- Week 1(1. Intro and 2. Classes, Lists, Arrays, Maps)

汤姆lazy的优快云博客 2858

CS61A 课程项目 Hog, Phase3: Strategies

CS61A 课程项目 Hog, 第三阶段:策略函数

Epoch101的博客 1389

my_world:建立自己的世界(BYOW):伪随机2D世界生成器,具有玩家能够导航和与世界互动的功能。 玩家可以通过输入一系列数字及其头像图标来选择种子

介绍 建立自己的世界(BYOW):伪随机2D世界生成器,具有玩家能够导航和与世界互动的功能。 玩家可以通过输入一系列数字以及其头像图标来选择种子。 该项目是我在UC Berkeley的CS 61B“数据结构”课程的一部分。 如果存在,玩家可以创建一个新世界或加载一个旧世界。 如果玩家加载旧世界,则该世界将处于与玩家先前离开的世界完全相同的状态。 图片 菜单 主图标和头像图标菜单,显示可用选项以及对应于每个选项的在键盘上按下的字母。 其他 玩家可以输入种子编号。 由于世界是伪随机生成的,因此输入相同的种子将返回相同的世界。 玩家还可以看到他们到目前为止输入的数字。 这就是种子4891014以及与世界互动后的样子。 左上方的世界显示了鼠标悬停在其上的图块类型。 化身是默认图标,并且已与黄色图块之一互动,这使玩家进入了记忆游戏。 游戏包括屏幕闪烁的越来越多的字母,然后消失,并且玩家必须正确地回

CS61B 2021sp学习笔记1——project0

CS61B-2021sp project0的学习体会。

maxskyer的博客 1782

cs61proj3

CS61CPU 妈,我做了一个CPU! 这是我所做的:

CS61B Project 0 项目记录

目录 (一)准备工作 (二)项目开发,遇到的问题及解决办法 body类 赋予其物理意义 (三)结项总结 (一)准备工作: 1.git clone skeleton-sp19到本地 2.打开发现有重名的in文件,看着红红的蓝瘦,先把example里的in.class注释了 (二)项目开发,遇到的问题及解决办法 (1)body类 需要你构建一个body.class,表示的是各种星体,这个body具有以下属性: /** * Body类,表示星体的信息 * * dou...

yangnanbei的博客 2797

深入解析FDTD Script中的farfieldpolar3d命令:复电场计算与应用

本文深入解析了FDTD仿真中`farfieldpolar3d`命令的核心功能与应用。作为`farfield3d`的复数版本,该命令能计算并返回球坐标系下的复电场矢量,完整保留振幅与相位信息,为光学天线设计、近远场变换及偏振态分析等高级应用提供了关键数据基础。

grafana6viz的博客 286

三相直流无刷电机(带HALL传感器)BLDC控制一

本案例选择TIM0的CH0/CH1/CH2三个通道接入三路原始hall输出信号。三路TIM_CHx(48)通过配置存入到NIP寄存器(new input pattern,3 bits)内。未完待续。

m0_69929716的博客 405

CS61B 数据结构与算法

CS61B https://github.com/cy-Yin/UCBerkeley-CS61B-sp18

ZY_yin的博客 1965

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

CS61B Project3 Bear Maps

本次的作业是一个Web地图应用程序,我们将编写后端——为前端发出请求的 API 提供支持的 Web 服务器。

m0_61736858的博客 1188

Qt Creator菜单栏消失的终极修复指南:从快捷键冲突到设置恢复

本文详细解析了Qt Creator菜单栏消失的常见原因及修复方法,包括快捷键冲突排查、配置文件重置和界面模式切换等解决方案。特别针对Qt开发者遇到的菜单栏显示问题,提供了从简单快捷键操作到深度配置修改的全方位指南,帮助用户快速恢复Qt Creator的正常使用。

weixin_27240351的博客 338

tkinter使用label视频播放

tkinter是python的界面开发包 使用tkinter显示视频流的一个办法是使用label来逐帧显示图片。 from Tkinter import * from PIL import ImageTk, Image import cv2 root = Tk() # Create a frame app = Frame(root, bg="white") app.grid() # Create a label in the frame lmian = Label(app) lmain.grid(

六十英里的专栏 5526

【CS61C】Project02

在这一 project 中,出现这个问题的主要原因是,将新的值复制到栈上的寄存器中的写法存在问题。神经网络中的计算、训练等过程,都与矩阵乘法密切相关。整数数组在内存中是连续内存地址存储的。对现有函数编写单元测试模块。

absacuo的博客 1059

XILINX偶然加载不成功的问题原因及解决方法

本文为明德扬原创文章,转载请注明出处! 一、项目背景 明德扬(MDY)在2021年承担了多个基于XILINX芯片的研发项目,包括VPX网络透明传输项目(芯片为XC7K325T-2FBG900)、某高端测试仪项目(芯片为XCKU060-FFVA1156)、某网闸设备项目(芯片为XC7Z030-FBG676)等,另外,明德扬自研了基于XC7K325T-2FBG900和基于XC7K410T-2FBG900芯片的核心板,在XILINX研发领域拥有丰富的经验。即使拥有丰富经验和积累,每个新项目我们均...

6036

UCB CS61B:用 Java 系统掌握数据结构与算法,并完成千人时工程级实战(cs-self-learning 自学指南)

本文围绕本仓库(计算机自学指南 cs-self-learning)收录的 UCB CS61B 课程文档,完整梳理这门伯克利 CS61 系列第二课的技术定位、前置要求、Gradescope 免费测评流程、14 个 Lab / 10 个 Homework / 3 个 Project 组成的实战体系,以及历年课程资源版本与跟进学习路径。读完本文,你将能规划出「CS61A → CS61B → 体系结构/操

gitblog_01087的博客 381

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

Ubuntu-22.04安装VMware虚拟机并安装Windows10

最近在研究虚拟机,主要集中在KVM、Virtualbox和VMware这三种虚拟机上。前面我已经研究了前两种虚拟机的安装和使用方式,这篇文章介绍3兄弟中最后一个虚拟机安装和使用方式。Virtualbox虚拟机安装和使用KVM虚拟机安装和使用相比于前两种,VMware的安装方式最麻烦,但是综合体验下来我感觉流畅度最好。如果你确实有在Linux上使用VMware虚拟机的需求,那不妨跟着我看下去吧。1、gcc版本和内核版本一定要匹配上,否则会出各种错误。

jiexijihe945的博客 4116

CS61C Spring 2021——Project 1: Philphix要求及实现思路

它接受一个单一的命令行参数作为输入(包含将要使用的替换集的文件名),根据输入的信息选择对应的字符替换集合。集合由一系列单词对组成,每一对单词占据一行,一对单词之间由任意数量的tab/space分隔。如果输入的单词不匹配的话,原样print;如果单词匹配,print符合最高优先权的替换单词。第一个单词为待匹配单词,第二个单词为替换单词。2.单词首字母变为小写后和待匹配单词对应;3.单词转换为小写后和待匹配单词对应。1.单词恰好和待匹配单词对应;

weixin_43405649的博客 870

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

CS61B 数据结构与算法 Spring 2021 Project2: Gitlet

CS61B proj2 gitlet https://github.com/cy-Yin/UCBerkeley-CS61B-sp21-Proj2-Gitlet

ZY_yin的博客 994

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

CS61a 2022fall Project 1 -Hog

【代码】UCB cs61a 2022fall Project 1 -Hog

Rochellenicolett的博客 1185

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

CS61B Project3A 实战:从元胞自动机到地牢洞穴地图生成的完整实现

本文详细解析了CS61B Project3A中地牢地图生成器的完整实现过程。核心内容包括利用元胞自动机演化生成自然洞穴地图,以及通过房间碰撞检测与走廊连接算法构建经典的房间走廊式地图。文章深入探讨了连通性处理、边界优化等关键技术,并提供了实用的代码示例与调试技巧,是学习程序化内容生成(PCG)的绝佳实战指南。

q5r6s7的博客 838

【CS61B SP18丨笔记】1. 入门与介绍

课程表网站: 课程表网站包含josh做的各个年度的CS61B课程的课程表。课程表内包含: (1)在校园中该课程的上课与考试时间 (2)该课程的视频链接(转至油管对应视频,因此有cc字幕) (3)该课程的PPT链接 (4)该课程对应的阅读资料链接等 课程要求: (1)学生应已经熟练掌握最少一门编程语言(如python) 课程表中包含??节课程,从综述开始,然后讲解java入门,最后讲解数据结构与算法 课程内包含三种练习:HW(homework)、lab与project (1)练习难度中:lab最低最轻松;H.

fantianning的博客 991
上一篇: Programming Assignment 5 - Gotta Catch ‘Em All
下一篇: 基于代理服务程序的TCP通信
todcode
博客等级 码龄7年 359粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值