先上一张效果图:
开发思路
开发一个游戏,首先你须要晓得游戏的规定。
这个游戏名为狂拍灰太狼。
规定:
游戏工夫 60 s
游戏角色为灰太狼、小灰灰
拼手速殴打灰太狼
殴打灰太狼 + 10 分,殴打小灰灰 – 10 分
开发技术
html
css
jq
实现思路
1. 利用 html + css 布局游戏界面
2. 导入 jq 库
3. 实现狂拍灰太狼游戏逻辑
外围逻辑
封装 60 s 进度条办法
封装解决灰太狼动画的办法
游戏按钮点击监听
HTML 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> 狂拍灰太狼 </title>
<link rel="stylesheet" href="css/index.css">
<script src="js/jquery-1.12.4.js"></script>
<script src="js/index.js"></script>
</head>
<body>
<div class="container">
<h1 class="score">0</h1>
<div class="progress"></div>
<button class="start"> 开始游戏 </button>
<div class="rules"> 游戏规则 </div>
<div class="rule">
<p> 游戏规则:</p>
<p>1. 游戏工夫:60s</p>
<p>2. 拼手速, 殴打灰太狼 +10 分 </p>
<p>3. 殴打小灰灰 -10 分 </p>
<a href="#" class="close">[敞开]</a>
</div>
<div class="mask">
<h1>GAME OVER</h1>
<button class="reStart"> 从新开始 </button>
</div>
</div>
</body>
</html>
css 代码
*{
margin: 0;
padding: 0;
}
.container{
width: 320px;
height: 480px;
background: url("../images/game_bg.jpg") no-repeat 0 0;
margin: 50px auto;
position: relative;
}
.container>h1{
color: white;
margin-left: 60px;
}
.container>.progress{
width: 180px;
height: 16px;
background: url("../images/progress.png") no-repeat 0 0;
position: absolute;
top: 66px;
left: 63px;
}
.container>.start{
width: 150px;
line-height: 35px;
text-align: center;
color: white;
background: linear-gradient(#E55C3D,#C50000);
border-radius: 20px;
border: none;
font-size: 20px;
position: absolute;
top: 320px;
left: 50%;
margin-left: -75px;
}
.container>.rules{
width: 100%;
height: 20px;
background: #ccc;
position: absolute;
left: 0;
bottom: 0;
text-align: center;
}
.container>.rule{
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
position: absolute;
left: 0;
top: 0;
padding-top: 100px;
box-sizing: border-box;
text-align: center;
display: none;
}
.rule>p{
line-height: 50px;
color: white;
}
.rule>a{color: red;}
.container>.mask{
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
position: absolute;
left: 0;
top: 0;
padding-top: 200px;
box-sizing: border-box;
text-align: center;
display: none;
}
.mask>h1{
color: #ff4500;
text-shadow: 3px 3px 0 #fff;
font-size: 40px;
}
.mask>button{
width: 150px;
line-height: 35px;
text-align: center;
color: white;
background: linear-gradient(#74ACCF,#007DDC);
border-radius: 20px;
border: none;
font-size: 20px;
position: absolute;
top: 320px;
left: 50%;
margin-left: -75px;
}
jq 代码
$(function () {
// 1. 监听游戏规则的点击
$(".rules").click(function () {$(".rule").stop().fadeIn(100);
});
// 2. 监听敞开按钮的点击
$(".close").click(function () {$(".rule").stop().fadeOut(100);
});
// 3. 监听开始游戏按钮的点击
$(".start").click(function () {$(this).stop().fadeOut(100);
// 调用解决进度条的办法
progressHandler();
// 调用解决灰太狼动画的办法
startWolfAnimation();});
// 4. 监听从新开始按钮的点击
$(".reStart").click(function () {$(".mask").stop().fadeOut(100);
// 调用解决进度条的办法
progressHandler();
// 调用解决灰太狼动画的办法
startWolfAnimation();});
// 定义一个专门解决进度条的办法
function progressHandler() {
// 从新设置进度条的宽度
$(".progress").css({width: 180});
// 开启定时器解决进度条
var timer = setInterval(function () {
// 拿到进度条以后的宽度
var progressWidth = $(".progress").width();
// 缩小以后的宽度
progressWidth -= 1;
// 从新给进度条赋值宽度
$(".progress").css({width: progressWidth});
// 监听进度条是否走完
if(progressWidth <= 0){
// 敞开定时器
clearInterval(timer);
// 显示从新开始界面
$(".mask").stop().fadeIn(100);
// 进行灰太狼的动画
stopWolfAnimation();}
}, 100);
}
var wolfTimer;
// 定义一个专门解决灰太狼动画的办法
function startWolfAnimation() {
// 1. 定义两个数组保留所有灰太狼和小灰灰的图片
var wolf_1=['./images/h0.png','./images/h1.png','./images/h2.png','./images/h3.png','./images/h4.png','./images/h5.png','./images/h6.png','./images/h7.png','./images/h8.png','./images/h9.png'];
var wolf_2=['./images/x0.png','./images/x1.png','./images/x2.png','./images/x3.png','./images/x4.png','./images/x5.png','./images/x6.png','./images/x7.png','./images/x8.png','./images/x9.png'];
// 2. 定义一个数组保留所有可能呈现的地位
var arrPos = [{left:"100px",top:"115px"},
{left:"20px",top:"160px"},
{left:"190px",top:"142px"},
{left:"105px",top:"193px"},
{left:"19px",top:"221px"},
{left:"202px",top:"212px"},
{left:"120px",top:"275px"},
{left:"30px",top:"295px"},
{left:"209px",top:"297px"}
];
// 3. 创立一个图片
var $wolfImage = $("<images src='' class='wolfImage'>");
// 随机获取图片的地位
var posIndex = Math.round(Math.random() * 8);
// 4. 设置图片显示的地位
$wolfImage.css({
position: "absolute",
left:arrPos[posIndex].left,
top:arrPos[posIndex].top
});
// 随机获取数组类型
var wolfType = Math.round(Math.random()) == 0 ? wolf_1 : wolf_2;
// 5. 设置图片的内容
window.wolfIndex = 0;
window.wolfIndexEnd = 5;
wolfTimer = setInterval(function () {if(wolfIndex > wolfIndexEnd){$wolfImage.remove();
clearInterval(wolfTimer);
startWolfAnimation();}
$wolfImage.attr("src", wolfType[wolfIndex]);
wolfIndex++;
}, 300);
// 6. 将图片增加到界面上
$(".container").append($wolfImage);
// 7. 调用解决游戏规则的办法
gameRules($wolfImage);
}
function gameRules($wolfImage) {$wolfImage.one("click",function () {
// 批改索引
window.wolfIndex = 5;
window.wolfIndexEnd = 9;
// 拿到以后点击图片的地址
var $src = $(this).attr("src");
// 依据图片地址判断是否是灰太狼
var flag = $src.indexOf("h") >= 0;
// 依据点击的图片类型增减分数
if(flag){
// +10
$(".score").text(parseInt($(".score").text()) + 10);
}else{
// -10
$(".score").text(parseInt($(".score").text()) - 10);
}
});
}
function stopWolfAnimation() {$(".wolfImage").remove();
clearInterval(wolfTimer);
}
});
最终成果
根本制作过程不是很难,外围是了解其中的业务逻辑。