0

0

网页小游戏开发入门

php中文网

php中文网

发布时间:2016-06-24 11:15:08

|

3356人浏览过

|

来源于php中文网

原创

记得我最开始接触编程就是父亲在“裕兴学习机”上开发了一款“扫雷”的游戏,从此开始喜欢上了计算机编程。作为纪念,也希望能给一些正在学习网页开发的同学一点点帮助,我这里也从头开始用“网页”技术开发一款“扫雷”的小游戏。

网页小游戏开发,顾名思义,首先我们是制作了一个网页。 网页 是互联网中与用户的交互的基本元素,并被浏览器“渲染”展示呈现给用户。从最早网页的开始,我们仅能呈现给用户“文本”,后来由于互联网的进步,我们能够支持呈献给用户“富文本”(即带有一定样式的文本,如大小不同、颜色不同等等),进而出现“多媒体”(图片、声音、视频等)甚至更多可能的交互形式(如 麦克风、摄像头、重力感应、震动等等)。在这个发展过程中,网页的开发技术逐渐定型,网页本身使用 HTML 文本进行基本界面的绘制,使用 CSS 文本描述各个元素的高级特征,如边框、偏移、位置、颜色、阴影等等,使用 JavaScript 脚本语言(文本形式,解释执行、不需要编译)进行交互、行为、功能开发。

一些准备工作

首先,我们需要准备一些用于网页开发的编辑器工具软件。在若干年前,开发网页有“三剑客”之称的三款软件即 Dreamweaver / Flash / Firework (/Photoshop) ,分别负责 TML/CSS/JavaScript 、 动画、图片处理。从上面介绍的背景和我们将要进行的开发工作来看,我们只需要只涉及到 HTML/CSS/JavaScript 文本 形式程序的开发(对多媒体,如图片,我们仅 使用 而不对这些资源进行修改、调整),所以我们仅需要 Dreamweaver 这款程序。当然,这是若干年前的选择,也可以说是“低端”的选择。在我实际工作中,仅需要一款 附带语法高亮功能的 文本编辑器 就足够了。除特殊情况外,我一般使用 SublimeText ,附带各种强大插件的强大文本编辑器,大家可以尝试使用(程序员对编辑器的喜爱永恒是萝卜青菜的讨论,所以, 仅供参考 )。

其次,在开发调试网页的过程中,我推荐使用 Chrome 浏览器,相对调试方便,对相关技术标准的支持(在开发这个小游戏开发过程当中用到的技术,理论上在 IE9+ 的浏览器中都是可用的)。国内下载这款浏览器时可以去 https://api.shuax.com/tools/getchrome ,这里一般都能跟上官方更新,并且提供的是去除了国内根本不能用的更新服务的版本下载地址;

最后,需要注意一点,在整个调试过程当中,请保证您的 设备连接在互联网上 (由于直接引入了网络上一些成熟的JavaScript库 CSS 库,辅助、简化开发工作。当然这些库可以暂时不去详细学习,只需要按照教程能够看懂即可);

游戏的入口

目前我们暂时不进入到实际“扫雷”的开发中,我们把入口准备一下:进入游戏时,我们让用户输入自己的姓名(将来游戏结束时记录各个用户对应的成绩):

<!DOCTYPE html><html>	<head>		<meta charset="utf-8" />		<title>扫雷 - 网页小游戏</title>		<!-- 这里引入的一个辅助库,帮助我们更好的定义网页和开发功能,可以暂不纠结具体 -->		<link href="http://cdn.bootcss.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="styleSheet" />		<script src="http://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>		<!-- 下面文件用来定义我们 扫雷 游戏的外观样式(见下文) -->		<link href="./minesweeper.css" rel="styleSheet" />	</head>	<body>		<div class="block entry">			<!-- (1) 用户登记 -->			你是谁?		</div>		<div class="block main">			雷区			<!-- (2) 游戏主界面 -->		</div>		<div class="block rank">			排行榜			<!-- (3) 游戏排行榜 -->		</div>		<!-- 我们的程序、逻辑、行为将在下面的 js 文件中定义 -->		<script src="./minesweeper-entry.js"></script>		<script src="./minesweeper-main.js"></script>		<script src="./minesweeper-rank.js"></script>	</body></html>

把上面的代码放在一个文本文件中,并保存在后缀 .html 并在浏览器中打开就能看到下面的样子:

上面的代码即就是 HTML 。使用 HTML 我们能够定义出网页的基本结构:

  1. 最外层 和结尾处的 定义了一个网页的范围,也就是说,我们制作网页的内容都应该出现在这个范围之内;

  2. … 中描述了网页的一部分“非可视区域”或“附加”信息,例如页面的文本编码(编码概念可以暂不纠结,姑且使用 UTF-8 这种编码即可),网页标题(显示窗口标题的文字),附加的样式表( )等等;

    按照 HTML5 标准中的描述,无内容标签(有内容标签: 内容标签> )不要求必须闭合例如 上面 也可以写作 , 按照 XHTML 标准要求所有标签必须闭合。

  3. … 中描述网页“可视区域”的结构,我们创建了三个区块(
    ...
    ),并在其内部填充了简单的文本内容;

    在 HTML 语言中使用 来包含注释内容;

    918网赚广告任务网系统
    918网赚广告任务网系统

    918网赚广告任务网系统是918团队专业开发,针对网赚项目设置,综合网赚的用户开发! 918网赚广告任务网系统前台栏目有 1、首 页 2、任务赚钱 3、浏览赚钱 4、点击赚钱 5、挂机赚钱 6、游戏赚钱 7、发布广告 8、商品购买 9、创业加盟 918网赚广告任务网系统后台功能也很完善,美工也不错。栏目有 会员管理 财务管理 商务管理 系统设置 918网赚广告任务网系统安装使用说明 系

    下载
  4. class="xxxx" 表达了我们将对指定的区块进行“样式”定义,即 CSS (级联样式表),我们下面就对上述三个区块,进行对应的样式(外观、位置等)定义(将下面内容保存为 minesweeper.css ):

body { /* 对网页中的 <body></body> 所包含的内容定义“样式” */	background: #f0f0f0; /* 定义背景颜色为淡灰色 */	/* 颜色值为 6 位 16 进制数字,RRGGBB 即红、绿、蓝 原色,取值从 00 ~ ff */	margin: 0; /* 区块外空隙 */}.block { /* 对网页中 class="block" 的 <div> 包含的内容定义“样式” */	padding: 20px; /* 区块内空隙 */	background: #fff; /* 定义背景颜色为白色 */	border: 1px solid #556575; /* 定义 1 像素 实线 边框,颜色为蓝色 */	text-align: center; /* 让当前元素中的文本(或类文本的元素)水平居中 */	margin: 20px; /* 区块外空隙 */}

CSS 中,使用 /* */ 来表达注释

为了让用户输入姓名,我们需要给用户提供一个输入框;将下面的代码替换到位置 (1) :

<form class="form-inline entry">	<fieldset class="form-group">		<label>请输入您的姓名:</label>		<input id="entry_input_name" type="text" class="form-control" placeholder="请输入您的姓名,以便将成绩计入排行榜!">	</fieldset>	<div class="entry-start">		<button id="entry_button_start" type="button" class="btn btn-primary">开始游戏</button>	</div></form>

上面代码为网页加入了输入框,及开始游戏用的按钮;为了后续方便我们对实际元素的操控,我们给每个元素起了一个名字( id="xxxxxx" );

我们需要再补充一点“样式”让布局更美观一些(不加入这些样式的话,输入框会和开始按钮挤在一起,大家可以自行试验):

/* 对网页中 class 属性中同时包含 "block" "entry" 的元素 内部的 class 属性包含 "form-inline" 的 元素 内部的 class 属性包含 "form-group" 的元素定义样式 */.block.entry .form-inline .form-group { 	margin-bottom: 15px; /* 含义与 margin 相同,但仅定义 元素外部 下方 空隙 */}

到这里,我们目前需要呈献给用户的“界面”已经初具规模了,大家可以自行在输入框中输入文字,点击按钮看到“按下”效果:

但有个问题:用户输入的姓名会在网页刷新( F5 )后就会消失。我们希望在用户输入后,除非自行删除或修改,应该能保持之前输入的内容,所以我们加入下面的 JavaScript 代码( minesweeper-entry.js 文件中):

(function($) {	// 使用 $("#xxxxxxx") 这种形式来访问网页中对应的 id="xxxxxxx" 的元素	// 在输入框中发生 键盘 “抬起” keyup 或 “按下” keydown 时	$("#entry_input_name").on("keyup keydown", function(e) {		// 执行这段代码,保存当前输入框中的内容		localStorage.setItem("entry_input_name", $(this).val())		// 在这种事件处理函数内部,this 即就是当前处理的元素("#entry_input_name")	})	// 每次执行这里时,把保存的内容读取出来,并重新放回到输入框	$("#entry_input_name").val( localStorage.getItem("entry_input_name") )	// 第二个 $("#entry_input_name") 可以省略,让 .val 跟在前面 }) 后面	// 因为上面的操作都是针对 #entry_input_name 这个元素}(jQuery))

上面代码中, .val() 函数 用于获取对应输入框的内容,或设置其内容(取决于是否存在参数);

到这里,网页刷新后,之前输入的名称就不会在消失了~

JavaScript 使用 // 表示单行注释, /* */ 表示多行注释;

localStorage 是浏览器提供给网页用于进行简单的 名称 -> 数据 形式数据存储、读取的内置对象

对象,简单来说就是可以用 . 点 来访问、调用内部属性、函数的变量;

附件

这一节目前完成的完整代码可以在这里下载压缩包

在线游戏
在线游戏

海量精品小游戏合集,无需安装即点即玩,休闲益智、动作闯关应有尽有,秒开即玩,轻松解压,快乐停不下来

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1142

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

371

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

245

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

37

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

114

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

77

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

863

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

123

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号