HTML5 Canvas之猜数字游戏
主要的内容描述的是如何渲染一个矩形的边框和填充背景,以及文字.
代码中有详细的注释:
效果图:
以下是代码:
<!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之猜数字游戏的更多相关文章
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- python学习笔记 ——python写的猜数字游戏 002
from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...
- 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。
最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...
- C语言之猜数字游戏
猜数字游戏 猜数字游戏是以前功能机上的一款益智游戏,计算机会根据输入的位数随机分配一个符合要求的数据,计算机输出guess后便可以输入数字,注意数字间需要用空格或回车符加以区分,计算机会根据输入信息给 ...
- c语言-猜数字游戏
#include <stdio.h> #include <stdlib.h> int top(); int input(); void main() { ; int numbe ...
随机推荐
- vim自定义配置之autoComplPop设置
BundlenInstall安装autoComplPop vimConfig/plugin/autoComplPop-setting.vim "autocomplpop 设置 let g:A ...
- TCP 3-Way Handshake (SYN,SYN-ACK,ACK)
http://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml
- 除去a标签target="_blank"的方法
用Jquery:$(function(){$("div>a").attr("target","_blank");});先查找页面上的d ...
- 把MacBook里的电影导入到iPad
主要是用iTunes -> 文件 -> 添加到资料库,然后选择影片 -> 同步 -> 应用.在iPad上点开视频APP即可. 怎样才能把mac里的电影放到ipad里_百度知道 ...
- Zookeeper客户端 CuratorFramework使用
CuratorFramework使用 跟着实例学习ZooKeeper的用法: Curator框架应用 ZooKeeper客户端Curator使用一 创建连接
- 1 预备知识--Hadoop简介
1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...
- 图搜索——使用DFS和BFS耗时比较
图测试数据生成代码: #include<bits/stdc++.h> using namespace std; int random(int mod) { return rand() % ...
- 需登录账号与密码的网页爬取demo
public static String connect(String dataUrl){ String result = null; try { HttpClient httpclient = ne ...
- mysql修复表
数据库Table xxx is marked as crashed and should be repaired错误的解决方法服务器断电等原因可能导致数据表损坏,导致访问的时候提示:Table xxx ...
- C语言指针的一些题目
1.将从键盘输入的每个单词的第一个字母转换成大写字母输入时各单词以空格隔开,用“.”结束输入 解体思路: 把输入的字符存入字符数组中直到输入".",然后调用函数,把字符串的第一个 ...