【实例简介】一个基于html5设计的小游戏
【实例截图】
【核心代码】
H5小游戏100例: 一笔画
重新开始
回退
let onestroke = new OneStroke(
{
// 默认的线段颜色与端点颜色
lineColor: 0xe2e2e2,
vertexColor: 0x6dc6c0,
strokeColor: 0x416275,
activeVertexColor: 0x6dc6c0,
levels: [
{
name: "第一关",
lineColor: 0xe2e2e2,
vertexColor: 0x90b34f,
strokeColor: 0x445624,
activeVertexColor: 0x90b34f,
lines: [
{"x1": 375, "y1": 366, "x2": 200, "y2": 916},
{"x1": 200, "y1": 916, "x2": 664, "y2": 576},
{"x1": 664, "y1": 576, "x2": 88, "y2": 576},
{"x1": 88, "y1": 576, "x2": 556, "y2": 916},
{"x1": 556, "y1": 916, "x2": 375, "y2": 366}
]
},
{
name: "第二关",
lineColor: 0xe2e2e2,
vertexColor: 0x6dc6c0,
strokeColor: 0x416275,
activeVertexColor: 0x6dc6c0,
lines: [
{"x1": 240, "y1": 460, "x2": 654, "y2": 875},
{"x1": 654, "y1": 875, "x2": 100, "y2": 740},
{"x1": 100, "y1": 740, "x2": 240, "y2": 460},
{"x1": 240, "y1": 460, "x2": 515, "y2": 460},
{"x1": 515, "y1": 460, "x2": 654, "y2": 740},
{"x1": 654, "y1": 740, "x2": 100, "y2": 875},
{"x1": 100, "y1": 875, "x2": 515, "y2": 460}
]
},
{
name: "第三关",
lineColor: 0xe2e2e2,
vertexColor: 0xec6a74,
strokeColor: 0x914748,
activeVertexColor: 0xec6a74,
lines: [
{"x1": 177, "y1": 367, "x2": 177, "y2": 961},
{"x1": 177, "y1": 961, "x2": 673, "y2": 861},
{"x1": 673, "y1": 861, "x2": 177, "y2": 367},
{"x1": 177, "y1": 367, "x2": 572, "y2": 367},
{"x1": 572, "y1": 367, "x2": 78, "y2": 861},
{"x1": 78, "y1": 861, "x2": 572, "y2": 961},
{"x1": 572, "y1": 961, "x2": 572, "y2": 367}
]
},
{
name: "第四关",
src: "images/049.jpeg"
},
{
name: "第五关",
src: "images/053.jpeg"
},
{
name: "第六关",
src: "images/059.jpeg"
},
{
name: "第七关",
src: "images/401.jpeg"
}
]
}
);
// 兼容大屏幕适配
function fitEaselInfo() {
onestroke.viewLeft = document.querySelector(".wrapper").getBoundingClientRect().left;
onestroke.ratio = 375 / Math.min(document.body.clientWidth, 540);
}
window.addEventListener("resize", fitEaselInfo);
fitEaselInfo();
// 通关
onestroke.event.on("pass", function() {
console.log("通关");
// 进入下一关
onestroke.next();
});
// 进入新的一关
onestroke.event.on("start", function(curLevel) {
gameBack.innerHTML = curLevel.name;
});
// gameover
onestroke.event.on("gameover", function() {
alert("GAMEOVER");
});
// 关卡加载中
onestroke.event.on("level-loading", function() {
console.log("关卡" onestroke.curLevel " 加载中...")
});
onestroke.event.on("level-loaded", function() {
console.log("关卡" onestroke.curLevel " 加载成功")
});
// showOneStroke
let showOneStroke = function() {
levels.style.transform = game.style.transform = "translate(-100%, 0)";
}
// hideOneStroke
let hideOneStroke = function() {
levels.style.transform = game.style.transform = "translate(0, 0)";
}
// 进入对应的关卡
let enter = function(index) {
showOneStroke();
onestroke.enter(index);
}
// 关卡列表初始化
let initLevels = function() {
let str = '';
onestroke.config.levels.forEach(
function(level, index) {
str = '
' (index 1) '\
' level.name '\
'
}
);
levels.innerHTML = str;
// 返回事件
gameBack.addEventListener("click", function() {hideOneStroke()});
// 重新开始
document.querySelector(".game-control-reset").addEventListener("click", function() {onestroke.restart()});
// 回退
document.querySelector(".game-control-rollback").addEventListener("click", function() { onestroke.rollback()});
}
// 调用初始化列表
initLevels();
- 海报