jQuery制作可自定义大小的拼图游戏

 这篇文章主要介绍了jQuery制作可自定义大小的拼图游戏的代码,非常的简单实用,虽然还只是局限于数字顺序的拼图,后续慢慢完善上图片,但还是分享给大家,有需要的小伙伴可以参考下。

 
 

我把大小限制在了3-10之间,实在闲的,或者有自虐倾向的可以试试改下。。
本来准备弄图片上去的,还没弄..

pintu.html

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>拼图</title>
<style type="text/css">
#pt_main{
margin:0 auto;
border:2px solid #000;}
#menu{
text-align:center;}
#pt_main div{
padding:0px;
margin:0px;
float:left;
line-height:200px;
font-size:100px;
text-align:center;}
#pt_main div:hover{
cursor:pointer;}
.hui{
background:#CCC;}
</style>
 
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
//div边框宽度
var border_w=2;
//div大小
var size=50;
//是否过关
var st=false;
//背景图片地址(功能还没写)
var imgurl='';
//灰色块的位置
var hui=0;
//游戏宽高
var width=3;
var height=3;
$(function(){
init();
});
//判断两个数字能不能交换
function ut_jh(a,b){
if(Math.abs(a-b)==width){
return true;
}
if(Math.abs(a-b)==1&& ut_line(a,b,width) ){
return true;
}
return false;
}
//判断两个数字是否在同一行
function ut_line(a,b,width){
if(parseInt(a/width)==parseInt(b/width)){
return true;
}else{
return false;
}
}
//生成可交换的集合(可与灰色块交换的集合)
function ut_sc(a){
//最多为4个
var li=new Array();
var i=0;
if(a-width>=0){
li[i++]=a-width;
}
if(a+width<=width*height-1){
li[i++]=a+width;
}
if(ut_line(a,a-1,width) && a-1>=0){
li[i++]=a-1;
}
if(ut_line(a,a+1,width) && a+1<=width*height-1){
li[i++]=a+1;
}
//alert(a+'-length:'+li.length)
return li;
}
//块的点击事件
function pt_click(){
if(!st){
return false;
}
//点击块的索引
var index=get().index($(this));
 
if(ut_jh(hui,index)){
jh(hui,index);
 
//判断是否过关
pd();
}
 
 
}
//两块交换
function jh(hui_,index_){
//alert(hui+1+","+(index_+1));
var list=get();//所有块
var h=list.eq(hui_);//灰色块
var d=list.eq(index_);//点击的块
 
//交换样式
h.removeClass();
d.addClass('hui');
h.html(d.html());
d.html('');
hui=index_;
 
//交换各自属性
tg=h.attr('tg');
h.attr('tg',d.attr('tg'));
d.attr('tg',tg);
}
 
function init(){
//不能太小...
if(width<3||height<3){
return false;
}
hui=width*height-1;
var pp=$("#pt_main");
pp.html('');
//创建并初始化
var k=width*size+border_w*width*2;
var g=height*size+border_w*height*2;
pp.css({'width':k,'height':g});
for(i=0;i<width*height;i++){
var n=$("<div>"+(i+1)+"</div>");
n.css({'width':size,
'height':size,
border:border_w+'px solid #000',
lineHeight:size+'px',
fontSize:parseInt(size/3)+'px'
});
if(imgurl!=''){
 
}
pp.append(n);
//alert(i)
 
}
get().last().html('');
get().last().addClass('hui');
get().on('click',pt_click);
 
//为每个块附加属性,记录当前的值
$("#pt_main div").each(function(index, element) {
$(element).attr('tg',index);
});
 
 
dl();
st=true;
}
//判断是否通过(当每个块的值与自身的下标对应)
function pd(){
var b=true;
get().each(function(index, element) {
if($(element).attr('tg')!=index){
b=false;
return false;
}
 
});
if(b){
st=false;
alert("恭喜过关!");
return true;
}else{
return false;
}
}
//获取集合
function get(){
return $("#pt_main div");
}
//打乱
function dl(){
//打乱次数
var count=width*width*width;
 
for(i =0;i<count;i++){
//可交换集合
var li=ut_sc(hui);
var num=parseInt((li.length)*Math.random());
jh(hui,li[num]);
}
 
}
//初始化按钮的点击事件
function csh(){
var dxv=$('#dx').val();
if(!parseInt(dxv)){
alert('请输入3-10之间的数字');
$('#dx').val('');
return false;
}
var v=parseInt(dxv);
if(v<3||v>10){
alert('请输入3-10之间的数字');
$('#dx').val('');
return false;
}
width=v;
height=v;
init();
}
</script>
</head>
 
<body>
<div id='menu'>
大小:<input id='dx' style="text-align:center;width:40px;"/>
<button onclick="csh()">初始化</button>
<button onclick="init()">刷新</button>
</div>
<div id="pt_main">
 
</div>
 
</body>
</html>

以上就是本文给大家分享的全部内容了,希望大家能够喜欢。

时间: 2024-09-14 10:24:01

jQuery制作可自定义大小的拼图游戏的相关文章

jquery制作属于自己的select自定义样式_jquery

由于原生select在各个浏览器的样式不统一,特别是在IE67下直接不可以使用样式控制,当PM让你做一个样式的时候,那是相当的痛苦.最好的办法就是使用自定义样式仿select效果.这里写了一个jquery插件,实现自定义的select(阉割了不少原生select的事件,但是最主要的都还在) 需要引用的样式: .self-select-wrapper{ position: relative; display: inline-block; border: 1px solid #d0d0d0; wid

jQuery制作拼图小游戏

 这篇文章主要介绍了jQuery制作拼图小游戏,思路与源码都分享给大家,需要的朋友可以参考下     源代码思路分析: [一]如何生成图片网格,我想到两种方法: (1)把这张大图切成16张小图,然后用img标签的src (2)只有一张大图,然后每个元素的背景图用css的background-position进行切割定位,这样就需要16个数组[0,0],[-150,0],[-300,0]..........(我采用这种) [二]图片背景定位数组与布局定位数组 在选择了使用CSS定位切图,就需要生成

用flash制作简单拼图游戏

可能有很多玩Flash的朋友都曾和我一样想自己动手制作一个拼图游戏,但是苦于不知道实现的方法或不了解ActionScript(以下简称AS)而心存遗憾.别急,今天盗匪就告诉你如何利用Flash常用的AS制作一个简单的拼图游戏,我所说的简单可不是将图片简单的拼凑到一起的那种简单拼图啊. 做好的成品如下:大家可以用鼠标将上面的图像碎片拖到下面的方框内的合适位置,为方便大家找位,游戏给出了有一定透明度的原图作为参考.大家可以发现这个游戏还设计了一个"吸附"功能,能够让你将拼图片轻松地整齐排列

Java制作智能拼图游戏原理及代码_java

今天突发奇想,想做一个智能拼图游戏来给哄女友. 需要实现这些功能 第一图片自定义 第二宫格自定义,当然我一开始就想的是3*3 4*4 5*5,没有使用3*5这样的宫格. 第三要实现自动拼图的功能,相信大家知道女人耍游戏都不是很厉害,所以这个自动拼图功能得有. 其他什么暂停.排行就不写了! 现在重点问题出来了 要实现自动拼图功能似乎要求有点高哦!计算机有可不能像人一样只能: 先追究下本质 拼图游戏其实就是排列问题: 排列有这么一个定义:在一个1,2,...,n的排列中,如果一对数的前后位置与大小顺

基于javascript制作经典传统的拼图游戏_javascript技巧

本文实例为大家分享了javascript制作经典传统的拼图游戏的关键代码,供大家参考,具体内容如下 效果图: 拼出你喜欢的白雪公主和七个小矮人 实现代码: <!DOCTYPE html> <html> <head> <title>pingtu.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

jquery实现的美女拼图游戏实例_jquery

本文实例讲述了jquery实现的美女拼图游戏.分享给大家供大家参考.具体如下: 这里可以自由打乱拼图次序,3*3,4*4等多种组合来进行格数拼图 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo

Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!

Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 一.切图工具类 我们九宫格嘛,肯定要一个切图的工具,把一个图片给切成九张,那具体是怎么实现呢?我们先写一个bean来存储一切的状态 ImagePiece package com.lgl.ninegame.utils; import android.graphics.Bitmap; /** * * C

Android拼图游戏 玩转从基础到应用手势变化_Android

相信大家在小的时候都玩过拼图游戏,现如今,手机普及,能在手机上玩的游戏越来越多,于是乎,重温小时候,编写这个简易拼图游戏,而且也能进一步加深Android的一些基础知识. 老规矩,先是效果图: 这里我把为了演示效果,把图片打乱的很少,在代码里可以更改. 首先,有个默认的图片,可以用来拼图,也可以选择你喜欢的图片进行拼图,拼图的过程会记录移动的步数,并且当游戏胜利的时候会弹出一个笑脸提示,游戏胜利,用了多少步数. ps:感兴趣的完全可以继续在这上面进行扩展,比如增加游戏难度的选项,可以将图片分成更

js+html5实现可在手机上玩的拼图游戏_javascript技巧

本文实例讲述了js+html5实现可在手机上玩的拼图游戏.分享给大家供大家参考.具体如下: 手机版的拼图.pc上用Chrome 或者 Firefox var R=(function(){ /*右边菜单*/ function fa(){ if(mo.style.right!='0px'){ mo.style.right='0px'; mco.rcss('','cmck'); }else{ mo.style.right='-100px'; mco.rcss('cmck',''); } } on(mc