Javascript 如何为我的HTML游戏实现一个简单的菜单?

Javascript 如何为我的HTML游戏实现一个简单的菜单?,javascript,html,menu,Javascript,Html,Menu,我正在用HTML制作一个简单的游戏,或多或少它是有效的。。。我的问题是,我是否可以制作一个简单的菜单/带有“点击开始”或类似的功能/在背景上有一个图像和一个按钮来开始游戏。如果我能把它放在同一个档案里。 谢谢 <canvas id="ctx" width="1024" height="800" style="border:3px solid #000000;"></canvas> <script> var Height = 800; var Widt

我正在用HTML制作一个简单的游戏,或多或少它是有效的。。。我的问题是,我是否可以制作一个简单的菜单/带有“点击开始”或类似的功能/在背景上有一个图像和一个按钮来开始游戏。如果我能把它放在同一个档案里。 谢谢

    <canvas id="ctx" width="1024" height="800" style="border:3px solid #000000;"></canvas>
<script>

var Height = 800;
var Width = 1024;
var timeElapset = Date.now();

var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = '30px Consolas';

var frameCount = 0;
var score = 0;

var player = {
    x:50,
    spdX:30,
    y:40,
    spdY:30,
    name:'P',
    hp:10,
    width:20,
    height:20,
    color:'green',
};

var enemyList = {};

getDistance = function (Obj1,Obj2){ 

    var vx = Obj1.x - Obj2.x;
    var vy = Obj1.y - Obj2.y;
    return Math.sqrt((vx*vx)+(vy*vy));
}


checkCollision = function (Obj1,Obj2){

    var rect1 = {
        x: Obj1.x - Obj1.width/2,
        y: Obj1.y - Obj1.height/2,
        height: Obj1.height,
        width: Obj1.width,
    }

    var rect2 = { 
        x: Obj2.x - Obj2.width/2,
        y: Obj2.y - Obj2.height/2,
        height: Obj2.height,
        width: Obj2.width,
    }
    return testCollisionRectRect(rect1,rect2); //true o false

}

Enemy = function (id,x,y,spdX,spdY,width,height){

    var enemy = {
        x:x,
        spdX:spdX,
        y:y,
        spdY:spdY,
        name:'E',
        id:id,
        width:width,
        height:height,
        color:'black',
    };
    enemyList[id] = enemy;    
}

document.onmousemove = function(mouse){

    var mouseX = mouse.clientX - document.getElementById('ctx').getBoundingClientRect().left;
    var mouseY = mouse.clientY - document.getElementById('ctx').getBoundingClientRect().top;

    if(mouseX < player.width/2)
        mouseX = player.width/2;

    if(mouseX > Width-player.width/2)
        mouseX = Width - player.width/2;

    if(mouseY < player.height/2)
        mouseY = player.height/2;

    if(mouseY > Height - player.height/2)
        mouseY = Height - player.height/2;

    player.x = mouseX;
    player.y = mouseY;
}


updateEntity = function (Z){

    updatePosition(Z);
    drawPlayer(Z);
}


updatePosition = function(Z){

    Z.x += Z.spdX;
    Z.y += Z.spdY;

    if(Z.x < 0 || Z.x > Width){
        Z.spdX = -Z.spdX;
    }
    if(Z.y < 0 || Z.y > Height){
        Z.spdY = -Z.spdY;
    }
}


testCollisionRectRect = function(rect1,rect2){

    return rect1.x <= rect2.x+rect2.width && 
           rect2.x <= rect1.x+rect1.width && 
           rect1.y <= rect2.y + rect2.height &&
           rect2.y <= rect1.y + rect1.height;
}


drawPlayer = function(Z){


    ctx.save();
    ctx.fillStyle = Z.color;
    ctx.fillRect(Z.x-Z.width/2,Z.y-Z.height/2,Z.width,Z.height);

    ctx.restore();
}

update = function(){

    ctx.clearRect(0,0,Width,Height);
    frameCount++;
    score++;

    if(frameCount % 100 == 0)
        randomGenerateEnemy();


    for(var key in enemyList){
        updateEntity(enemyList[key]);

        var isColliding = checkCollision(player, enemyList[key]);

        if(isColliding){
            player.hp = player.hp -1;
        }
    }

    if(player.hp <= 0){
        var timeSurvived = Date.now() - timeElapset;           
        console.log("Has ganado Kappa, Tiempo vivo " + timeSurvived + " ms."); 
        ctx.fillText(" You Lose! ", Width/2, Height/2);
        GameEngine();
    }


    drawPlayer(player);
    ctx.fillText(player.hp + " Hp",20,30);
    ctx.fillText('Puntuacion: ' + score/10,700,30);
}


GameEngine = function(){

    player.hp = 13;
    timeElapset = Date.now();
    frameCount = 0;
    score = 0;

    enemyList = {};

    randomGenerateEnemy();
    randomGenerateEnemy();
    randomGenerateEnemy();
    randomGenerateEnemy();

}


randomGenerateEnemy = function(){

    var x = Math.random()*Width;
    var y = Math.random()*Height;

    var height = 10 + Math.random()*70;    
    var width = 10 + Math.random()*70;
    var id = Math.random();

    var spdX = 5 + Math.random() * 5;
    var spdY = 5 + Math.random() * 5;

    Enemy(id,x,y,spdX,spdY,width,height);  
}

GameEngine();

setInterval(update,30);

</script>

var高度=800;
var宽度=1024;
var timeElapset=Date.now();
var ctx=document.getElementById(“ctx”).getContext(“2d”);
ctx.font='30px控制台';
var frameCount=0;
var得分=0;
变量播放器={
x:50,
spdX:30,
y:40,
spdY:30,
姓名:'P',
hp:10,
宽度:20,
身高:20,
颜色:'绿色',
};
var enemyList={};
getDistance=函数(Obj1,Obj2){
var vx=Obj1.x-Obj2.x;
var vy=Obj1.y-Obj2.y;
返回Math.sqrt((vx*vx)+(vy*vy));
}
检查碰撞=功能(Obj1、Obj2){
变量rect1={
x:Obj1.x-Obj1.width/2,
y:Obj1.y-Obj1.height/2,
高度:Obj1.height,
宽度:Obj1.width,
}
变量rect2={
x:Obj2.x-Obj2.width/2,
y:Obj2.y-Obj2.height/2,
高度:Obj2.height,
宽度:Obj2.width,
}
返回TestCollisionRect(rect1,rect2);//true o false
}
敌人=功能(id、x、y、spdX、spdY、宽度、高度){
var敌人={
x:x,
spdX:spdX,
y:y,
斯皮:斯皮,
姓名:'E',
id:id,
宽度:宽度,
高度:高度,,
颜色:'黑色',
};
enemyList[id]=敌人;
}
document.onmousemove=函数(鼠标){
var mouseX=mouse.clientX-document.getElementById('ctx').getBoundingClientRect().left;
var mouseY=mouse.clientY-document.getElementById('ctx').getBoundingClientRect().top;
如果(鼠标X宽度播放器宽度/2)
mouseX=Width-player.Width/2;
如果(鼠标<玩家高度/2)
mouseY=player.height/2;
如果(鼠标>高度-玩家高度/2)
鼠标=高度-player.Height/2;
player.x=mouseX;
player.y=mouseY;
}
updateEntity=函数(Z){
更新位置(Z);
拉丝机(Z);
}
updatePosition=函数(Z){
Z.x+=Z.spdX;
Z.y+=Z.spdY;
如果(Z.x<0 | | Z.x>宽度){
Z.spdX=-Z.spdX;
}
如果(Z.y<0 | | Z.y>高度){
Z.spdY=-Z.spdY;
}
}
testCollisionRectRect=函数(rect1,rect2){

返回矩形.x*p>该代码还包含JavaScript。对于适当的游戏功能,必须在HTML页面上调用JS文件。还使用CSS使其具有吸引力。请考虑此示例

enter code here
<html>
<head>
<title>Your game title</title>
<script type="text/javascript" src="src/Common.js"></script>
<script type="text/javascript" src="src/Perlin.js"></script>
<script type="text/javascript" src="src/ChaikinCurve.js"></script>
<script type="text/javascript">
    var app = null;
    window.onload = function() {
        utils.loadShaderXml("src/render/shaders.xml", null,          function(shaders) {
            if (shaders instanceof Exception) {
                app = shaders;
            } else {
                try {
                    app = new App('canvas', shaders, null);
                } catch (e) {
                    app = e;
                }
            }
        });
        document.onselectstart = function () {
            return false;
        };
    };
    function application() {
        if (app == null) {
            alert("Application is absent");
            throw "no application";
        } else if (app instanceof Exception) {
            alert("An exception occured while creating the application:\n" + app.message);
            throw app;
        } else {
            return app;
        }
    }
</script>

<style type="text/css">
    body{
        margin: 0px; padding: 0px; overflow: hidden;
        background: #000;
    }
    #canvas-holder.active {
        position: absolute;
        padding: 0px;
        left: 50%;
        top: 50%;
    }
    #canvas-holder.inactive {
        position: absolute;
        top:50%;
        width: 100%;
        text-align: center;
    }
    #canvas {
        padding: 0px;
        width: 100%;
        height: 100%;
        color: #fff;
        font-family: Allan, Arial;
        font-size: 40px;
    }
</style>
</head>
<body>
<div id="canvas-holder" class="inactive">
<div id="canvas">Your game` is loading...</div>
</div>
<div style="font-family: Lobster; visibility: hidden">one</div>
<div style="font-family: Allan; visibility: hidden">two</div>
<div style="font-family: Meddon; visibility: hidden">three</div>
<div style="font-family: Cuprum; visibility: hidden">four</div>
</body>
</html>
在此处输入代码
你的游戏名称
var-app=null;
window.onload=函数(){
loadShaderXml(“src/render/shaders.xml”),null,函数(着色器){
if(着色器实例of Exception){
app=着色器;
}否则{
试一试{
app=新应用程序('canvas',着色器,null);
}捕获(e){
app=e;
}
}
});
document.onselectstart=函数(){
返回false;
};
};
函数应用程序(){
如果(app==null){
警报(“申请不存在”);
抛出“无申请”;
}else if(应用实例异常){
警报(“创建应用程序时发生异常:\n”+app.message);
投掷应用程序;
}否则{
返回应用程序;
}
}
身体{
边距:0px;填充:0px;溢出:隐藏;
背景:#000;
}
#帆布支架{
位置:绝对位置;
填充:0px;
左:50%;
最高:50%;
}
#帆布支架{
位置:绝对位置;
最高:50%;
宽度:100%;
文本对齐:居中;
}
#帆布{
填充:0px;
宽度:100%;
身高:100%;
颜色:#fff;
字体系列:Allan,Arial;
字体大小:40px;
}
你的游戏正在加载。。。
一
二
三
四

这是…非常有描述性的代码。真的有助于解决问题,是的。@NiettheDarkAbsol我应该把所有代码都放在那里吗?我是新手,对不起