• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 借助HTML5 Canvas API制作一个简单的猜字游戏_html5教程技巧

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5,Canvas,API等相关知识,匿名希望在学习及工作中可以帮助到您
二话不说,先上效果图以及源代码~
2016325105351695.png (535×346)

HTML代码

XML/HTML Code复制内容到剪贴板
<!doctype html>  
<html lang="en">  
    <head>  
        <meta charset="utf-8" />  
        <script type="text/javascript" src="chp1_guess_the_letter.js?1.1.5">script>  
        <script type="text/javascript" src="modernizr.custom.99886.js?1.1.5">script>  
    head>  
    <body>  
        <canvas id="canvas_guess_the_letter" width="500" height="300">  
            你的浏览器不支持HTML5 Canvas   
        canvas>  
        <form>  
            <input type="button" id="createImageData" value="Export Canvas Image" />;   
        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 < 0) {   
                    higherOrLower = "请输入正确的字符";   
                } else if(guessIndex < letterIndex) {   
                    higherOrLower = "小了";   
                } else {   
                    higherOrLower = "大了";   
                }   
            }   
            drawScreen();   
        }   
    }   
       
    function drawScreen() {   
        //背景   
        context.fillStyle = "#ffffaa";   
        context.fillRect(0, 0, 500, 300);   
           
        //箱子   
        context.strokeStyle = "#000000";   
        context.strokeRect(5, 5, 490, 290);   
        context.textBaseLine = "top";   
           
        //日期   
        context.fillStyle = "#000000";   
        context.font = "10px _sans";   
        context.fillText(today, 150, 20);   
           
        //消息   
        context.fillStyle = "#FF0000";   
        context.font = "14px _sans";   
        context.fillText(message, 125, 40);   
           
        //猜测次数   
        context.fillStyle = "#109900";   
        context.font = "16px _sans";   
        context.fillText("猜测次数: "+guesses, 215, 60);   
           
        //大还是小   
        context.fillStyle = "#000000";   
        context.font = "16px _sans";   
        context.fillText("大还是小: "+higherOrLower, 150, 135);   
           
        //已经猜测的字符   
        context.fillStyle = "#FF0000";   
        context.font = "16px _sans";   
        context.fillText("已经猜测的字符: "+letterGuessed.toString(), 10, 260);   
           
        if(gameOver) {   
            context.fillStyle = "#FF0000";   
            context.font = "40px _sans";   
            context.fillText("你猜中了", 150, 180);   
        }   
    }   
       
    function createImageDataPressed(e) {   
        window.open(theCanvas.toDataURL(), "canvasImage","left=0, top=0, width="+theCanvas.width+", height="+theCanvas.height+", toolbar=0, resizable=0");   
    }   
}


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

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

案例当中涉及的变量。

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

变量的声明


JavaScript Code复制内容到剪贴板

  1. 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复制内容到剪贴板

  1. function initGame() {   
            var letterIndex = Math.floor(Math.random() * letters.length);   
            l
      
    
    
     

您可能想查找下面的文章:

  • HTML5知识点总结
  • HTML5的本地存储
  • HTML5本地存储之IndexedDB
  • Html5实现文件异步上传功能
  • Html5新标签datalist实现输入框与后台数据库数据的动态匹配
  • 详解HTML5 window.postMessage与跨域
  • HTML5拖放API实现拖放排序的实例代码
  • 解决html5中video标签无法播放mp4问题的办法
  • HTML5新特性 多线程(Worker SharedWorker)
  • Html5新增标签有哪些

相关文章

  • 2018-12-03h5History 模式的实例教程
  • 2017-08-06Html5新标签解释及用法
  • 2018-12-03W3C 为什么工作效率很低?
  • 2018-12-03苹果官网是怎么做到完美保证多平台浏览体验的?
  • 2017-08-06html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
  • 2018-12-03使用jquery实现HTML5响应式导航菜单教程_html5教程技巧
  • 2018-12-03HTML5拖拽文件到浏览器并实现文件上传下载功能代码_html5教程技巧
  • 2017-09-04HTML5中的video&audio
  • 2018-12-03浅谈html5 响应式布局_html5教程技巧
  • 2018-12-03vue项目中如何映入noVNC远程桌面

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • html5实现兼容各大浏览器的播放器的解析
    • Android自定义环形LoadingView效果
    • Less与Sass框架如何使用?
    • HTML5 组件Canvas实现电子钟的图文代码详情介绍
    • 购买域名后该怎么建网站?
    • HTML5 Canvas中绘制一个像素宽的细线实现代码详情
    • HTML5组件Canvas实现图像灰度化
    • HTML5的革新 结构之美
    • 使用HTML5拍照示例代码介绍
    • HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有