Javascript 如何为我的HTML游戏实现一个简单的菜单?
我正在用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
<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我应该把所有代码都放在那里吗?我是新手,对不起