近年来,美国大学的计算机(Computer Science, CS)和电子工程(Electrical Engineering, EE)专业录取要求随着申请人数的增加逐渐水涨船高。但另一方面,国内的相关工程教育却基本是缺位的。为了弥补这种差距,陈欣老师在过去的几年里,通过我们的规划项目辅导了一批学员。通过身体力行的学习利用专业知识解决生活中的问题,他们走出了自己的舒适区。事实证明,学校对这份努力也是相当认可的。

为了帮助到更多的人,陈欣老师在此整理一些往年的成功项目经验,并同简化过的项目源代码一道与大家分享。希望能够抛砖引玉,给同学们一些思路和帮助,为之后的申请助一臂之力。毕竟短期看,CS/EE是在美国本土就业的捷径,能够较为迅速的收回教育投资;长远看,CS/EE的相关技能也能在诸多行业里起到点石成金之效。

问题

对于我们上一次的分享,有家长提出疑问,觉得孩子如果没有游泳队的特殊背景,是否就没办法做出那样“高大上”的项目呢?事实上不是这样子的。陈欣老师认为工程项目的含金量,很大程度上还是在于孩子自己的兴趣、创意和深入程度。而这几个元素都是可以在之后的美国大学申请过程充分体现出来的。相对而言,做项目的契机反而没有那么重要。原则上只要是生活中的、感兴趣的问题,都可以来用技术手段尝试解决。

我们今天分享的这个案例,之前对AADPS有关注的朋友们应该有些印象。这是一个对电脑游戏(具体来说,是点击式的冒险游戏)有特别热情的小姑娘。在我的指导下,她自己撰写了剧本,并用手机拍摄和录制了图片以及语音素材,最终以自己的日常生活为蓝本完成了生平第一个游戏。在十二月的校友面试中,她在自己的手机上向面试官展示了游戏,得到了很大的认可,最终也如愿入读了ED的名校。下面就让我们来看一看,这个游戏背后的原理是怎样的吧。

工具

JavaScript语言

JavaScript是一种动态、无数据类型的高级解释型语言。名字里带有的Java字样只是当初由于市场宣传考虑而做出的决定,虽然语法上的确与Java有一定相似性,但是本质上是完全不同的东西。JavaScript与HTML和CSS一起并称互联网三大核心技术。几乎所有的现代浏览器都支持JavaScript,因此是开发网页应用和游戏所必不可少的工具。随着JavaScript平台技术的改进,这一语言由于其方便快捷的特性,运用的领域也扩展到游戏编程、桌面程序和服务器应用等。

CreateJS

CreateJS是一组模块化的JavaScript库,用于开发基于HTML5现代互联网互动内容。几个主要组件有与HTML5 Canvas交互用于绘制图形和响应触控事件的EaselJS,生成过渡动画的TweenJS,播放声音和音乐的SoundJS以及加载资源素材的PreloadJS。可以在这里下载CreateJS。

Atom

由于JavaScript在浏览器里执行的特性,我们一般不需要单独的集成开发环境(IDE),可以利用浏览器自带的调试工具进行调试。对于代码的编辑,可以使用Github开发的Atom。Atom是一个本身基于JavaScript的现代跨平台代码编辑器,可以任意更换主题或者安装插件以扩展新功能。可以在这里下载Atom。

原理

Bitmap位图对象

Bitmap是CreateJS提供的基础对象之一,用于实现在stage上渲染图像素材。Bitmap可以用图片的路径初始化,也可以用现成的HTML元素(比如已经被PreloadJS加载好的素材)来初始化。

通过stage的addChild方法,可以渲染位图对象。反过来使用removeChild可以从画面上移除已渲染的对象。

x与y位置坐标

x和y表示Bitmap在上层stage或者说容器里面的相对坐标,是大于零的整数。注意对于电脑和手机屏幕的绘图,坐标系和我们常见的数学平面直角坐标系略有不同。编程中的坐标系以屏幕的左上角为原点,然后y轴的方向要反过来。像下面这样。

regX与regY参考点坐标

reg在这里是参考点(registration point)的缩写。regX代表参考点相对于位图左上角原点在X轴上向右的位移,regY则代表参考点相对于位图左上角原点在Y轴上向下的位移。

举例来说,我们希望在stage的正中央显示一个素材。直接把x和y分别设置成stage的宽(width)和高(height)的一半,效果会是这样:

显然这不是我们需要的结果。因为是把素材左上角的原点和stage的中心对齐了,而我们是希望素材的中心对齐stage中心。因此应该同时把regX和regY分别设置成素材本身宽和高的一半,就能得到正确的结果:

scaleX与scaleY缩放比例

顾名思义,是在横轴和纵轴上对素材大小进行缩放。如果设置scale大于1,则是拉伸;小于1,则是压缩。一般没有特殊需求的话,会把scaleX和scaleY设置成同样的值,这样素材就会均匀的放大或者缩小。

面向过程编程与面向对象/事件编程

从本质上来说,计算机的编程都是面向过程的编程。这是因为我们目前所用到的所有电脑都是基于冯·诺伊曼结构(von Neumann architecture),要求中央处理单元按顺序读取和处理指令。当然,指令本身可以有无条件或者有条件的跳转,然后在更高的层面上就可以进行循环和分支等复杂操作。但是究其更本,这一过程是线性的、机械的。

那么为了让程序的开发过程与人们生活的直观感受更加一致,也提升程序本身的可读性与可维护性。计算机科学家们提出了面向对象/事件编程的理论并开发了相关的工具。对这个新的编程模型而言,对象内部含有表述自身状态的数据或称属性,可以有一系列函数或称方法来与外界互动。更妙的是,程序员可以设定对象针对用户的一系列操作事件进行响应。仅当事件在不特定时刻发生以后,才执行对应的操作。当然,在幕布后面,本质上代码的执行还是过程式的。比如事件的响应实质上是由持续不断的循环来实现的。现代微处理器的速度是如此之快,能够间歇性的运行这个循环,定期检查每一个事件是否被触发,而不让用户感到丝毫卡顿。

就我们具体的例子而言,在loadScene函数里,通过循环的方式把每一个物件的mousedown事件(手机触摸屏的点击实质上也是触发mousedown事件)绑定到了onMousedown这个自定义的函数上。然后onMousedown自身根据所触发事件的对象和当前stage里各对象的状态来进行不同的响应。一个明显的例子是当拾起物件时,可以把画面背景切换到模糊的版本,造成视觉上的景深特效。

示例

上图展示了项目源码实际执行的场景。在运行miniweb.exe这个本机服务器之后,即可在浏览器地址栏里输入localhost:8000加载游戏。单击窗口中的箭头按钮后,游戏切换到示例场景。接着第一个物件——石板被自动点击拾起,可以在点击一下查看提示。依次找到三个物件并查看提示后示例场景结束并黑屏。

浏览器里单击F12可以打开调试工具。对于源代码的编辑,可以用Atom File菜单里的Add Project Folder...打开htdocs目录。其中index.html是游戏的载体网页,游戏主程序是src目录下的myapp.js文件。

思考

我们知道,大家平时是习惯竖屏使用智能手机的。但是对于游戏来说,很多情况下横屏的显示效果要更好。那么怎样来处理原始素材和坐标系,能够直接(指不打开屏幕依据重力感应自动旋转的选项)实现横屏显示的效果呢?对于不同屏幕尺寸,又怎样能确保物件不会错位?

对于流程较长的游戏,需要有中途保存和之后恢复进度继续游完的手段。可以通过哪些途径(提示:至少有三种以上方案)达到这个目的呢?

在目前的示例程序里,如果事先知道特殊物件的位置,就有可能跳过既定的流程。那么通过什么办法,在目前事件驱动的基础上可以引入更加有挑战性的解谜流程?

假定游戏已经完成了。你没有收费的打算,但是希望更多的人可以体验到你的作品,有哪些分发的途径呢?在游戏本身的设计里可以加入哪些元素来鼓励大家分享?

以上就是我们今天分享的案例,欢迎大家登陆网站后下载项目源码,通过实践来加深理解。简单的疑问可以评论在文章下,陈欣老师将会在有空时予以解答。如果对我们的服务项目感兴趣,希望获取陈欣老师一对一指导的,可以加上小助手微信号aadps1。

重要通知

本文为AADPS原创,原始发布地址是https://aadps.net/2021/10164.html。如发现其他自媒体盗用文章,欢迎粉丝告知或协助我们举报。

计算机美国学游戏开发,【工程与计算机】一石二鸟:开发游戏为申美国名校加码...相关推荐

  1. 物联网计算机相关专业吗,物联网工程属于计算机专业吗

    励志语录(7qianxun.com) 不是,物联网工程本身就是一个专业,属于工学范畴.本专业学生要具有较好的数学和物理基础,掌握物联网的相关理论和应用设计方法,具有较强的计算机技术和电子信息技术的能力 ...

  2. 学计算机去什么大学好,去美国学计算机专业什么大学好

    计算机专业是美国留学优势专业,那你们知道去美国学计算机专业什么大学好吗? 大师兄留学网[留学 dsxliuxue.com]小编为大家整理了美国计算机专业留学院校相关内容,希望对大家有帮助. 美国计算机 ...

  3. 计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java宁夏中卫城市风采在线系统开发(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

  4. 康威生命游戏是如何搭建计算机的?

    2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...

  5. 计算机图形学——游戏方向 第一章 计算机图形学概述

    计算机图形学--游戏方向 第一章 计算机图形学概述 前言 第一章 计算机图形学概述 1.为什么设计专业要学习计算机图形学? 计算机图形学与计算机视觉等领域的关系 计算机图形学基础自学体系 2.计算机图 ...

  6. 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的监护系统,试写出问题定义并且分析开发这个系统的可行性

    目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机.某医院打算开发一个以计算机为中心的监护系统,试写出问题定义,并且分析开发这个系统的可行 ...

  7. 工程硕士计算机专业开题报告,计算机技术工程硕士论文

    为毕业生写计算机技术工程硕士论文提供计算机技术工程硕士论文范文参考,涵盖硕士.大学本科毕业论文范文和职称论文范文,包括论文选题.开题报告.文献综述.任务书.参考文献等,是优秀免费计算机技术工程硕士论文 ...

  8. 学计算机还是学生物,生物医学工程,到底是学生物,还是学医?

    我们在之前的推文中,将生物工程和生物医学工程捏在一起说过一次,但今天,讯哥想单独说说[生物医学工程]. 生物医学工程,英文是Biomedical Engineering,简称BME,乍一看,可能不少童 ...

  9. 关于计算机游戏的摘要,关于计算机教育专业论文

    在当今社会,不管是企业.学校,还是各个大中小型单位,都必须使用计算机作为办公的主要工具,计算机早就已经悄然无声地走进了我们的生活.下面是小编为大家整理的,供大家参考. 篇一 小学教学中计算机教育游戏应 ...

最新文章

  1. Ubuntu双系统Grub启动菜单修复
  2. css设定div固定比例,响应式网页中,如何只用CSS实现div的高和宽保持固定比例
  3. lintcode-49-字符大小写排序
  4. gradle 指定springcloud 版本_Gradle初探
  5. python平稳性检验_Python数据分析0.3 用statsmodels进行ADF平稳性检验
  6. JavaScript实现完整的matrix矩阵类(附完整源码)
  7. HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)
  8. xlwt表格的对齐样式
  9. 阿里之后 “安卓终结者”来了!
  10. 教你如何监控 Apache?
  11. 计算机网络与安全维护实训报告,计算机网络与安全管理专业实习报告
  12. Vmware 6.5.1正式版在Ubuntu 8.10下面运行非常缓慢的解决方
  13. 搭建新环境的准备工作
  14. dom4j读取配置文件
  15. 华为/荣耀 Magicbook/Matebook 开机经常弹出华为智能还原
  16. 安卓版恶搞锁suo机生成器(百度云)
  17. double team
  18. GPIO的配置及使用(MC9S08AW60)
  19. Flickr 被封!
  20. 基于改进YOLO算法的夜间车辆检测

热门文章

  1. synchronized简介
  2. 企业即时通讯软件2013 即时通讯大手笔
  3. 圳不完全启示录之初来乍到----2
  4. 也可以让生命发出耀眼的飞鸽传书光芒
  5. 开源即时通讯软件|最好的开源即时通讯软件——XEIM
  6. 01数据库、DBMS和SQL
  7. 压力真的会害死你,我也轻度抑郁过
  8. 年轻人应该买房还是租房,我给你理性分析
  9. “码农”被黑得最惨的一次,深夜下班被误认为小偷
  10. 我们是谁?前端开发者!