三十分钟做一个网页游戏

简介: 本文目的是短时间之内,通过做出一个简单的缘分对对碰游戏,了解网页的基本要素。之前没有接触过网页开发,这次算是个入门了。对于大部分网页,都要包括HTML、CSS、JavaScript三种技术。而相对应的三种文件格式为.html、.css、.js。下面首先给出这个游戏的代码,在分析中学习。我认为了解整体框架之后,学习过程中对于自己不懂的部分百度一下,可以学习的更快,因此我不会做的过于详细。对最新标准支持比较好的是Chrome和Firefox浏览器,推荐使用这两个浏览器进行调试。

本文目的是短时间之内,通过做出一个简单的缘分对对碰游戏,了解网页的基本要素。之前没有接触过网页开发,这次算是个入门了。

对于大部分网页,都要包括HTML、CSS、JavaScript三种技术。而相对应的三种文件格式为.html、.css、.js。下面首先给出这个游戏的代码,在分析中学习。我认为了解整体框架之后,学习过程中对于自己不懂的部分百度一下,可以学习的更快,因此我不会做的过于详细。对最新标准支持比较好的是Chrome和Firefox浏览器,推荐使用这两个浏览器进行调试。

游戏说明

1.png

这是一个非常简单的游戏。用户输入两个名字,点击测一测,就可以看到缘分指数。整个游戏总共有三个文件,即上文提到的三个。

HTML部分
HTML即超文本标记语言负责呈现给用户的界面,通过各种标记来定义网页的目录和内容。最新的标准为HTML5,新标准下面的游戏开发是最近比较火的一个方向。
下面是相应的代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>缘分对对碰</title>
    <link rel="stylesheet"
          type="text/css"
          href="wordStory.css"/>
    <script type="text/javascript"
    src="wordStory.js">
    </script>
</head>
<body>
    <h1>缘分对对碰</h1>
    <h2>输入你和ta的名字,测出你们的缘分指数!</h2>
    <p>
        <form>
            <fieldset>
                <label for="boyName">男方姓名</label>
                <input type="text" id="boyName"/>
                <label for="girlName">女方姓名</label>
                <input type="text" id="girlName"/>
                <button type="button"
                        οnclick="tellStory()">
                    测一测
                </button>
            </fieldset>
        </form>
        <div id="output">
            
        </div>
    </p>    
</body>
</html>

在<>中的称为tag,通常首尾tag中的内容称为一个container,单个tag一般为element。tag中可以定义参数,如type等等。
html tag包含html代码,包括head和body两部分。
而head中title定义了浏览器中显示的标签名称,link tag给出了一个到css文件的链接,script给出了使用的JavaScript文件,如果不想使用外部的css和js文件,可以在head部分直接贴代码。
在body部分,h1给出了大标题,h2、h3等等可以定义小一级的标题。form和fieldset tag内部是一个表格。lable和input分别定义了标签和输入文本框。button定义了一个按钮,onclick参数设定了点击按钮时候要运行的代码。
div tag给出了一个可以使用JS实时改变的html内容,具体如何改变下面会提到。
CSS部分
CSS又称为风格样式表,定义了网页呈现的风格和样式,如字体大小、颜色、边距等等。
CSS文件代码:

    background-color: rgb(228,255,255);
}
h1{
    text-align: center;
}
h2{
    text-align: center;
    color: rgb(20,180,30);
}
fieldset{
    width: 600px;
    text-align: center;
    margin: auto;
}
label{
    float: left;
    text-align: right;
    padding-right: 1em;
    clear: left;
    width: 300px;
}
input{
    float: left;
}
button{
    display: block;
    clear: both;
    margin: auto;
}
#output{
    text-align: center;
    font-size: 36px;
    color: rgb(120,30,250);
}

可以看到,代码是分块构成的,每个块定义对应的tag的样式。最后一个#output之前加#可以把一个div通过id变成一个可以操作的container。
大多数参数都能从名字看出含义,这也是网页开发中的一个要点。因为网页代码通常数量多,良好的命名方式可以加快开发速度。
不过,有几个参数略微复杂。padding定义了tag内部的边缘空白,而margin定义了外部的边缘空白。float使tag中内容向某个方向靠,clear则是使某个方向上开始的元素就是这个tag,即不会在左边还有元素。比如label就使得每个label停靠在容器最左边。clear:both则使得这个元素单独成一行。
JavaScript部分
JS历史悠久,生命力非常强大。在客户端Angular等各种各样的库,甚至可以在浏览器里模拟linux系统(jslinux),也可以运行大型游戏(doom和epic citadel)。而在服务器端,node.js在chrome浏览器v8引擎基础上作为server,性能远超php。可以说,JS is the future。当然这是一句玩笑话。
在这个游戏HTML文件中看到,按键被点击时会调用tellStory函数,这个函数是在JavaScript文件中定义的。
下面给出代码:

    var textBoyName=document.getElementById("boyName");
    var boyName=textBoyName.value;
    var textGirlName=document.getElementById("girlName");
    var girlName=textGirlName.value;
    var output=document.getElementById("output");
    var point=Math.ceil(10*(Math.random()+9));
    story=boyName+" 和 "+girlName+" 此时此刻的缘分指数为 "+point;
    output.innerHTML=story;
}//end tellStory

这段代码仅仅定义了一个函数。函数中getElementById可以根据id得到相应的元素,取其value值就是用户输入的文本。使用random函数随即生成一个分数,就可以输出了(额,如何生成分数可以更sophisticate一些)。当然,这个输出是输出到output对应的div元素中的。
进一步的学习
将css和js代码分别存储为文件,使用浏览器打开html文件,这个游戏就可以运行了。
这是一个非常简单的游戏,对于初学者,可以跟着Wiley.HTML5.Game.Development.for.Dummies.2013这本书学习。
空谈误国,实干兴邦。如果一直只是看代码,看书,是很难精通网页开发的。最好自己实现一些功能模块,可以参照现有的网站富贵论坛www.fgba.net,w3school在学习过程中的参考手册很方便。

目录
相关文章
|
小程序 前端开发 数据挖掘
嘘!市面上短视频(douyin)“去水印”的工具原来是这样实现的
现在视频号非常火热,之前在做抖音和快手的人就直接把之前的视频直接搬运过来了。但是从抖音app下载的视频都是带官方水印的?这个是怎么去掉的?哦,不对,他们应该都有保 留原视频的吧。但是还有很多人是直接搬运别人的视频的,那他们是怎么去水印的呢? 其实早就有很多现成的工具,如小程序、去水印app都能直接去水印,甚至还有收费的。
2147 1
嘘!市面上短视频(douyin)“去水印”的工具原来是这样实现的
|
移动开发 缓存 前端开发
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
6158 0
推荐一大波让你直呼哇塞的Canvas库【值得收藏】
|
网络协议 Unix C语言
C语言 网络编程(十六)广播和组播
广播和组播是网络通信的重要方式。广播允许一台主机向子网内所有主机发送数据包,常用于局域网内的消息传播;组播则将数据包发送给特定的一组主机,适用于视频会议等应用场景。广播地址如 `192.168.1.255` 用于同一子网的所有主机。组播地址如 `224.0.0.0` 至 `239.255.255.255` 标识特定主机群。C语言示例展示了如何通过 UDP 实现广播和组播通信。此外,UNIX域套接字用于同一机器上进程间的高效通信。
878 14
|
缓存 关系型数据库 MySQL
MySQL执行计划深度解析:如何做出最优选择
【10月更文挑战第23天】 在数据库查询性能优化中,执行计划的选择至关重要。MySQL通过查询优化器来生成执行计划,但有时不同的执行计划会导致性能差异。理解如何选择合适的执行计划,以及为什么某些计划更优,对于数据库管理员和开发者来说是一项必备技能。
738 2
|
传感器 物联网 测试技术
智能硬件类产品定制开发流程
硬件定制开发是指根据特定需求设计和制造符合客户要求的硬件产品,包括定制电路设计、功能模块集成、外观设计等。这种方式常用于满足特定行业的独特需求,以提高系统效率、降低成本、增强竞争力。
511 1
|
SQL Java 关系型数据库
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
2287 0
|
前端开发 JavaScript
Vue+Swiper实现轮播图效果
Vue+Swiper实现轮播图效果
430 1
|
Linux C语言
C语言将xxx.bin文件转为数组
C语言将xxx.bin文件转为数组
417 0
|
移动开发 前端开发 JavaScript
推荐前 6 名 JavaScript 和 HTML5 游戏引擎
我知道你在想什么:你到底为什么要用JavaScript来开发游戏?当我发现你可以使用JavaScript和HTML5来开发3D游戏时,我也是这样想的。
890 0