2048 Web游戏 基于HTML+CSS+JavaScript

代码如下:如果需要源码打包资源 我已经上传到资源里了 大家可以去下载

下载完如果觉得不错 请给好评哟亲

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="2048.css" type="text/css" rel="stylesheet" />
<script language="javascript" type="text/javascript">

	var btn = document.getElementById("id1");
<!--quanju变量是用来判断是否允许产生新图片,因为当前三行全部沾满的时候是不能向上移动产生新图片的-->
	function init(){
		var oTable = document.getElementById("mytab");
		var myrows= oTable.rows;
		for(var i=0;i<4;i++){
			var eachrow=oTable.rows[i];

			for(var j=0; j<4;j++){
				eachrow.cells[j].value=0;
			}
		}
	}
	function kaishi()
	{
		alert("Hi! 大家好,我是静媛~"+"\n"+"要开始玩2048吗?OK,请操作键盘上下左右键。 ")
		prd();
	}
	function prd(){

		var oTable = document.getElementById("mytab");
		var myrows= oTable.rows;
		var rowno=Math.floor(Math.random()*4);
		var cellno= Math.floor(Math.random()*4);
		var itemnum=Math.round(Math.random()-0.35);
		<!--window.alert(myrows[0].cells[1]);-->
		<!--window.alert(myrows[0].cells[1].innerText);-->

		if(!myrows[rowno].cells[cellno].innerHTML){
			if(itemnum==0){
				myrows[rowno].cells[cellno].innerHTML="<img src='2.png'/>";

				myrows[rowno].cells[cellno].value=2;
			}else {
				myrows[rowno].cells[cellno].innerHTML="<img src='4.png'/>";
				myrows[rowno].cells[cellno].value=4;
			}

		}else{

			<!--window.alert("YOU");-->

			<!--验证重复的时候是否跳过-->
			<!--window.alert(myrows[rowno].cells[cellno].value);-->
			isfull();
			prd();
			<!--myrows[rowno].cells[cellno].innerHTML="<img src='8.png'/>";-->
		}
	}

	function isfull(){
		var flag=0;
		var oTable = document.getElementById("mytab");
		for(var i=0;i<4;i++){
			<!--window.alert(oTable.rows[i]);-->
			var eachrow=oTable.rows[i];

			for(var j=0; j<4;j++){
				<!--window.alert(eachrow.cells[j].value);-->
				if(!eachrow.cells[j].value){
					flag=1;
				}
			}
		}
		if(flag==0)
		{
			window.alert("你失败了");
			document.getElementByName("id1").onclick = function(){};
		}
	}
	function press(e){
		if(e.keyCode==37)
		{
			moveleft();
		}else if(e.keyCode==38)
		{
			moveup();
		}else if(e.keyCode==39)
		{

			moveright();
		}else if(e.keyCode==40)
		{
			movedown();
		}
	}

	function moveleft(){
		var quanju=0;

		var oTable = document.getElementById("mytab");

		for(var i=0;i<4;i++){
			var eachrow=oTable.rows[i];
			for(var j=0; j<4;j++){
				if(eachrow.cells[j].value){
					var tmp=j;
					for(var k=tmp-1;k>=0;k--)
					{
						<!--这里是判断是否要合并的-->

						if(eachrow.cells[k].value){
							if(eachrow.cells[k].value==eachrow.cells[k+1].value)
							{
								eachrow.cells[k].value=eachrow.cells[k].value+eachrow.cells[k].value;
								conbinevalue(eachrow.cells[k].value,i,k);
								eachrow.cells[k+1].value=null;
								eachrow.cells[k+1].innerHTML=null;
								quanju=1;

							}
							break;

						}else {
							eachrow.cells[k].value=eachrow.cells[k+1].value;
							eachrow.cells[k+1].value=null;
							eachrow.cells[k].innerHTML=eachrow.cells[k+1].innerHTML;
							eachrow.cells[k+1].innerHTML=null;
							quanju=1;
						}

					}

				}
			}
		}
		if(quanju==1)
		{
			prd();
		}
	}

	function moveright(){
		var quanju=0;
		var oTable = document.getElementById("mytab");

		for(var i=0;i<4;i++){
			var eachrow=oTable.rows[i];
			for(var j=3; j>=0;j--){
				if(eachrow.cells[j].value){
					var tmp=j;
					for(var k=tmp+1;k<4;k++)
					{
						if(eachrow.cells[k].value){

							if(eachrow.cells[k].value==eachrow.cells[k-1].value)
							{
								eachrow.cells[k].value=eachrow.cells[k].value+eachrow.cells[k].value;
								conbinevalue(eachrow.cells[k].value,i,k);
								eachrow.cells[k-1].value=null;
								eachrow.cells[k-1].innerHTML=null;
								quanju=1;

							}
							break;
						}else {
							eachrow.cells[k].value=eachrow.cells[k-1].value;
							eachrow.cells[k-1].value=null;
							eachrow.cells[k].innerHTML=eachrow.cells[k-1].innerHTML;
							eachrow.cells[k-1].innerHTML=null;
							quanju=1;
						}

					}

				}
			}
		}
		if(quanju==1)
		{
			prd();
		}
	}

	function moveup(){
		var quanju=0;

		var oTable = document.getElementById("mytab");

		for(var i=0;i<4;i++){
			var tmp = i;
			var eachrow=oTable.rows[i];
			for(var j=0; j<4;j++){
				if(eachrow.cells[j].value){

					for(var k=tmp-1;k>=0;k--)
					{
						if(oTable.rows[k].cells[j].value){

							if(oTable.rows[k].cells[j].value==oTable.rows[k+1].cells[j].value)
							{
								oTable.rows[k].cells[j].value=oTable.rows[k].cells[j].value+oTable.rows[k].cells[j].value;
								conbinevalue(oTable.rows[k].cells[j].value,k,j);
								oTable.rows[k+1].cells[j].value=null;
								oTable.rows[k+1].cells[j].innerHTML=null;
								quanju=1;

							}
							break;
						}else {
							oTable.rows[k].cells[j].value=oTable.rows[k+1].cells[j].value
							oTable.rows[k+1].cells[j].value=null;
							oTable.rows[k].cells[j].innerHTML=oTable.rows[k+1].cells[j].innerHTML;
							oTable.rows[k+1].cells[j].innerHTML=null;
							quanju=1;

						}

					}

				}
			}

		}
		if(quanju==1)
		{
			prd();
		}
	}

	function movedown(){
		var quanju=0;

		var oTable = document.getElementById("mytab");

		for(var i=3;i>=0;i--){
			var tmp = i;
			var eachrow=oTable.rows[i];
			for(var j=0; j<4;j++){
				if(eachrow.cells[j].value){

					for(var k=tmp+1;k<4;k++)
					{
						if(oTable.rows[k].cells[j].value){

							if(oTable.rows[k].cells[j].value==oTable.rows[k-1].cells[j].value)
							{
								oTable.rows[k].cells[j].value=oTable.rows[k].cells[j].value+oTable.rows[k].cells[j].value;
								conbinevalue(oTable.rows[k].cells[j].value,k,j);
								oTable.rows[k-1].cells[j].value=null;
								oTable.rows[k-1].cells[j].innerHTML=null;
								quanju=1;

							}
							break;
						}else {
							oTable.rows[k].cells[j].value=oTable.rows[k-1].cells[j].value
							oTable.rows[k-1].cells[j].value=null;
							oTable.rows[k].cells[j].innerHTML=oTable.rows[k-1].cells[j].innerHTML;
							oTable.rows[k-1].cells[j].innerHTML=null;
							quanju=1;
						}

					}

				}
			}
		}
	}

	function conbinevalue(value,ith,jth){
		var oTable = document.getElementById("mytab");
		switch(value){
			case 4:
				oTable.rows[ith].cells[jth].innerHTML="<img src='4.png'/>";
				break;
			case 8:
				oTable.rows[ith].cells[jth].innerHTML="<img src='8.png'/>";
				break;
			case 16:
				oTable.rows[ith].cells[jth].innerHTML="<img src='16.png'/>";
				break;
			case 32:
				oTable.rows[ith].cells[jth].innerHTML="<img src='32.png'/>";
				break;
			case 64:
				oTable.rows[ith].cells[jth].innerHTML="<img src='64.png'/>";
				break;
			case 128:
				oTable.rows[ith].cells[jth].innerHTML="<img src='128.png'/>";
				break;
			case 256:
				oTable.rows[ith].cells[jth].innerHTML="<img src='256.png'/>";
				break;
			case 512:
				oTable.rows[ith].cells[jth].innerHTML="<img src='512.png'/>";
				break;
			case 1024:
				oTable.rows[ith].cells[jth].innerHTML="<img src='1024.png'/>";
				break;
			case 2048:
				oTable.rows[ith].cells[jth].innerHTML="<img src='2048.png'/>";
				break;
			default:
				window.alert("2048!!!");
				break;
		}
	}

</script>
</head>
<body id="id1" style="width:595px;height:595px;background-color:white;border:3px pink solid" onkeyup="press(event)" onLoad="kaishi()">
<table id="mytab" border=0px blue solid>
<tr style="width:142px;height:144px"><td></td><td></td><td></td><td></td></tr>
<tr style="width:142px;height:144px"><td></td><td></td><td></td><td></td></tr>
<tr style="width:142px;height:144px"><td></td><td></td><td></td><td></td></tr>
<tr style="width:142px;height:144px"><td></td><td></td><td></td><td></td></tr>
<table>
<!--<input type="button" onClick="test()"/>-->
<!--<img src="2.png">
<img src="2.png">
<img src="2.png">
<img src="2.png" >-->

</body>
</html>

要想把4出现的概率修改一下,可以改0.35的值。

function prd(){

var oTable = document.getElementById("mytab");

var myrows= oTable.rows;

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

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

var itemnum=Math.round(Math.random()-0.35);

时间: 2024-08-28 19:44:48

2048 Web游戏 基于HTML+CSS+JavaScript的相关文章

WEB前端:HTML+CSS+JavaScript

一. HTML介绍:---------------------------------------1. 什么是HTML?   超文本标记语言,  <标签名>--标记(标签.节点)  2. HTML是由:标签和内容构成 3. 程序语言有两种:解释性语言(HTML.PHP.Javascript)和编译型语言(C.C++.Java 4. HTML的标签组成部分.属性.实体 HTML的实体: <:<  >:>  空格:  5. HTML中注释: <!-- .... --&

试读《基于MVC的JavaScript Web富应用开发》— 不一样的JavaScript

前言 <基于MVC的JavaScript Web富应用开发>是ItEye在7月份发起试读的书.下载了试读的章节,发现只有全本的开始到第二章,第一章很简洁明了地讲述了JavaScript的历史,怎么用JavaScript实现类,基本JavaScript的MVC的概念:第二章是浏览器的事件机制,DOM的事件监听,JQuery事件绑定的例子. 值得一提的是,这本书原本是O’Reilly Media, Inc带来的.O’Reilly的一系列“动物书”总是经典. 最大的感触:JavaScript的MVC

【2048小游戏】——CSS/原生js爬坑之纯CSS模态对话框&amp;游戏结束

引言:2048小游戏的结束界面,使用纯CSS制作模态对话框,一般做模态对话框都会使用BootStrap自带的模态对话框组件方便使用,但在制作要运行在移动端的小项目时,就不能使用BootStrap,因为文件太大,下载耗时,耗费流量. 一.模态对话框的组成 2个Div,一个铺满整屛,一个显示内容 坑:如何让Div铺满整屛?解决:2个办法 宽  高 100%    →    position:absolute:  →   top=0;left=0; 四个方向  margin-top/left/righ

Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Windows.Linux 以及 OS X 平台. Brackets 的特点是简约.优雅.快捷!它没有很多的视图或者面板,也没太多花哨的功能,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等.和 Sublime Text.Everedit 等通用代码编辑器

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏

韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 分类: PHP 2012-12-12 15:01 4256人阅读 评论(0) 收藏 举报 文西马龙:http://blog.csdn.net/wenximalong/ 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键,来控制图片的位置 这个小游戏,用面向对象会很方便,不用面向对象会很麻烦很麻烦,比如以后要讲解的坦克大战的游戏,要是用纯的面向过程或

过程化开发2048智力游戏WebApp

时间荏苒,唯编程与青春不可辜负,感觉自己一直没有专心去提升编程的技能,甚是惭愧!!! 周五,无意间看到一个开发2048的视频,有点兴趣就动起手来了,虽然不擅长前端开发,在此献丑,分享一下自己使用过程化开发2048的编码思考与过程. 既然要开发2048,大部分人应该都玩过,如果你有更好的建议可以给我留言O(∩_∩)O~ 目录结构 1.什么是2048? 2.玩2048技巧? 3.移动端开发注意事项? 4.游戏设计图? 5.HTML编写? 6.CSS编写 7.JavaScript游戏模型编写? 8.J

轻装上阵,安卓工程师之路---day02(CSS&amp;JavaScript)

01 CSS选择器 CSS的语法 格式:选择器{  属性:属性值;  } 举例:h2{color : red; } 常见选择器: 标签选择器     h2{  } 类选择器       .a {  }  <h2 class=“a”>  // 不能是数字,提倡 ID选择器      #a{  }  <h2 id=“a”>    // ID要唯一 组选择器       h1,h2{  } 父类选择器      p  a{  }   //p标签中的a标签 通用选择器      *{   

推荐20款基于 jQuery &amp; CSS 的文本效果插件

jQuery 和 CSS 可以说是设计和开发行业的一次革命.这一切如此简单,快捷的一站式服务.jQuery 允许你在你的网页中添加一些真正令人惊叹的东西而不用付出很大的努力,要感谢那些优秀的 jQuery 插件. 所以今天我们将展示一些很酷的文本效果插件,将帮助你为你的 Web 页面创建一些很酷的和动态的东西.这里是20个基于 jQuery & CSS 的文本效果插件. 您可能感兴趣的相关文章 12款经典的白富美型 jQuery 图片轮播插件 让网站动起来!12款优秀的 jQuery 动画插件

2048小游戏-JS实现(BUG调试中)

刚刚学习JS的菜鸟,游戏没有实现滑动效果.希望有前辈能指点一下······ 定义的主要方法: 1.fuzhi()生成一对随机数,然后根据这对随机数取得一个随机单元格,先判断其是否为空,不为空,对其进行赋值为2的操作:为空,则再次调用fuzhi(). 2.secai()遍历表格,根据单元格的数值改变单元格的背景颜色. 3.score()遍历单元格,计算实时总得分. 4.keyDown()主要方法,根据用户按上下左右键来进行不同的数值相加.消除动作.这一段代码写得很冗余····· 1 <!DOCTY