Html5最简单的游戏Demo——Canvas绘图的骰子

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>骰子游戏</title>
    <script type="text/javascript">
        var crapsSize = 100;//骰子的width,height
        var crapsMargin = 50;//骰子的边距
        var pointRadius = 10;//点的半径
        var money = 500;//钱

        function InitCraps() {
            drawCraps(6, 6, 6);

            var sumLabel = document.getElementById("coinSum");
            sumLabel.textContent = money;
        }

        function Bet() {
            var num1 = Math.floor(Math.random() * 6 + 1);
            var num2 = Math.floor(Math.random() * 6 + 1);
            var num3 = Math.floor(Math.random() * 6 + 1);

            drawCraps(num1, num2, num3);

            var resultLabel = document.getElementById("betResult");
            var sumLabel = document.getElementById("coinSum");
            var bigRadio = document.getElementById("bigRadio");

            var crapsSum = num1 + num2 + num3;
            if (crapsSum == 3 || crapsSum == 18) {//庄家通杀
                money = money - 50;
                sumLabel.textContent = money;
                resultLabel.textContent = "庄家通杀!";
            }
            else if (crapsSum <= 10) {//4~10,小
                if (bigRadio.checked) {
                    money = money - 50;
                    sumLabel.textContent = money;
                    resultLabel.textContent = "有赌未为输,继续!";
                }
                else {
                    money = money + 50;
                    sumLabel.textContent = money;
                    resultLabel.textContent = "不赌不知时运高,继续!";
                }
            }
            else {//11~17,大
                if (bigRadio.checked) {
                    money = money + 50;
                    sumLabel.textContent = money;
                    resultLabel.textContent = "不赌不知时运高,继续!";
                }
                else {
                    money = money - 50;
                    sumLabel.textContent = money;
                    resultLabel.textContent = "有赌未为输,继续!";
                }
            }
        }

        function drawCraps( craps1,craps2,craps3) {
            var ctx = document.getElementById("myCanvas").getContext("2d");

            var crapsArray = new Array(craps1, craps2, craps3);
            for (var i = 0; i < 3; i++) {
                var xOffset = crapsMargin * (i + 1) + crapsSize * i;

                ctx.clearRect(xOffset, crapsMargin, crapsSize, crapsSize);
                switch (crapsArray[i]) {
                    case 1: draw1(ctx, xOffset);
                        break;
                    case 2: draw2(ctx, xOffset);
                        break;
                    case 3: draw3(ctx, xOffset);
                        break;
                    case 4: draw4(ctx, xOffset);
                        break;
                    case 5: draw5(ctx, xOffset);
                        break;
                    default: draw6(ctx, xOffset);
                        break;
                }
            }
        }

        function drawRect(ctx,xOffset) {
            ctx.strokeRect(xOffset, crapsMargin, crapsSize, crapsSize);
        }

        function draw1(ctx, xOffset) {
            ctx.beginPath();
            ctx.arc(xOffset + crapsSize / 2, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
            ctx.fill();

            drawRect(ctx, xOffset);
        }

        function draw3(ctx, xOffset) {
            draw1(ctx, xOffset);
            draw2(ctx, xOffset);
        }

        function draw5(ctx, xOffset) {
            draw4(ctx, xOffset);
            draw1(ctx, xOffset);
        }

        function draw4(ctx, xOffset) {
            ctx.beginPath();
            ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
            ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true);
            ctx.closePath();
            ctx.fill();

            ctx.beginPath();
            ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
            ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true);
            ctx.closePath();
            ctx.fill();

            drawRect(ctx, xOffset);
        }

        function draw2(ctx, xOffset) {
            ctx.beginPath();
            ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 4 * 3, pointRadius, 0, 2 * Math.PI, true);

            ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 4, pointRadius, 0, 2 * Math.PI, true);
            ctx.fill();

            drawRect(ctx, xOffset);
        }

        function draw6(ctx, xOffset) {
            ctx.beginPath();
            ctx.arc(xOffset + crapsSize / 4, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
            ctx.arc(xOffset + crapsSize / 4 * 3, crapsMargin + crapsSize / 2, pointRadius, 0, 2 * Math.PI, true);
            ctx.closePath();
            ctx.fill();

            draw4(ctx, xOffset);
        }
    </script>
</head>
<body onload="InitCraps()">
    <canvas id="myCanvas" width="500" height="200">your broswer does not support canvas.</canvas>
    <br />
    <input type="radio" name="sex" value="大" id="bigRadio" checked="checked"/>大
    <input type="radio" name="sex" value="小" />小
    <br />
    <input type="button" value="play" onclick="Bet()" />
    <br />
    <label>*三个骰子,总点数为4至10称作小,11至17为大,围骰除外</label>
    <br />
    <label>本次结果:</label>
    <label id="betResult">Null</label>
    <br />
    <label>当前钱币总数为:</label>
    <label id="coinSum">0</label>
</body>
</html>
时间: 2024-11-05 04:38:05

Html5最简单的游戏Demo——Canvas绘图的骰子的相关文章

HTML5 学习总结(四)——canvas绘图、WebGL、SVG

HTML5 学习总结(四)--canvas绘图.WebGL.SVG 目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML5游戏开发 2.2.1.Cocos2D-HTML5 2.2.2.Egret(白鹭引擎) 三.SVG 3.1.SVG Hello Wrold 3.2.多种引入SVG的方法 3.3.画直线 3.4.画椭圆 3.5.文本与矩形 3.6.向

HTML5 学习笔记(四)——canvas绘图、WebGL、SVG

一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一

Html5 学习系列(五)Canvas绘图API快速入门(2)

Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片.图片处理等...如果想获得更好的阅读效果请点击老马的独立博客地址. 一.Canvas绘制线条 Context对象的beginPath方法表示开始绘制路径,moveTo(x, y)方法设置线段的起点,lineTo(x, y)方法设置线段的终点,stroke方法用来给透明的线段着色.moveto和li

HTML5 十大新特性(四)——Canvas绘图

H5引入了canvas标签,默认是一个300*150的inline-block.canvas的宽高只能用它自身的width和height属性来指定,而不能使用css样式中的width.height. 一.获得'画笔'对象,canvas所有的任务都需要它来执行 var ctx=canvas.getContext('2d'); 二.一些canvas常用的属性 fillStyle:填充样式 strokeStyle:描边样式 lineWidth:描边宽度 font:绘制文本所用的字体大小和类型 text

Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解

概述 类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode.在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果.当使用PorterDuffXfermode时,需要将将其作为参数传给Paint.setXfermode(Xfermo

怎样用HTML5 Canvas制作一个简单的游戏

为了让大家清楚HTML5制作游戏的简单流程,所以先了制作一个非常简单的游戏,来看一看这个过程.   游戏非常简单,无非就是英雄抓住怪物就得分,然后游戏重新开始,怪物出现在地图的随机位置,英雄初始化在地图的中间.点击[这里](../simple_canvas_game-master/index.html "simple_canvas_game"),我们可以直接先玩玩这个游戏 ![simple_game](Figure/1_simple_game.png) ## 1. 创建一个Canvas

html5 canvas绘图-贝塞尔曲线

贝塞尔曲线(ezier curve)最迟是由法国物理学家与数学家paul de Casteljau发明的.它的广泛运用则要归功于法国工程师皮埃尔 贝塞尔 贝塞尔曲线期初被用在汽车车身的设计上.现在则多用于计算机图形系统中.例如Adobe Illustrator/Apple的Cocoa框架以及在Html5的canvas. 贝塞尔曲线分为两种:平方(quadratic)贝塞尔曲线及立方(cubic)贝塞尔曲线.平方贝塞尔曲线是一种二次曲线(second degree curve),意思就是说,它们是

HTML5之Canvas绘图——使用Canvas绘制图形的基本教程

原文转自:http://www.cnblogs.com/picaso/archive/2012/11/26/2789077.html HTML5火的正热,最近有个想法也是要用到HTML的相关功能,所以也要好好学习一把. 好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是几个实例,记下以备后用. 1.使用Canvas绘制直线: 1 <!doctype html> 2 <html> 3 <head> 4 <

HTML5 canvas绘图基本使用方法

<canvas></canvas>是HTML5中新增的标签,用于绘制图形,实际上,这个标签和其他的标签一样,其特殊之处在于该标签可以获取一个CanvasRenderingContext2D对象,我们可以通过JavaScript脚本来控制该对象进行绘图. <canvas></canvas>只是一个绘制图形的容器,除了id.class.style等属性外,还有height和width属性.在<canvas>>元素上绘图主要有三步: 获取<