html5 canvas--2.猜字母游戏

简介:   今天我们要用canvas制作一个猜字母的小游戏,先来张效果图。   游戏设计很简单,系统会随机从a-z的26个字母中选择一个保存起来,你键盘输入一个字母,系统会提示你正确字符比你当前输入字母小还是大,直到你输入正确的字母游戏才结束。

  今天我们要用canvas制作一个猜字母的小游戏,先来张效果图。

  游戏设计很简单,系统会随机从a-z的26个字母中选择一个保存起来,你键盘输入一个字母,系统会提示你正确字符比你当前输入字母小还是大,直到你输入正确的字母游戏才结束。

  下面介绍js代码中需要用到的一些变量及其他们的含义,系统会在开始的时候初始化这些变量。

guesses:用户猜字母的次数;

message:帮助玩家如何玩游戏的说明;

letters:保存26个英文字母的数组;

today:当前时间;

letterToGuess:系统选中的字母,也就是你需要猜中的字母;

higherOrLower:提示用户当前输入的字母比答案大还是小;

lettersGuessed:用户已经猜过的字母;

gameOver:游戏是否结束。

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 lettersGuessed;
var gameOver = false;

  下面我们介绍响应键盘弹起的事件,用来判断用户输入的字母是否是正确答案:

$(window).bind('keyup', eventKeyPressed);
function eventKeyPressed(e) {
    //首先判断游戏是否结束
    if (!gameOver) {
        //获取输入字母
        var letterPressed = String.fromCharCode(e.keyCode);
        //做小写处理
        letterPressed = letterPressed.toLowerCase();
        //游戏次数加1
        guesses++;
        //把输入字母保存到已猜字母数组
        lettersGuessed.push(letterPressed);

        //判断输入字母和答案是否一致,一致则游戏结束
        if (letterPressed == letterToGuess) {
            gameOver = true;
        } else {
            //获取答案在字母数组中的位置
            var letterIndex = letters.indexOf(letterToGuess);
            //获取输入字母在字母数组中的位置
            var guessIndex = letters.indexOf(letterPressed);

            Debugger.log(guessIndex);

            //判断大小
            if (guessIndex < 0) {
                higherOrLower = "That is not a letter";
            } else if (guessIndex > letterIndex) {
                higherOrLower = "Letter is Lower than you entered";
            } else {
                higherOrLower = "Letter is Higher than you entered";
            }
        }

        //重绘canvas
        drawScreen();
    }
}

  这里需要注意的一点是,当我们需要对canvas中的图像做修改时,一般会重新绘制整个canvas对象。所以在我们每猜一次字母,都会执行drawScreen把整个canvas上的所有对象都绘制一遍。

  下面我们看看drawScreen都干了什么。

function drawScreen() {
    //background
    context.fillStyle = '#ffffaa';
    context.fillRect(0, 0, 500, 300);

    //box
    context.strokeStyle = '#000000';
    context.strokeRect(5, 5, 490, 290);
    context.textBaseLine = 'top';

    //date
    context.fillStyle = '#000000';
    context.font = '10px_sans';
    context.fillText(today, 150, 20);

    //message
    context.fillStyle = '#ff0000';
    context.font = '14px_sans';
    context.fillText(message, 125, 40);

    //guesses
    context.fillStyle = '#109910';
    context.font = '16px_sans';
    context.fillText('Guesses:' + guesses, 215, 60);

    //higher or lower
    context.fillStyle = '#000000';
    context.font = '16px_sans';
    context.fillText('Higher or Lower:' + higherOrLower, 150, 125);

    //letters guessed
    context.fillStyle = '#ff0000';
    context.font = '16px_sans';
    context.fillText('Letters Guessed:' + lettersGuessed.toString(), 10, 260);

    if (gameOver) {
        context.fillStyle = "#FF0000";
        context.font = "40px _sans";
        context.fillText("You Got It!", 150, 180);
    }
}

  代码很简单,就是绘制背景,还有文字信息。下面我们介绍导入图像的功能,当我们点击“Export Canvas Image”按钮的时候,会打开一个新的页面,显示当前的图像。注意toDataURL()方法,他会返回一个64位的png图片数据。

$('#createImageData').click(function () {
  window.open(theCanvas.toDataURL(), 'canvasImage', 'left=0,top=0,width=' + theCanvas.width + ',height=' + theCanvas.height + ',toolbar=0,resizab         le=0');
});

  大家还是直接运行demo,查看最终效果吧。demo下载地址:html5canvas.guessTheLetter.zip

目录
相关文章
|
11天前
HTML在线扫雷游戏网页源码
HTML在线扫雷游戏网页源码是一款基于HTML+CSS+JavaScript开发的在线扫雷小游戏单页源码,为用户提供了一个无需安装即可在浏览器中直接玩的扫雷游戏。该游戏的源码不仅包含了完整的游戏逻辑,还具备丰富的界面设计和用户交互功能,使得玩家能够轻松上手并享受扫雷带来的乐趣。
51 22
|
1月前
|
Web App开发 移动开发 前端开发
html5 canvas五彩碎纸屑飘落动画特效
h5 canvas飘落纸片动画是一款实现五彩纸屑飘落的背景动画特效,基于canvas绘制的空中飘落的纸屑片动画特效,适用于网页动态背景效果代码。简单使用,欢迎下载!代码适用浏览器:搜狗、360、FireFox(建议)、Chrome、Safari、Opera、傲游、世界之窗,是一款不错的的特效插件,希望大家喜欢!
40 5
|
2月前
|
前端开发
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
31 0
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
|
2月前
|
移动开发 前端开发 HTML5
HTML5 Canvas制作的粒子十秒倒计时源码
一段基于HTML5 Canvas制作的粒子爆炸,十秒数字倒计时,全屏倒计时动画效果,给人一种非常大气的视觉感
40 0
HTML5 Canvas制作的粒子十秒倒计时源码
|
6月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
119 0
|
2月前
|
前端开发 JavaScript
Canvas三维变化背景动画HTML源码
Canvas三维变化背景动画HTML源码
36 5
|
4月前
|
移动开发 JavaScript 数据管理
HTML5 拖放在游戏中的应用
HTML5的拖放功能在游戏开发中广泛应用,尤其在创建交互式网页游戏时。它支持多种场景,如拖动角色或物品、选择和装备物品、拼图或配对游戏以及自定义界面布局。通过简单的HTML和JavaScript代码,可实现流畅的拖放交互,并提供视觉反馈,增强用户体验。此外,还需考虑设备兼容性和数据管理,确保游戏在不同设备和浏览器上都能良好运行。总之,HTML5拖放功能使网页游戏更生动有趣。
|
4月前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
4月前
|
移动开发 前端开发 JavaScript
HTML5 Canvas详解及应用
HTML5 Canvas 允许通过 JavaScript 在网页上动态绘制图形、动画等视觉内容。首先在 HTML 中定义 `&lt;canvas&gt;` 元素,并通过 JavaScript 获取画布上下文进行绘制。常见方法包括绘制矩形、路径、圆形和文本,以及处理图像和创建动画效果。适用于游戏开发、数据可视化、图像编辑和动态图形展示等多种应用场景。需要注意性能优化、无状态绘制及自行处理事件等问题。
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项