html css的小游戏,HTML+CSS+JavaScript 2048小游戏

HTML代码:

score: 0

GAME OVER!!!

score:

TRY AGAIN!

CSS样式:

*{

padding: 0;

margin: 0;

font-family: Arial;

}

.score01{

width: 580px;

font-size: 50px;

font-weight: bold;

margin: 100px auto 0;

}

#score01,#score02{

color: red;

}

.box{

width: 580px;

height: 580px;

background-color: #b7aaaf;

border-radius: 16px;

margin: 0 auto;

}

.cell{

width: 120px;

height: 120px;

background-color: #ccc2bf;

border-radius: 8px;

margin: 20px 0 0 20px;

float: left;

color: white;

text-align: center;

line-height: 120px;

font-size: 50px;

}

.n2{background-color:#eee3da;color:#776e65}

.n4{background-color:#ede0c8;color:#776e65}

.n8{background-color:#f2b179}

.n16{background-color:#f59563}

.n32{background-color:#f67c5f}

.n64{background-color:#f65e3b}

.n128{background-color:#edcf72}

.n256{background-color:#edcc61}

.n512{background-color:#9c0}

.n1024{background-color:#33b5e5;font-size:40px}

.n2048{background-color:#09c;font-size:40px}

.n4096{background-color:#a6c;font-size:40px}

.n8192{background-color:#93c;font-size:40px}

.gameover{

position: absolute;

top: 0;

bottom: 0;

left: 0;

right: 0;

background-color: rgba(0,0,0,0.3);

display: none;

}

.gameover p{

width: 400px;

height: 200px;

background-color: #fff;

border-radius: 10px;

font-size: 36px;

font-weight: bold;

text-align: center;

line-height: 66px;

position: absolute;

top: 50%;

left: 50%;

margin-top: -100px;

margin-left: -200px;

}

.gameover a{

background-color: #9f8d77;

color: white;

padding: 10px;

border-radius: 8px;

text-decoration: none;

}

JavaScript代码:

var game={

data:[],

score:0,

gamerunning:1,

gameover:0,

status:1,

//游戏开始

start:function(){

game.data=[

[0,0,0,0],

[0,0,0,0],

[0,0,0,0],

[0,0,0,0]

];

game.score=0;

game.status=game.gamerunning;

game.randomNum();

game.randomNum();

game.dataView();

},

//生成随机数

randomNum:function(){

for(;;){

var r=Math.floor(Math.random()*4);

var c=Math.floor(Math.random()*4);

if(game.data[r][c]==0){

var num=Math.random()>0.5?2:4;

game.data[r][c]=num;

break;

}

}

},

//将数组里的数据显示到页面中

dataView:function(){

for(var r=0;r<4;r++){

for(var c=0;c<4;c++){

var div=document.getElementById("c"+r+c);

if(game.data[r][c]!=0){

div.innerHTML=game.data[r][c];

div.className="cell n"+game.data[r][c];

}else{

div.innerHTML="";

div.className="cell";

}

}

}

document.getElementById("score01").innerHTML=game.score;

if(game.status==game.gameover){

document.getElementById("score02").innerHTML=game.score;

document.getElementById("gameover").style.display="block";

}else{

document.getElementById("gameover").style.display="none";

}

},

//游戏结束

isgameover:function(){

for(var r=0;r<4;r++){

for(var c=0;c<4;c++){

if(game.data[r][c]==0){

return false;

}

if(c<3){

if(game.data[r][c]==game.data[r][c+1]){

return false;

}

}

if(r<3){

if(game.data[r][c]==game.data[r+1][c]){

return false;

}

}

}

}

return true;

},

//左移

moveLeft:function(){

var before=game.data.toString();

for(var r=0;r<4;r++){

game.moveLeftInRow(r);

}

var after=game.data.toString();

if(before!=after){

game.randomNum();

if(game.isgameover()){

game.status=game.gameover;

}

game.dataView();

}

},

moveLeftInRow:function(r){

for(var c=0;c<3;c++){

var nextc=game.moveNextInRow(r,c);

if(nextc!=-1){

if(game.data[r][c]==0){

game.data[r][c]=game.data[r][nextc];

game.data[r][nextc]=0;

c--;

}else if(game.data[r][c]==game.data[r][nextc]){

game.data[r][c]*=2;

game.data[r][nextc]=0;

game.score+=game.data[r][c];

}

}else{

break;

}

}

},

moveNextInRow:function(r,c){

for(var i=c+1;i<4;i++){

if(game.data[r][i]!=0){

return i;

}

}

return -1;

},

//上移

moveUp:function(){

var before=game.data.toString();

for(var c=0;c<4;c++){

game.moveUpInCol(c);

}

var after=game.data.toString();

if(before!=after){

game.randomNum();

if(game.isgameover()){

game.status=game.gameover;

}

game.dataView();

}

},

moveUpInCol:function(c){

for(var r=0;r<3;r++){

var nextr=game.moveNextInCol(r,c);

if(nextr!=-1){

if(game.data[r][c]==0){

game.data[r][c]=game.data[nextr][c];

game.data[nextr][c]=0;

r--;

}else if(game.data[r][c]==game.data[nextr][c]){

game.data[r][c]*=2;

game.data[nextr][c]=0;

game.score+=game.data[r][c];

}

}else{

break;

}

}

},

moveNextInCol:function(r,c){

for(var i=r+1;i<4;i++){

if(game.data[i][c]!=0){

return i;

}

}

return -1;

},

//右移

moveRight:function(){

var before=game.data.toString();

for(var r=0;r<4;r++){

game.moveRightInRow(r);

}

var after=game.data.toString();

if(before!=after){

game.randomNum();

if(game.isgameover()){

game.status=game.gameover;

}

game.dataView();

}

},

moveRightInRow:function(r){

for(var c=3;c>0;c--){

var prec=game.movePreInRow(r,c);

if(prec!=-1){

if(game.data[r][c]==0){

game.data[r][c]=game.data[r][prec];

game.data[r][prec]=0;

c++;

}else if(game.data[r][c]==game.data[r][prec]){

game.data[r][c]*=2;

game.data[r][prec]=0;

game.score+=game.data[r][c];

}

}else{

break;

}

}

},

movePreInRow:function(r,c){

for(var i=c-1;i>=0;i--){

if(game.data[r][i]!=0){

return i;

}

}

return -1;

},

//下移

moveDown:function(){

var before=game.data.toString();

for(var c=0;c<4;c++){

game.moveDownInCol(c);

}

var after=game.data.toString();

if(before!=after){

game.randomNum();

if(game.isgameover()){

game.status=game.gameover;

}

game.dataView();

}

},

moveDownInCol:function(c){

for(var r=3;r>0;r--){

var prer=game.movePreInCol(r,c);

if(prer!=-1){

if(game.data[r][c]==0){

game.data[r][c]=game.data[prer][c];

game.data[prer][c]=0;

r++;

}else if(game.data[r][c]==game.data[prer][c]){

game.data[r][c]*=2;

game.data[prer][c]=0;

game.score+=game.data[r][c];

}

}else{

break;

}

}

},

movePreInCol:function(r,c){

for(var i=r-1;i>=0;i--){

if(game.data[i][c]!=0){

return i;

}

}

return -1;

},

}

game.start();

document.οnkeydοwn=function(event){

var event=event ||window.event;

if(event.keyCode==37){

game.moveLeft();

}else if(event.keyCode==38){

game.moveUp();

}else if(event.keyCode==39){

game.moveRight();

}else if(event.keyCode==40){

game.moveDown();

}

}

6e3dac3dd95cd374824b7c7f4b169b58.png

85aa11b0b7f2be72ad7e5d3126f1f003.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一个基于 HTMLCSSJavaScript小游戏,是一个打地鼠的游戏: HTML 部分: ```html <!DOCTYPE html> <html> <head> <title>打地鼠游戏</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>打地鼠游戏</h1> <div class="game-box"> <div class="hole"></div> <div class="hole"></div> <div class="hole"></div> <div class="hole"></div> <div class="hole"></div> <div class="hole"></div> </div> <button onclick="startGame()">开始游戏</button> <script src="script.js"></script> </body> </html> ``` CSS 部分: ```css .game-box { display: flex; flex-wrap: wrap; width: 300px; margin: 20px auto; } .hole { width: 80px; height: 80px; background-image: url('mole.png'); background-size: contain; background-repeat: no-repeat; background-position: center; margin: 10px; cursor: pointer; opacity: 0; transition: opacity 0.3s; } .hole.up { opacity: 1; } ``` JavaScript 部分: ```javascript var holes = document.querySelectorAll('.hole'); var score = 0; var isPlaying = false; function startGame() { if (isPlaying) { return; } isPlaying = true; score = 0; // 清除所有地鼠的状态 holes.forEach(hole => hole.classList.remove('up')); // 开始游戏 playGame(); } function playGame() { var time = Math.round(Math.random() * (1500 - 500) + 500); var hole = holes[Math.floor(Math.random() * holes.length)]; hole.classList.add('up'); setTimeout(function() { hole.classList.remove('up'); if (isPlaying) { playGame(); } }, time); } function whack(e) { if (!e.isTrusted) { return; } score++; this.classList.remove('up'); // 更新分数 document.getElementById('score').textContent = score; } holes.forEach(hole => hole.addEventListener('click', whack)); ``` 这个游戏的原理是随机在 6 个洞里面弹出地鼠,玩家需要在规定时间内点击地鼠,每次点击得分加 1 分。游戏结束后可以重新开始。其中,`mole.png` 是地鼠的图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值