主要的内容描述的是如何渲染一个矩形的边框和填充背景,以及文字.

代码中有详细的注释:

效果图:

以下是代码:

<!DOCTYPE html>
<html lang="cn">
<head>
<title>猜数字游戏示例</title>
<meta charset="gb2312">
<script type="text/javascript">
//@author 杨虹昌
//guess全局属性 GuessBean对象
var guess=null;
var context=null;//2d全局上下文 //检查浏览器是否支持canvas属性
function canvasSupport(){
return !!document.createElement("canvas").getContext;
} //dom加载完成后所执行的函数
function windowLoaded(){
canvasStart();
} //对日志对象的简单封装
var Debugger=(function(){
//输出日志信息
this.log=function(message){
try{
console.log(message);
}catch(e){ }
}
return this;
})(); // 定义游戏类实体
function GuessBean(){
this.today=null;//显示当前时间
this.guessNum=-1;//要猜的数字,初始为负数
this.pressNum=-1;//用户按下的数字,初始为负数代表是初始化状态
this.numGuessed;//用户已经猜过的数字
this.guesses=0;//记录用户猜过的次数
this.gameOver=false;//游戏是否已经结束
this.message="猜数字,数字从0-9.";//提示用户消息
this.hightOrLower="";
} //初始化游戏相关信息,并返回GuessBean对象
function initGame(){
Debugger.log("初始化游戏设置>>");
guess=new GuessBean();
guess.guessNum=Math.floor(Math.random()*10);//生成0-9的随机数
Debugger.log("此次生成的随机数:"+guess.guessNum);
guess.today=new Date();//获取当前日期
guess.guesses=0;//初始化猜的次数为0
guess.gameOver=false;
guess.hightOrLower="";
guess.numGuessed=[];
Debugger.log("绑定dom键盘按下事件.");
//添加事件绑定
window.addEventListener("keyup",listenerKeyPressed,true);
drawScreen();//执行渲染
} //canvas程序入口
function canvasStart(){
// 判断浏览器是否支持canvas
if(!canvasSupport()){
return;
}
//获取dom文档中id属性为"theCanvas"的元canvas素
var theCanvas=document.getElementById("theCanvas");
//获取2d上下文,注意:此处的2d只能是小写,大写不能获取此对象
context=theCanvas.getContext("2d");
Debugger.log("开始渲染>>");
initGame(); }
//完成屏幕渲染
function drawScreen(){
//
context.fillStyle="#ffffaa"; //设置填充颜色
context.fillRect(0,0,500,300); //创建一个矩形 //围绕图像以及文本绘制一个非填充的小方块,
context.strokeStyle="#000000"; //设置填充颜色
//绘制矩形边框,一下四个参数分别为:
//第一和第二个参数:左上角x,y坐标
//第三和第四个参数:右下角x,y坐标
context.strokeRect(5,5,490,290); //设置字体大小和字号
context.textBaseline="top"; //设置字体的垂直对齐方式 //日期
context.fillStyle="#000000"; //设置填充颜色
context.font="12px 隶书"; //设置字体大小和类型
//参数:
//第一个参数:渲染内容
//第二个参数:x轴
//第三个参数:y轴
context.fillText("时间:"+guess.today.toLocaleString(),20,10); // 消息
context.fillStyle="#ff0000"; //设置填充颜色
context.font="14px 隶书"; //设置字体大小和类型
context.fillText("消息:"+guess.message,250,10); //
context.fillStyle="#109910";
context.font="16px 隶书";
context.fillText("Guesses:"+guess.guesses,250,30); //
context.fillStyle="#000000";
context.font="23px 隶书";
context.fillText("Higher or Lower:"+guess.hightOrLower,30,125); //
context.fillStyle="#ff0000";
context.font="18px 隶书";
context.fillText("Num Guessed:"+guess.numGuessed,10,260); //游戏结束
if(guess.gameOver){
context.fillStyle="#ff0000";
context.font="40px 隶书";
context.fillText("恭喜你,答对了!",150,180);
}
} //处理键盘按下事件
function listenerKeyPressed(e){
//游戏结束
if(guess&&guess.gameOver){
Debugger.log("游戏结束.>>");
return;
}
var digit=String.fromCharCode(e.keyCode);
guess.guesses++;//猜的次数加1
guess.numGuessed.push(digit);//记录猜的值
//判断是否与对应的随机值相等
if(parseInt(digit)===guess.guessNum){
guess.gameOver=true;//游戏结束
}else{
//判断是否是数字
if((/^\d$/.test(digit))){
if(parseInt(digit)>guess.guessNum){
guess.hightOrLower="大了.";
}else{
guess.hightOrLower="小了.";
}
}else{
guess.hightOrLower="您按下的不是一个数字.";
}
}
drawScreen();//渲染
}
//添加事件监听
window.addEventListener("load",windowLoaded,false);
</script>
</head>
<body>
<canvas id="theCanvas" width="500" height="300">
<!-- 这个里面是写当不支持canvas时候的提示信息-->
浏览器不支持html5 canvas ,建议使用chrome 或者FF
</canvas>
</body>
</html>

源码地址: https://code.csdn.net/yhc13429826359/html5_canvas_demo

HTML5 Canvas之猜数字游戏的更多相关文章

  1. C语言猜数字游戏

    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...

  2. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  3. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  4. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  5. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  6. python学习笔记 ——python写的猜数字游戏 002

    from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...

  7. 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。

    最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...

  8. C语言之猜数字游戏

    猜数字游戏 猜数字游戏是以前功能机上的一款益智游戏,计算机会根据输入的位数随机分配一个符合要求的数据,计算机输出guess后便可以输入数字,注意数字间需要用空格或回车符加以区分,计算机会根据输入信息给 ...

  9. c语言-猜数字游戏

    #include <stdio.h> #include <stdlib.h> int top(); int input(); void main() { ; int numbe ...

随机推荐

  1. 关于Android App开发知识体系的一个小总结

     前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 ...

  2. 存在继承关系的Java类对象之间的类型转换(一)

      类似于基本数据类型之间的强制类型转换. 存在继承关系的父类对象和子类对象之间也可以 在一定条件之下相互转换. 这种转换需要遵守以下原则: 1.子类对象可以被视为是其父类的一个对象2.父类对象不能被 ...

  3. Oracle 级联with admin option 和 with grant option

    · 授权通过grant 语法:GRANT object_priv[(columns)][ON object] TO {user|role|public} [WITH GRANT OPTION] · 回 ...

  4. 5_python之路之员工管理系统

    python之路之员工管理系统 1.程序说明:Readme.cmd 1.程序文件:info_management.py user_info 2.程序文件说明:info_management.py-主程 ...

  5. JDK、Spring、Quartz等几种不同定时器的用法,以及cronExpression表达式定义

    referenc:https://blog.csdn.net/clementad/article/details/42042111 下面介绍几种常用的定时器及其实现方法: 第一种:Timer和Time ...

  6. linux中grep工具

    正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...

  7. Linux下安装MATLAB

    Why do I see "Preparing installation files ... Installing ... Finished..." in the terminal ...

  8. 「小程序JAVA实战」小程序数据缓存API(54)

    转自:https://idig8.com/2018/09/22/xiaochengxujavashizhanxiaochengxushujuhuancunapi52/ 刚开始写小程序的时候,用户信息我 ...

  9. maven+testng+reportng的pom设置

    在pom.xml 加入: <dependency> <groupId>org.testng</groupId> <artifactId>testng&l ...

  10. LUA表与函数的深入理解

    local heroInfo = {} --直接打印 table的名字,就会输出该table的内存地址 print("表地址---------------",heroInfo) - ...