别踩白块小游戏

用H5新特性实现别踩白块小游戏。

功能分析:
1.游戏开始按钮
2.每点中一个记一分
3.分数达到二十弹出鼓励弹框
4.点击错误则游戏结束

效果演示
在这里插入图片描述
看了效果有没有急迫的心情呢?

代码演示

  1. body内容
<body>

		<h2>本次得分</h2>

		<h2 id="score">0</h2>

		<div id="main">

			<div id="con">

				<div class="row">

					<div class="fang"></div>

					<div class="fang one"></div>

					<div class="fang"></div>

					<div class="fang"></div>

				</div>

				<div class="row">

					<div class="fang"></div>

					<div class="fang one"></div>

					<div class="fang"></div>

					<div class="fang"></div>

				</div>

				<div class="row">

					<div class="fang"></div>

					<div class="fang"></div>

					<div class="fang one"></div>

					<div class="fang"></div>

				</div>

				<div class="row">

					<div class="fang one"></div>

					<div class="fang"></div>

					<div class="fang"></div>

					<div class="fang"></div>

				</div>

			</div>

		</div>

		<div class="start">开始游戏</div>



	</body>
  1. CSS演示
<style type="text/css">
			#score {

				text-align: center;

			}

			h2 {

				text-align: center;

			}

			div {

				margin: 0 auto;

				width: 100px;

				height: 100px;

			}

			#main {

				width: 400px;

				height: 600px;

				background: blanchedalmond;

				border: 2px solid gray;

				margin: 0 auto;

				position: relative;

				overflow: hidden;

			}

			#con {

				width: 100%;

				height: 400px;

				position: relative;

				top: -100px;
				/*隐藏最上层一行*/

				border-collapse: collapse;

			}

			.row {

				height: 100px;

				width: 100%;


			}

			.fang {

				height: 100px;

				width: 100px;

				float: left;

			}

			.one {

				background: blueviolet;

			}

			.start {

				margin-top: 20px;

				width: 150px;

				height: 50px;

				border-radius: 10px;

				background: yellowgreen;

				line-height: 50px;

				text-align: center;

				color: #fff;

			}
		</style>
  1. JavaScript内容
<script>
		//根据id获取元素

		function $(id) {

			return document.getElementById(id);

		}

		var clock = null;

		var state = 0;

		var speed = 4;

		/*
		
		* 初始化 init
		
		*/

		function init() {

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

				createrow();

			}

			//添加onclick事件

			$('main').onclick = function(ev) {

				ev = ev || event

				judge(ev);

			}

			//定时器 每30毫秒调用一次move()

			clock = window.setInterval('move()', 50);

		}

		//判断是否点击紫块

		function judge(ev) {

			if (state == 3) {

				alert('请刷新此页面,重新开始游戏')

				return;

			}

			if (ev.target.className.indexOf('one') == -1) {

				fail();

			} else {

				//点击目标元素

				ev.target.className = 'fang';

				ev.target.parentNode.pass = 1;

				score();

			}

		}

		//游戏结束

		function fail() {

			clearInterval(clock);

			state = 3;

			confirm('你的最终得分为' + parseInt($('score').innerHTML));

		}

		//创建div

		function creatediv(className) {

			var div = document.createElement('div');

			div.className = className;

			return div;

		}

		function createrow() {

			var con = $('con');

			var row = creatediv('row');

			var arr = createcell();



			con.appendChild(row);

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

				row.appendChild(creatediv(arr[i]));

			}

			if (con.firstChild == null) {

				con.appendChild(row);

			} else {

				con.insertBefore(row, con.firstChild);

			}

		}

		//创建一个类名的数组

		function createcell() {

			var temp = ['fang', 'fang', 'fang', ];

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

			temp[i] = 'fang one';

			return temp;

		}

		//移动黑色块

		function move() {

			var con = $('con');

			var top = parseInt(window.getComputedStyle(con, null)['top']);

			if (speed + top > 0) {

				top = 0;

			} else {

				top += speed;

			}

			con.style.top = top + 'px';



			if (top == 0) {

				createrow();

				con.style.top = '-100px';

				delrow();

			} else if (top == (-100 + speed)) {

				var rows = con.childNodes;

				if ((rows.lenth == 5) && (rows[rows.length - 1].pass !== 1)) {

					fail();

				}

			}

		}

		//加快速度

		function speedup() {

			speed += 2;

			if (speed == 20) {

				alert('你真厉害,继续加油呦!');

			}

		}

		//删除行

		function delrow() {

			var con = $('con');

			if (con.childNodes.length == 6) {

				con.removeChild(con.lastChild);

			}

		}

		//计算得分

		function score() {

			var newscore = parseInt($('score').innerHTML) + 1;

			$('score').innerHTML = newscore;

			if (newscore % 10 == 0) {

				speedup();

			}

		}

		document.querySelector('.start').addEventListener('click', init)
	</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值