美文网首页
公司要求写5个h5小游戏

公司要求写5个h5小游戏

作者: 我要当个程序员 | 来源:发表于2018-01-23 10:18 被阅读0次

做iOS开发,公司要求写5个h5小游戏,其中一个就是我们所熟悉的大转盘。

一开始觉得很简单的一个小游戏,但完成了两款小游戏时候,发现大转盘不是很简单。日了个狗。于是就慢慢开始分析。

这里由于隐私,我就不上转盘图。我自己可以画一张给你们看

01.png

一个简单的大转盘游戏吧,一个箭头在固定位置,然后顺时针旋转。就这样的一个简单功能。一点点完成吧。

1、首先我觉得你要画一个弧饼图,各种翻找资料。其实很简单,无奈自己根本不是很会js,更不懂js里面的画图方法。百度一下,找到画弧的函数,自己在琢磨一下,就画出一个弧饼图了,上代码(本次代码,都是纯纯的js代码+jq框架)

html前端代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
        <script type="text/javascript" src="js/game.js"></script>
        <title></title>
    </head>
    <body>
        
    </body>
</html>

js代码

$(document).ready(function(){
    drawPie();
});

//画图
function drawPie(){
    //添加画图容器
    var canvas= $('<canvas></canvas>');
    canvas.attr("id","myCanvas");
    canvas.css("position","relative");
    canvas.css("margin-left",100);
    canvas.css("margin-top",100);
    canvas.attr("width",300);
    canvas.attr("height",300);
    canvas.css("border","solid #ff9b00 1px");
    canvas.appendTo($("body"));
}

画弧饼

$(document).ready(function(){
    drawPie();
});

//画图
function drawPie(){
    //添加画图容器
    var canvas= $('<canvas></canvas>');
    canvas.attr("id","myCanvas");
    canvas.css("position","relative");
    canvas.css("margin-left",100);
    canvas.css("margin-top",100);
    canvas.attr("width",300);
    canvas.attr("height",300);
    canvas.css("border","solid #ff9b00 1px");
    canvas.appendTo($("body"));
    
    //圆形坐标半径
    var circle = {
        x : 100,    //圆心的x轴坐标值
        y : 100,    //圆心的y轴坐标值
        r : 50      //圆的半径
    };
    
    ///////////增加的代码行
    //弧度
    var hu = {
        sAngle: 0,
        eAngle: 0.25*Math.PI
    }
    //获取之前创建的canvas
    var canvas=document.getElementById('myCanvas');
    
    //判断浏览器支持画图
    if(canvas.getContext){
            //获取对应的CanvasRenderingContext2D对象(画笔)
        var ctx = canvas.getContext("2d"); 
        //开始一个新的绘制路径
        ctx.beginPath();
        //设置弧线的颜色为透明
        ctx.strokeStyle = "rgba(0,0,0,0)";
        //连接终点线
        ctx.lineTo(100, 100);
        //沿着坐标点(100,100)为圆心、半径为50px的圆的顺时针方向绘制弧线
        ctx.arc(circle.x, circle.y, circle.r, 0, 0.25*Math.PI, false);
        //连接终点线
        ctx.lineTo(100, 100);
        ctx.closePath();
        ctx.fillStyle = "rgb(2,100,30)";
        ctx.fill();
    }
}
上图 02.png

绘制整个圆形弧度

$(document).ready(function(){
    drawPie();
});

//画图
function drawPie(){
    //添加画图容器
    var canvas= $('<canvas></canvas>');
    canvas.attr("id","myCanvas");
    canvas.css("position","relative");
    canvas.css("margin-left",100);
    canvas.css("margin-top",100);
    canvas.attr("width",300);
    canvas.attr("height",300);
    canvas.css("border","solid #ff9b00 1px");
    canvas.appendTo($("body"));
    var canvas=document.getElementById('myCanvas');
    
    //圆形坐标半径
    var circle = {
        x : 100,    //圆心的x轴坐标值
        y : 100,    //圆心的y轴坐标值
        r : 50      //圆的半径
    };
    
    //弧度
    var hus = [];
    for(var i = 0; i < 8; i++){
        var hu = {
            sAngle: i*(0.25*Math.PI),
            eAngle: (i+1)*0.25*Math.PI
        }
        hus[i] = hu;
    }
    
    //颜色
    var colors = [];
    for(var i = 0; i < 8; i++){
        var rgb = "rgb("+GetRandomNum(0,255)+","+GetRandomNum(0,255)+","+GetRandomNum(0,255)+")";
        colors[i] = rgb;
    }
    //获取之前创建的canvas
    var canvas=document.getElementById('myCanvas');
    
    //判断浏览器支持画图
    if(canvas.getContext){
            //获取对应的CanvasRenderingContext2D对象(画笔)
        var ctx = canvas.getContext("2d");  
            draw(ctx);
    }
    
    function draw(ctx){
        for(var i = 0; i < hus.length; i++){
            ctx.beginPath();
            //设置弧线的颜色为透明
                ctx.strokeStyle = colors[i];
            //连接终点线
            ctx.lineTo(100, 100);
            //沿着坐标点(100,100)为圆心、半径为50px的圆的顺时针方向绘制弧线
            ctx.arc(circle.x, circle.y, circle.r, hus[i]["sAngle"], hus[i]["eAngle"], false);
            //连接终点线
            ctx.lineTo(100, 100);
            //填充颜色
            ctx.fillStyle = colors[i];
            ctx.fill();
        }
    }
}

//随机整数
function GetRandomNum(Min,Max)
{   
    var Range = Max - Min;   
    var Rand = Math.random();   
    return(Min + Math.round(Rand * Range));   
}  

上图


02.png

接下来就是给饼图添加点击事件。。。。由于时间关系。。。

相关文章

网友评论

      本文标题:公司要求写5个h5小游戏

      本文链接:https://www.haomeiwen.com/subject/dbojaxtx.html