借助HTML5 Canvas API制作一个简单的猜字游戏_html5教程技巧

二话不说,先上效果图以及源代码~
2016325105351695.png (535×346)

HTML代码

XML/HTML Code复制内容到剪贴板nbsp;html>                            script>          script>      head>                              你的浏览器不支持HTML5 Canvas           canvas>                        ;           form>      body>  html>

登录后复制

JS代码

立即学习“前端免费学习笔记(深入)”;

JavaScript Code复制内容到剪贴板/**   * @author Rafael   */  window.addEventListener("load", eventWindowLoaded, false);     var Debugger = function() {          };   Debugger.log = function(message) {       try {           console.log(message);       } catch(exception) {           return;       }   }     function eventWindowLoaded() {       canvasApp();   }     function canvasSupport() {       return Modernizr.canvas;   }     function canvasApp() {       var guesses = 0;       var message = "Guess The Letter From a(lower) to z(higher)";       var letters = ["a","b","c","d","e","f","g","h","i","j","k","l",                       "m","n","o","p","q","r","s","t","u","v","w","x","y","z"];       var today = new Date();       var letterToGuess = "";       var higherOrLower = "";       var letterGuessed = [];       var gameOver = false;              if(!canvasSupport()) {           return;       }              var theCanvas = document.getElementById("canvas_guess_the_letter");       var context = theCanvas.getContext("2d");              initGame();              function initGame() {           var letterIndex = Math.floor(Math.random() * letters.length);           letterToGuess = letters[letterIndex];           guesses = 0;           lettersGuessed = [];           gameOver = false;           window.addEventListener("keyup", eventKeyPressed, true);           var formElement = document.getElementById("createImageData");           formElement.addEventListener('click', createImageDataPressed, false);           drawScreen();       }              function eventKeyPressed(e) {           if(!gameOver) {               var letterPressed = String.fromCharCode(e.keyCode);               letterPressed = letterPressed.toLowerCase();               guesses++;               letterGuessed.push(letterPressed);               if(letterPressed == letterToGuess) {                   gameOver = true;               } else {                   letterIndex = letters.indexOf(letterToGuess);                   guessIndex = letters.indexOf(letterPressed);                   if(guessIndex 

登录后复制

从游戏名称可以看出,该游戏是猜字游戏。每局系统都会自动生成一个字母,玩家会按键盘来猜测该字母是哪一个。

例如生成的是s,玩家按了h,则游戏就会提示《小了》,因为英文字母当中h的索引比s的索引更靠前。

案例当中涉及的变量。

guesses:猜测次数
message:文字提示,指导用户如何玩该游戏
letters:文字数组,存放我们要猜测的文字的集合。这个例子用的是a到z
today:今天的日期
letterToGuess:要猜测的文字
higherOrLower:是《大了》还是《小了》
letterGuessed:已经猜测过得文字
gameOver:游戏是否结束,是布尔变量,开始的时候是false,猜对后设为true

变量的声明

JavaScript Code复制内容到剪贴板

var guesses = 0;   var message = "Guess The Letter From a(lower) to z(higher)";   var letters = ["a","b","c","d","e","f","g","h","i","j","k","l",                   "m","n","o","p","q","r","s","t","u","v","w","x","y","z"];   var today = new Date();   var letterToGuess = "";   var higherOrLower = "";   var letterGuessed = [];   var gameOver = false;

登录后复制

初始化游戏

JavaScript Code复制内容到剪贴板

function initGame() {           var letterIndex = Math.floor(Math.random() * letters.length);           letterToGuess = letters[letterIndex];           guesses = 0;           lettersGuessed = [];           gameOver = false;           window.addEventListener("keyup", eventKeyPressed, true);           var formElement = document.getElementById("createImageData");           formElement.addEventListener('click', createImageDataPressed, false);           drawScreen();

登录后复制

    }  

通过使用Math的random()函数和floor()函数,根据文字的数组生成要猜测的文字。

并且当用户按键盘的时候监听《keyup》事件,根据传递过来的event,生成按下的键值。

因猜测游戏对大小写不敏感,为防止用户按大写字母,我们需要把值转换成小写形式。

猜测次数+1

猜测出来的文字添加到已经猜测的文字数组当中

JavaScript Code复制内容到剪贴板

var letterPressed = String.fromCharCode(e.keyCode);   letterPressed = letterPressed.toLowerCase();   guesses++;   letterGuessed.push(letterPressed);

登录后复制

剩下的就只有判断 大和小了。

通过indexOf函数 我们可以判断要猜测的文字和我们输入的文字在字符集上面的索引值。

如果我们输入的更靠前则提示《小了》反之《大了》

最终用户猜对了要猜测的文字 我们会在中央用大号字体显示《你猜对了》

JavaScript Code复制内容到剪贴板

letterIndex = letters.indexOf(letterToGuess);   guessIndex = letters.indexOf(letterPressed);   if(guessIndex 

登录后复制

 

至此这个功能差不多完成了吧,我们还有一个小功能,那就是通过按下按钮的方式可以把屏幕结果抓去出来。

用的函数为toDataUrl(),有兴趣的朋友研究一下。

 以上就是借助HTML5 Canvas API制作一个简单的猜字游戏_html5教程技巧的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3126365.html

(0)
上一篇 2025年3月29日 20:22:42
下一篇 2025年3月29日 20:22:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用html5的FormData对象,通过 Ajax表单异步提交文件数据

    每次在向服务器提交文件对象数据是,总是需要借助各种三方插件来实现表单异步提交功能,还要为不同的界面去定制不同的插件css,相当繁琐。xmlhttprequest level 2 添加了一个新的接口——formdata。利用 formdata…

    编程技术 2025年4月4日
    100
  • html5的八大技术特征简介

    html5的八大技术特征简介:   HTML5 这个词获得了它自己的生命。无论是在开发者还是公众社区中,这个词的指代对象早已超过了简简单单一个标准的范畴,以至于来带了诸多的不解和争论。这套标准 需要一个标准。那就是,HTML5需要一组一致的…

    编程技术 2025年4月4日
    200
  • HTML5 Canvas 起步(1) – 基本概念

    什么是canvas  是一个新的 HTML 元素,这个元素在 HTML5 中被定义。这个元素通常可以被用来在 HTML 页面中通过 JavaScript 进行绘制图形、合成图像等等操作,也可以用来做一些动画。当然,目前 HTML5 规范还在…

    编程技术 2025年4月4日
    200
  • html5 worker 实例(一) 为什么测试不到效果

    很多人在测试worker api的时候,总是会出现异常,根本测试不到效果。 在使用worker的时候有个必须注意的地方,就是单纯的文本文件是实现不了worker的,你写的实际代码 必须部署到服务器(tomcat.jboss等)才能运行wor…

    编程技术 2025年4月4日
    200
  • html5 worker 实例(二) 图片变换效果

    worker的js代码img.js  onmessage = function(e) { postMessage(filter(e.data)) }; function filter(imgd) { var pix = imgd.pixel…

    编程技术 2025年4月4日
    200
  • 关于HTML5和CSS替换使用

    听到html5的都知道它的强大,如更多的描述性标记、较少依赖于插件的多媒体支持、跨文档消息通信、web sockets、客户端存储、更强大的表单、提升可访问性、先进的选择器、强大的视觉效果。费话不多说,细细说来 被废弃的标签和属性 废弃的标…

    编程技术 2025年4月4日
    100
  • 利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

    摇一摇js脚本逻辑:接下来是移动端js脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (window.DeviceMotionEven…

    编程技术 2025年4月4日
    100
  • H5的video标签操作摄像头

    这次给大家带来H5的video标签操作摄像头,H5的video标签操作摄像头注意事项有哪些,下面就是实战案例,一起来看一下。 详解HTML5 使用video标签实现选择摄像头功能 1. html // jquery reference //…

    编程技术 2025年4月4日
    100
  • H5的文本格式化使用方法

    这次给大家带来H5的文本格式化使用方法,H5文本格式化使用的注意事项有哪些,下面就是实战案例,一起来看一下。 注意事项对于我们编写注意事项也是非常重要的,各种各样的样式都需要使用到文本格式化,具体什么效果呢? 加粗文本斜体文本电脑自动输出这…

    编程技术 2025年4月4日
    100
  • HTML5离线应用与客户端存储的实现

    这篇文章主要介绍了html5离线应用与客户端存储的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 支持离线 Web 应用开发是 HTML5 的另一个重点。所谓离线 Web 应用,就是在设备不能上网…

    编程技术 2025年4月4日
    200

发表回复

登录后才能评论