1 Star 0 Fork 0

msy/jsdemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
typinggame.html 7.10 KB
一键复制 编辑 原始数据 按行查看 历史
msy 提交于 2017-03-15 20:25 . 打字游戏上传测试1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS打字小游戏</title>
<style>
body {
padding: 0px;
margin: 0;
}
#gameStage {
width: 100%;
height: 500px;
background-color: papayawhip;
}
#score{
text-align:center;
color: green;
fron-size:40px;
}
#gameTimer{
text-align:center;
color: red;
fron-size:40px;
}
</style>
</head>
<body>
<div id="gameStage"></div>
<div id="score"></div>
<div id = "gameTimer"></div>
<!--//<input id="start" type="button"value ="start game"/>-->
<script>
/**
* 字母
* @param id
* @param alphabet
* @param posX
* @param posY
* @param size
* @constructor
*/
function Word(id, alphabet, posX, posY, size) {
//初始化数据
this.id = id || '';
this.alphabet = alphabet || 'a';
this.posX = posX || 0;
this.posY = posY || 0;
this.size = size || 64;
// 新建
this.create = function () {
var str = '<span class="word" id="alphabet-' + this.id + '">' + this.alphabet + '</span>';
var gameStage = document.getElementById('gameStage');
gameStage.innerHTML += str;
var divNode = document.getElementById('alphabet-' + this.id);//获取字母的值
divNode.style.position = 'absolute';
divNode.style.fontSize = this.size + 'px';
divNode.style.left = this.posX + 'px';
divNode.style.top = this.posY + 'px';
};
// 重置.
this.reset = function () {
var divNode = document.getElementById('alphabet-' + this.id);
divNode.style.display = 'none';
this.moveTo(0, 0);
};
// 移动到指定点
this.moveTo = function (posX, posY) {
this.posX = posX;
this.posY = posY;
var divNode = document.getElementById('alphabet-' + this.id);
divNode.style.left = posX + 'px';
divNode.style.top = posY + 'px';
};
}
/**
* 导演类
*/
var director = {
alphabets: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
nodes: new Array(),
/**
* 逐帧运行
*/
runFrame: function () {
//更新已经产生所有点的坐标
for (var index in this.nodes) {
var node = this.nodes[index];
if (node) {
if(node.posY <= 430) {
node.moveTo(node.posX, node.posY + 15);
}
else {
var msg = confirm("字母掉落,游戏失败,是否重新开始?");
clearInterval( director.timer);
clearInterval(director.gameT);
if (msg) {
window.location.reload();
} else {
window.close();
}
}
}
}
//随机产生字母
var r = Math.floor(Math.random() * this.alphabets.length);
var w = new Word(new Date().getTime(), this.alphabets[r]);
w.create();
this.nodes.push(w);
var posX = Math.floor(Math.random() * window.innerWidth);
if (posX < 50) {
posX = 100;
}
if (posX >= window.innerWidth - 100) {
posX = window.innerWidth - 100;
}
w.moveTo(posX, 0);
},
/**
* 开始游戏
*/
start: function () {
var _this = this;
var defen = document.getElementById('score');
//监听键盘事件
document.onkeydown = function () {
var alphabet = String.fromCharCode(event.keyCode); //获取键盘敲中的字母
for (var i = 0, len = _this.nodes.length; i < len; i++) {
if(!_this.nodes[i]) {
continue;
}
if (alphabet === _this.nodes[i].alphabet) {
_this.nodes[i].reset();
scoreCounter.incScore();
_this.nodes[i] = null;
break;//只消除一个字母
}
}
defen .innerHTML = "Scores :" + scoreCounter.getScore();
};
//游戏主循环
setInterval(function () {
_this.runFrame();
}, 500);
//游戏时间动态改变
var gameT =null;
gameT = setInterval(
function(){
var shijian = document.getElementById("gameTimer");
gameTimer.decGameTime();
shijian.innerHTML = "GameTime : " + gameTimer.getGameTime();
},
1000);
}
}
/**
* 计分器
*/
var scoreCounter = {
score: 0,
incScore: function () {
this.score++;
},
getScore: function () {
return this.score;
}
};
/**
* 计时器
*/
var gameTimer = {
gameTime:20,
decGameTime: function(){
if (this.gameTime>0){
this.gameTime--;
}else if(scoreCounter.getScore()>=15){
var msg = confirm("恭喜你!过关成功!是否重新开始?");
clearInterval( director.timer);
clearInterval(director.gameT);
if(msg){
window.location.reload();
}else{
window.close();
}
}else if(scoreCounter.getScore()<15){
var msg = confirm("游戏时间到!此次游戏失败,是否重新开始?");
clearInterval( director.timer);
clearInterval(director.gameT);
if(msg){
window.location.reload();
}else{
window.close();
}
}
},
getGameTime:function(){
return this.gameTime;
}
};
function startGame() {
var msg = confirm("游戏规则:按压键盘上相应字母可消除屏幕上的对应字母,20秒内成功消除15个即可过关!");
//clearInterval( director.timer);
//clearInterval(director.gameT);
if(msg){
//window.location.reload();
director.start();
var fenshu = document.getElementById('score');
fenshu.innerHTML = "Scores :" + scoreCounter.getScore();
var startB = document.getElementById("start");
startB.style.display = 'none';
}else{
window.close();
}
}
startGame();
//director.start();
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/wtu508/jsdemo.git
git@gitee.com:wtu508/jsdemo.git
wtu508
jsdemo
jsdemo
master

搜索帮助