发基于 WebGL 的网页游戏涉及多个步骤,包括游戏概念的设计、图形资源的创建、编码和调试等。以下是一个一般性的步骤指南,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。
请注意,这只是一个一般性的开发流程,具体的步骤可能因项目的规模和复杂性而有所不同。在整个过程中,文档、版本控制和团队协作也是关键的因素,尤其是在大型项目中。
对于初学编程的朋友来说,这篇文章有点长,而且会有点难懂。但是请不要放弃,我尽量以通俗的语言解释相关的编程概念,这里只讲解编写一个游戏需要的相关编程概念(如需要会在后面的文章中随时补充相关概念),对其余未涉及的编程概念大家可以自行搜索学习。本文都是简单的编程概念,请耐心看完,如有疑问欢迎与我交流。本人水平有限,如有错误欢迎指正。
正如有人的地方就有江湖,有浏览器的地方就有JavaScript。那么什么是JavaScript呢?JavaScript 是世界上最流行的脚本语言,它适用于PC、笔记本电脑、平板电脑和手机。JavaScript 是一种轻量级的编程语言,JavaScript 是可插入HTML 页面的代码,JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行,JavaScript 很容易学习,没有想象中的那么复杂。
一、如何在网页中添加JavaScript代码
HTML 中的脚本必须位于<script>与</script>标签之间,有两种方式,第一种方式,在<script>与</script>标签之间直接添加JavaScript代码,例如:<script type="text/javascript">alert("Hello World!");</script>,打开含有上述代码的网页将显示一个对话框(alert是一个函数,作用是弹出一个含有信息的对话框),如下图所示:
第二种方式是把JavaScript脚本保存到外部文件中,这样代码可以被多个网页使用。外部 JavaScript 文件的文件扩展名是js。如以外部文件方式引用JavaScript,需要在<script>标签的 "src" 属性中设置该.js文件位置及名称, 例如:
<html>
<body onload="main()">
<script src="first.js"></script>
</body>
</html>
first.js文件代码如下:
function main(){
alert("Hello World!");
}
打开这个网页,显示的结果与上图一致。其中<body>标签中的onload="main()"表示网页加载完毕后调用main()函数(后面会介绍什么是函数)。
二、JavaScript变量
变量用来存储值或计算结果,JavaScript使用关键字var来定义变量,使用等号来为变量赋值,例如:
var x, length;
x=5;
length=6;
执行以上语句后,变量x的值为5,变量length的值为6。(提示:为保持代码可读性建议每行以;结尾,每行开头适当添加空格缩进)
变量名约定:JavaScript变量名必须以字母、下划线_或美元符$开头,后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便 JavaScript 可以轻易区分开标识符和数字),注意:变量名区分大小写。
注意:JavaScript变量名不能是保留字(详细的保留字请自行搜索),否则会出现语法错误提示,如下图:
三、注释
为了增强代码的可读性,可以对相应代码进行注释,有两种方式,第一种:多行注释,以"/*"开头,然后增加注释文字,最后以"*/"结尾,例如:
第二种:单行注释,以"//"开头,只能添加一行注释文字,例如:
四、数据类型
JavaScript 有多种数据类型:数字,字符串,数组,对象等等,例如:
其中数字、字符串类型较简单,数组、对象类型较复杂,下面再简单说说数组和对象类型。
1、数组
JavaScript 数组(Array)是有序数据的集合,数组中的每个成员被称为元素(Element),每个元素的名称(键)被称为数组下标(Index),注意:下标从0开始。JavaScript 常用的定义(创建或者声明)数组方法有两种:构造数组和数组直接量。
a4[2]表示访问a4数组的第三个元素(下标从0开始),即3。
数组的元素可以为数字、字符串、对象,还可以是数组,元素为数组的数组称为多维数组,下面是一个二维数组(可以把它想像成一个9行8列的表格)
如何定义这个数组呢?分两步来定义,首先定义一个数组(有9个元素):
var a=new Array(9);
然后将这个数组的元素依次定义成一个数组
a[0]=new Array(8);
a[1]=new Array(8);
……
a[8]=new Array(8);
即,先将数组的行定义出来,再定义每一行中的元素。现在要访问数组a的元素的话需要两个坐标——行、列坐标,例如:访问第5行第4列的元素,a[4][3]
2、对象
对象可以存储复杂的数据,那么什么是对象呢?计算机程序设计教材上关于对象的定义比较抽象,用我自己的话来说,就是将客观世界中的事物特征和行为用计算机语言来描述并保存至一个变量中,这个变量就叫对象。以人为例,每个人的特征都不一样(性别、身高、体重……),但都有相同的行为(说话、行走、睡觉……)。常用的对象定义方式有两种:构造对象和直接定义对象,先看看构造对象的方法
上面是构造对象的一般方法,即先构造一个Object对象,然后再定义对象的属性(特征),接着定义对象的方法(行为),为遵循面向对象的程序设计方法,一般需要提供访问属性的方法,例如:获取年龄的方法getAge和修改年龄的方法setAge,注意这两个方法中的this表示的是当前对象。将以上代码复制到HTML文件<script></script>标签之间,保存并在浏览器里打开,控制台(chrome浏览器按F12键显示控制台)显示结果如下:
下面看看直接定义对象
将以上代码复制到HTML文件<script></script>标签之间,保存并在浏览器里打开,显示结果如下:
五、运算符
JavaScript常用的运算符有算术运算符、比较运算符和逻辑运算符
注意自增和自减运算符,如果运算符在变量前面则先执行自增(自减)运算,再将结果赋给x
注意:TRUE、FALSE表示真、假,用于条件判断,例如:if语句(见本文后面部分)。运算符的优先级为:算术运算符最高,比较运算符其次,逻辑运算符最低,可以通过小括号改变运算优先级。
六、函数
为了让代码能重复使用,把实现某一功能的代码写在一段代码块内(以{开头,}结尾),这段代码就叫函数,函数的定义如下:
function 函数名(参数1,参数2,……){
实现函数功能的代码
……
}
举个例子,编写一个实现两个数相加的函数,代码块如下:
将以上代码复制到HTML页面中的<script></script>之间,保存并在浏览器中打开,显示结果如下:
函数的定义以function开头,后面跟一个空格,然后是函数名,函数名遵循变量的命名方式,函数名后面是括号,括号内是函数的参数,可以没有参数,也可以有多个参数(多个参数之间用逗号隔开),如果需要返回计算结果,使用return语句返回(无需返回结果的话就不需要使用return语句)。
七、控制语句
1、条件判断
顾名思义,条件判断就是判断某一条件是否成立,然后再根据条件结果执行相应代码。常用的条件判断语句为if语句,有三种常用形式:if、if else、if else if else,如下所示:
以上代码运行结果如下:
2、循环
循环就是让一段代码反复执行,直到不满足循环条件而退出,常用的循环结构有三种for循环、while循环和do while循环,先看看for循环
for(语句1;语句2;语句3){
反复执行的代码
}
举个例子:
for (var i=0; i<5; i++){
console.log(i);
}
上面的例子在浏览器控制台显示如下:
0
1
2
3
4
上面的for循环语句1为var i=0;定义循环初始变量i并赋值0;循环语句2为i<5;是循环运行判断语句,判断当前循环变量i是否小于5;语句3是循环内的代码块执行完后执行的语句,即循环内代码块执行完后i的值加1,循环执行完5次后i的值为5(第1次,i=0),判断i<5时不成立,所以循环不会执行第6次。循环内的代码还可以是另一个循环,从而构成多重循环,以前面那个二维数组为例,看看二重循环的简单应用
运行结果如下:依次在控制台输出a[0][0]至a[8][7]的值
可不可以跳过循环?答案是可以,你可以使用break语句或continue语句来跳过循环,看下面的例子:
上面的continue语句表示不执行continue语句后面的语句,直接执行循环中的语句3,即i++,运行结果如下:
八、简单的类
类是面向对象程序设计语言最重要的一个功能,但是,很遗憾,JavaScript对类的支持不是很友好,我们需要自己实现类的相关功能。下面以一个简单的动物类为例简单介绍一下JavaScript的类实现(限于篇幅不能详细讲解),继承关系如下图所示:
假设动物有腿、翅膀、尾巴、喜欢的食物等属性,有行走、飞翔,显示喜欢食物等方法,先看看动物类的定义
很简单,注意fly和walk方法,它们又调用了子类的方法,下面看看如何实现子类继承父类的功能
是通过原型来实现继承,这种方法不是很好,但很简单,下面再看看子类的定义
定义了两个子类Cat和Bird,通过ExtendObj()函数实现继承,将上述代码复制到HTML页面内的<script></ script >标签之间并保存,打开网页将在控制台显示如下结果:
好了,终于将JavaScript基础知识介绍完了,接下来的文章将给大家介绍HTML5标准的Canvas基础知识,感谢你能坚持到最后,下次再见。
上有很多有助于学习CSS的游戏,本文收集了一些非常实用的免费CSS游戏,希望这些游戏可以帮助你再次体验CSS的乐趣!
作者 | Andreas Müller
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
我必须承认,我的记性不是很好。特别是我记不住CSS,例如Flexbox布局等。flex容器的属性justify-content可以有12种以上的不同值,其中许多可以与关键字safe或unsafe组合。详细说明可以参照这篇文章《CSS技巧:flexbox的完整指南》(https://css-tricks.com/snippets/css/a-guide-to-flexbox/),这个页面只有两列,高度却超过了2万像素,虽然文章题目表明这是一篇完整的指南,但实际上文中并没有覆盖到所有内容。
最近,我在偶然间发现了一款塔防式的flexbox教学游戏,这款游戏真的是……
等等,你说什么?
你没听错,事实证明,网上的确有很多有助于学习CSS的游戏。我收集了一些非常实用的免费CSS游戏,希望这些游戏也可以帮助你再次体验CSS的乐趣!
Flexbox Defense
上述我提到的就是这款游戏。它涵盖了flex的属性align-items、justify-content、flex-direction、align-self和order,游戏本身总共有12关。特别是最后4关非常有趣,而且难度也很高。
游戏地址:http://www.flexboxdefense.com
代码库:https://github.com/channingallen/tower-defense
作者:Channing Allen
Flexbox Froggy
这也是一款涉及Flexbox的游戏,它涵盖的flex属性更多:align-items、justify-content、align-content、flex-direction、align-self、flex-wrap和flex-flow,而且游戏总共有24关,如果你打通关了,别忘了告诉我啊。
游戏地址:https://flexboxfroggy.com
代码库:https://github.com/thomaspark/flexboxfroggy
作者:Codepip
Grid Garden
这款游戏总共有28关,你可以从中学习CSS网格布局。它涵盖了以下网格属性:grid-column-start、grid-column-end、grid-column、grid-row-start、grid-row-end、grid-row、grid-area、order、grid-template-columns、grid-template-rows以及grid-template。
游戏地址:https://cssgridgarden.com
代码库:https://github.com/thomaspark/gridgarden
作者:Codepip
CSS Diner
这是一款有关各种CSS选择器的小游戏,总共有32关,打通关后你就可以自诩为CSS选择器专家了,而且你会越玩越饿。
游戏地址:http://flukeout.github.io
代码库:https://github.com/flukeout/css-diner
作者:Luke Pacholski
Unfold
这不完全是一款游戏,更像是一个有关CSS 3D变换的交互式演示。你可能会觉得无聊,但请相信我,游戏里面的动画非常燃,而且你肯定会觉得纯CSS不可能做出这样的效果。
游戏地址:https://rupl.github.io/unfold
代码库:https://github.com/rupl/unfold
作者:Chris Ruppel
Roadmap
你需要一定的技巧和速度才能打通关这款游戏,但游戏本身是只用CSS和HTML制作的。它并非直接地讲解了CSS,而且通过研究源代码学习了很多有关clip-path、transform和带有@keyframes的动画知识!请在下方留言,告诉我们你总共尝试了几次才通关,我试了8次!
游戏地址:http://victordarras.fr/cssgame
作者:Victor Darras
Carnival
你需要在8秒内击中所有目标!这是一款很不错的CSS小游戏,使用了复选框和CSS动画。
游戏地址:https://codepen.io/una/pen/NxZaNr
作者:Una Kravets
Tic-Tac-Toe (井字棋游戏)
这是一款经典的小游戏。这款纯CSS的井字棋游戏只有2关,也使用了复选框和CSS动画。
游戏地址:https://codepen.io/alvaromontoro/pen/BexWOw
作者:Alvaro Montoro
Flexbox Zombies
这款游戏带有故事情节,你可以从中学习如何使用Flexbox和弩来打僵尸。这款游戏需要注册。
游戏地址:https://mastery.games/p/flexbox-zombies
价格:179美元
作者:Dave Geddes
Service Workies
在这款冒险游戏中,你可以学习如何避免PWA的陷阱。你可以提高自己的技术力,并与游戏中的角色一起成长。也许你可以试着杀死在可怜的村子里肆虐了几个世纪的凶猛野兽!这款游戏需要注册。
游戏地址:https://serviceworkies.com
价格:179美元
作者:Dave Geddes
Grid Critters
在这款游戏中,你掌握CSS Grid的旅程始于这位神秘的Grid勇士。你的任务是使用强大的Grid工具来拯救外星生物,使其免于灭绝。这款游戏需要注册。
游戏地址:https://gridcritters.com
价格:179美元
作者:Dave Geddes
总结
不论你是初学者还是专家,我都希望你能够在玩游戏的同时又能学习一些有关CSS的知识!另外,你可以在Codepen上找到很多只用HTML和CSS创建的非常很棒的游戏。
你还知道哪些非常有趣的学习CSS的游戏?请在下方留言。
原文:https://dev.to/devmount/8-games-to-learn-css-the-fun-way-4e0f
本文为 CSDN 翻译,转载请注明来源出处。
【END】
*请认真填写需求信息,我们会在24小时内与您取得联系。