亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

jquery實現的美女拼圖游戲實例

2024-05-06 16:19:18
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了jquery實現的美女拼圖游戲,實例分析了jQuery操作圖片的相關技巧,需要的朋友可以參考下

本文實例講述了jquery實現的美女拼圖游戲。分享給大家供大家參考。具體如下:

這里可以自由打亂拼圖次序,3*3,4*4等多種組合來進行格數拼圖

 

 
  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>Jquery-puzzle by 4074</title> 
  6. <style> 
  7. html{ 
  8. height:100%; 
  9. body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,button,textarea,p,blockquote,th,td{ 
  10. padding:0; 
  11. margin:0; 
  12. body{ 
  13. font-family: "Helvetica Neue""Hiragino Sans GB""Segoe UI""Microsoft Yahei""微軟雅黑", Tahoma, Arial, STHeiti, sans-serif; 
  14. font-size:12px; 
  15. background:#fff; 
  16. color:#333; 
  17. a{ 
  18. outline:none; 
  19. -moz-outline:none; 
  20. text-decoration:none; 
  21. .clearfix{ 
  22. zoom:1; 
  23. _height:1px; 
  24. .clearfix:after{ 
  25. content:"."
  26. display:block; 
  27. height:0; 
  28. clear:both; 
  29. visibility:hidden; 
  30. .head{ 
  31. height:50px; 
  32. line-height:50px; 
  33. padding-left:20px; 
  34. border-bottom:1px solid #eee; 
  35. box-shadow: 1px 1px 5px #ccc; 
  36. .head h1{ 
  37. float:left; 
  38. width:320px; 
  39. font-weight:normal; 
  40. font-size:22px; 
  41. .head span{ 
  42. display:block; 
  43. float:right; 
  44. font-size:12px; 
  45. color:#999; 
  46. line-height:14px; 
  47. margin:30px 10px 0 0; 
  48. .wrap{ 
  49. width:1000px; 
  50. margin:80px auto; 
  51. .play_wrap{ 
  52. width:300px; 
  53. float:left; 
  54. padding:20px; 
  55. margin-left:200px; 
  56. #play_area{ 
  57. position:relative; 
  58. width:300px; 
  59. height:300px; 
  60. margin:auto; 
  61. background:#fefefe; 
  62. border-radius:2px; 
  63. color: black; 
  64. box-shadow: 0px 0px 8px #09F; 
  65. border:1px solid #fff; 
  66. *border:1px solid #e5e5e5; 
  67. cursor:default
  68. #play_area .play_cell{ 
  69. width:48px; 
  70. height:48px; 
  71. border:1px solid #fff; 
  72. border-radius:4px; 
  73. position:absolute; 
  74. background-position: 5px 5px; 
  75. cursor: default
  76. z-index:80; 
  77. box-shadow:0px 0px 8px #fff; 
  78. transition-property:background-position; 
  79. transition-duration:300ms; 
  80. transition-timing-function:ease-in-out; 
  81. #play_area .play_cell.hover{ 
  82. filter: alpha(opacity=80); 
  83. opacity:.8; 
  84. box-shadow: 0px 0px 8px #000; 
  85. z-index:90; 
  86. *border:1px solid #09F; 
  87. .play_menu{ 
  88. float:left; 
  89. margin-left:60px; 
  90. font-size:14px; 
  91. padding-top:20px; 
  92. .play_menu p{ 
  93. line-height:200%; 
  94. clear:both; 
  95. .play_menu a.play_btn{ 
  96. display:block; 
  97. margin-bottom:20px; 
  98. width:80px; 
  99. height:28px; 
  100. line-height:28px; 
  101. text-align:center; 
  102. text-decoration:none; 
  103. color:#333; 
  104. background:#fefefe; 
  105. border:1px solid #eee; 
  106. border-radius: 2px; 
  107. box-shadow: 1px 1px 2px #eee; 
  108. border-color: #ddd #d2d2d2 #d2d2d2 #ddd; 
  109. outline:none; 
  110. -moz-outline:none; 
  111. .play_menu a.play_btn:hover{ 
  112. background-color: #fcfcfc; 
  113. border-color: #ccc; 
  114. box-shadow: inset 0 -2px 6px #eee; 
  115. .play_menu a#play_btn_level{ 
  116. position:relative; 
  117. margin-bottom:30px; 
  118. .level_text{ 
  119. margin-left:-10px; 
  120. .level_icon{ 
  121. display:block; 
  122. position:absolute; 
  123. top:12px; 
  124. right:16px; 
  125. width:0; 
  126. height:0; 
  127. overflow:hidden; 
  128. border:5px solid #FFF; 
  129. border-color:#999 transparent transparent transparent; 
  130. .level_menu{ 
  131. position:absolute; 
  132. margin:-30px 0 0px 1px; 
  133. display:none; 
  134. .level_menu ul{ 
  135. list-style:none; 
  136. .level_menu li{ 
  137. float:left; 
  138. .level_menu li a{ 
  139. display:block; 
  140. padding:3px 10px; 
  141. border:1px solid #e8e8e8; 
  142. margin-left:-1px; 
  143. color:#09c; 
  144. .level_menu li a:hover{ 
  145. background:#09c; 
  146. color:#fefefe; 
  147. #info{ 
  148. font-size:16px; 
  149. margin:30px 0 0 0; 
  150. #info a{ 
  151. color:#09F; 
  152. </style> 
  153. <script type="text/javascript" src="js/jquery.min.js"></script> 
  154. <script type="text/javascript"
  155. var puzzleGame = function(options){ 
  156. this.img = options.img || ""
  157. this.e_playArea = $("#play_area"); 
  158. this.e_startBtn = $("#play_btn_start"); 
  159. this.e_playScore = $("#play_score"); 
  160. this.e_playCount = $("#play_count"); 
  161. this.e_levelBtn = $("#play_btn_level"); 
  162. this.e_levelMenu = $("#play_menu_level"); 
  163. this.areaWidth = parseInt(this.e_playArea.css("width")); 
  164. this.areaHeight = parseInt(this.e_playArea.css("height")); 
  165. this.offX = this.e_playArea.offset().left; 
  166. this.offY = this.e_playArea.offset().top; 
  167. this.levelArr = [[3,3],[4,4],[6,6]]; 
  168. this.level = 1; 
  169. this.scoreArr = [100,200,400]; 
  170. this.score = 0; 
  171. this.playCount = 0; 
  172. this.cellRow = this.levelArr[this.level][0]; 
  173. this.cellCol = this.levelArr[this.level][1]; 
  174. this.cellWidth = this.areaWidth/this.cellCol; 
  175. this.cellHeight = this.areaHeight/this.cellRow; 
  176. this.imgArr = []; 
  177. this.ranArr = []; 
  178. this.cellArr = []; 
  179. this.easing = 'swing'
  180. this.time = 400; 
  181. this.thisLeft = 0; 
  182. this.thisTop = 0; 
  183. this.nextIndex; 
  184. this.thisIndex; 
  185. this.cb_cellDown = $.Callbacks(); 
  186. this.isInit = false
  187. this.isBind = false
  188. this.start(); 
  189. }; 
  190. puzzleGame.prototype = { 
  191. start:function(){ 
  192. this.init(); 
  193. this.menu(); 
  194. }, 
  195. set: function(options){ 
  196. this.level = options.level === 0 ? 0 : (options.level || 1); 
  197. }, 
  198. menu:function(){ 
  199. var self = this
  200. this.e_startBtn.click(function(){ 
  201. self.e_levelMenu.hide(); 
  202. self.play(); 
  203. }); 
  204. this.e_levelBtn.click(function(){ 
  205. if(self.playing) return
  206. self.e_levelMenu.toggle(); 
  207. }); 
  208. this.e_levelMenu.find("a").click(function(){ 
  209. self.e_levelMenu.hide(); 
  210. self.e_levelBtn.find(".level_text").html($(this).html()) 
  211. if(parseInt($(this).attr("level")) !== self.level){ 
  212. self.set({ 
  213. "level": $(this).attr("level"
  214. }); 
  215. self.isInit = true
  216. self.isBind = false
  217. }) 
  218. }, 
  219. play:function(){ 
  220. if(this.isInit){ 
  221. this.isInit = false
  222. this.cellRow = this.levelArr[this.level][0]; 
  223. this.cellCol = this.levelArr[this.level][1]; 
  224. this.cellWidth = this.areaWidth/this.cellCol; 
  225. this.cellHeight = this.areaHeight/this.cellRow; 
  226. this.init(); 
  227. this.e_playCount.html(this.playCount = 0); 
  228. this.randomImg(); 
  229. if(!this.isBind)this.bindCell(); 
  230. }, 
  231. init:function(){ 
  232. var _cell; 
  233. this.cellArr = []; 
  234. this.imgArr = []; 
  235. this.e_playArea.html(""); 
  236. for(var i = 0; i<this.cellRow; i++){ 
  237. for(var j = 0; j<this.cellCol; j++){ 
  238. this.imgArr.push(i*this.cellCol + j); 
  239. _cell = document.createElement("div"); 
  240. _cell.className = "play_cell"
  241. $(_cell).css({ 
  242. "width"this.cellWidth-2, 
  243. "height"this.cellHeight-2, 
  244. "left": j * this.cellWidth, 
  245. "top": i * this.cellHeight, 
  246. "background""url(" + this.img + ")"
  247. "backgroundPosition": (-j) * this.cellWidth + "px " + (-i) * this.cellHeight + "px" 
  248. }); 
  249. this.cellArr.push($(_cell)); 
  250. this.e_playArea.append(_cell); 
  251. }, 
  252. randomImg:function(){ 
  253. var ran,arr; 
  254. arr = this.imgArr.slice(); 
  255. this.ranArr = []; 
  256. for(var i = 0, ilen = arr.length; i < ilen; i++){ 
  257. ran = Math.floor(Math.random() * arr.length); 
  258. this.ranArr.push(arr[ran]); 
  259. this.cellArr[i].css({ 
  260. "backgroundPosition": (-arr[ran]%this.cellCol) * this.cellWidth + "px " + (-Math.floor(arr[ran]/this.cellCol)) * this.cellHeight + "px" 
  261. }) 
  262. arr.splice(ran,1); 
  263. $("#p").html(this.ranArr.join()) 
  264. }, 
  265. bindCell:function(){ 
  266. var self = this
  267. this.isBind = true
  268. this.cb_cellDown.add(self.cellDown); 
  269. for(var i = 0, len = this.cellArr.length; i<len; i++){ 
  270. this.cellArr[i].on({ 
  271. "mouseover"function(){ 
  272. $(this).addClass("hover"); 
  273. }, 
  274. "mouseout"function(){ 
  275. $(this).removeClass("hover"); 
  276. }, 
  277. "mousedown"function(e){ 
  278. self.cb_cellDown.fire(e, $(this), self); 
  279. return false
  280. }); 
  281. }, 
  282. cellDown:function(e,_cell,self){ 
  283. var //self = this, 
  284. _x = e.pageX - _cell.offset().left, 
  285. _y = e.pageY - _cell.offset().top; 
  286. self.thisLeft = _cell.css("left"); 
  287. self.thisTop = _cell.css("top"); 
  288. self.thisIndex = Math.floor(parseInt(self.thisTop)/self.cellHeight)*self.cellCol; 
  289. self.thisIndex += Math.floor(parseInt(self.thisLeft)/self.cellWidth); 
  290. _cell.css("zIndex",99); 
  291. $(document).on({ 
  292. "mousemove"function(e){ 
  293. _cell.css({ 
  294. "left": e.pageX - self.offX - _x, 
  295. "top": e.pageY - self.offY - _y 
  296. }) 
  297. }, 
  298. "mouseup"function(e){ 
  299. $(document).off("mouseup"); 
  300. $(document).off("mousemove"); 
  301. self.cb_cellDown.empty(); 
  302. if( e.pageX - self.offX < 0 || e.pageX - self.offX > self.areaWidth || e.pageY - self.offY < 0 || e.pageY - self.offY > self.areaHeight ){ 
  303. self.returnCell(); 
  304. return
  305. var _tx, _ty, _ti, _tj; 
  306. _tx = e.pageX - self.offX; 
  307. _ty = e.pageY - self.offY; 
  308. _ti = Math.floor( _ty / self.cellHeight ); 
  309. _tj = Math.floor( _tx / self.cellWidth ); 
  310. self.nextIndex = _ti*self.cellCol + _tj; 
  311. if(self.nextIndex == self.thisIndex){ 
  312. self.returnCell(); 
  313. }else
  314. self.changeCell(); 
  315. }) 
  316. }, 
  317. changeCell:function(){ 
  318. var self = this
  319. _tc = this.cellArr[this.thisIndex], 
  320. _tl = this.thisLeft, 
  321. _tt = this.thisTop, 
  322. _nc = this.cellArr[this.nextIndex], 
  323. _nl = (this.nextIndex % this.cellCol) * this.cellWidth, 
  324. _nt = Math.floor(this.nextIndex / this.cellCol) * this.cellHeight; 
  325. _nc.css("zIndex",98); 
  326. this.cellArr[this.nextIndex] = _tc; 
  327. this.cellArr[this.thisIndex] = _nc; 
  328. this.ranArr[this.nextIndex] = this.ranArr[this.nextIndex] + this.ranArr[this.thisIndex]; 
  329. this.ranArr[this.thisIndex] = this.ranArr[this.nextIndex] - this.ranArr[this.thisIndex]; 
  330. this.ranArr[this.nextIndex] = this.ranArr[this.nextIndex] - this.ranArr[this.thisIndex]; 
  331. _tc.animate({ 
  332. "left": _nl, 
  333. "top": _nt 
  334. },self.time,self.easing,function(){ 
  335. _tc.removeClass("hover"); 
  336. _tc.css("zIndex",""); 
  337. }) 
  338. _nc.animate({ 
  339. "left": _tl, 
  340. "top": _tt 
  341. },self.time,self.easing,function(){ 
  342. _nc.removeClass("hover"); 
  343. _nc.css("zIndex",""); 
  344. self.check(); 
  345. if(!self.cb_cellDown.has(self.cellDown)) self.cb_cellDown.add(self.cellDown); 
  346. }) 
  347. }, 
  348. returnCell:function(){ 
  349. var self = this
  350. this.cellArr[this.thisIndex].animate({ 
  351. "left": self.thisLeft, 
  352. "top": self.thisTop 
  353. },self.time,self.easing,function(){ 
  354. $(this).removeClass("hover"); 
  355. $(this).css("zIndex",""); 
  356. if(!self.cb_cellDown.has(self.cellDown)) self.cb_cellDown.add(self.cellDown); 
  357. }); 
  358. }, 
  359. check:function(){ 
  360. this.e_playCount.html( ++ this.playCount); 
  361. if(this.ranArr.join() == this.imgArr.join()){ 
  362. this.success(); 
  363. }, 
  364. success:function(){ 
  365. alert("ok"); 
  366. this.score += this.scoreArr[this.level] 
  367. this.e_playScore.html(this.score); 
  368. $(document).ready(function(e) { 
  369. var pg = new puzzleGame({ 
  370. img: "images/120908-1347075337_M.jpg" 
  371. }); 
  372. }); 
  373. </script> 
  374. </head> 
  375. <body> 
  376. <div class="wrap"
  377. <div class="play_wrap"
  378. <div id="play_area"></div> 
  379. </div> 
  380. <div class="play_menu"
  381. <a id="play_btn_start" class="play_btn" href="javascript:void(0);" unselectable="on">開始</a> 
  382. <a id="play_btn_level" class="play_btn" href="javascript:void(0);" unselectable="on"
  383. <span class="level_text">4 x 4</span> 
  384. <span class="level_icon"></span> 
  385. </a> 
  386. <div class="level_menu" id="play_menu_level"
  387. <ul> 
  388. <li> 
  389. <a href="javascript:void(0);" level=0 >3 x 3</a> 
  390. </li> 
  391. <li> 
  392. <a href="javascript:void(0);" level=1 >4 x 4</a> 
  393. </li> 
  394. <li> 
  395. <a href="javascript:void(0);" level=2 >6 x 6</a> 
  396. </li> 
  397. </ul> 
  398. </div> 
  399. <p>完成:<span id="play_score">0</span></p> 
  400. <p>交換:<span id="play_count">0</span></p> 
  401. <p>說明:<br> 
  402. -點擊開始,小圖片將隨機打亂;<br> 
  403. -拖動小圖片可交換位置,順序完全正確則為成功;<br> 
  404. -難度分“3x3”、“4x4”、“6x6”三級;<br> 
  405. -對應的分值為100、200、400; 
  406. </p> 
  407. </div> 
  408. </div> 
  409. </body> 
  410. </html> 

希望本文所述對大家的jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久伊人av| 欧美夫妻性生活xx| 成人国产精品色哟哟| 国产日韩精品电影| 国产一区香蕉久久| 中国china体内裑精亚洲片| 欧美激情久久久| 久久久久久久久国产精品| 热re91久久精品国99热蜜臀| 97成人超碰免| 欧美激情免费观看| 久久成人综合视频| 欧美性猛交xxxx免费看| 26uuu久久噜噜噜噜| 国产在线精品播放| 性色av一区二区三区| 日韩欧美极品在线观看| 亚洲一区二区中文| 亚洲天堂av在线免费观看| 亚洲日韩中文字幕在线播放| 中文字幕国产日韩| 亚洲高清av在线| 伊人久久久久久久久久久| 91精品国产色综合久久不卡98口| 三级精品视频久久久久| 激情亚洲一区二区三区四区| 精品国产鲁一鲁一区二区张丽| 国产精品免费久久久久影院| 欧美噜噜久久久xxx| 亚洲理论片在线观看| 成人国内精品久久久久一区| 亚洲精品98久久久久久中文字幕| 欧美精品制服第一页| 日韩av电影免费观看高清| 国产精品一久久香蕉国产线看观看| 精品国产91乱高清在线观看| 亚洲经典中文字幕| 久久99热精品| 亚洲天堂av在线免费观看| 日韩激情第一页| 欧美性xxxx| 欧美性生活大片免费观看网址| 亚洲成人xxx| 在线免费看av不卡| 久久天天躁狠狠躁夜夜躁| 日韩欧美大尺度| 国模gogo一区二区大胆私拍| 91久久中文字幕| 欧美精品在线免费播放| 中文字幕亚洲综合久久| 欧美亚洲另类视频| 国产亚洲精品久久久久动| 91影视免费在线观看| 在线观看成人黄色| 亚洲欧美日韩高清| 精品视频在线导航| xxxxx91麻豆| 97国产精品视频| 亚州av一区二区| 97精品视频在线观看| 成人午夜一级二级三级| 欧美成人四级hd版| 国产精品你懂得| 国产精品美女在线观看| 国产免费亚洲高清| 一区二区三区在线播放欧美| 91国自产精品中文字幕亚洲| 国产+成+人+亚洲欧洲| 久久精品免费播放| 国产精品免费视频xxxx| 日韩国产在线看| 亚洲天堂男人天堂女人天堂| 亚洲国产成人精品女人久久久| 尤物九九久久国产精品的分类| 国产欧美久久一区二区| 97热在线精品视频在线观看| 成人精品视频久久久久| 精品视频中文字幕| 欧美日韩激情美女| 久久久免费高清电视剧观看| 97在线精品国自产拍中文| 欧美中文字幕在线观看| 伊人久久大香线蕉av一区二区| 亚洲最大福利视频| 日韩精品在线观看网站| www国产亚洲精品久久网站| 亚洲欧美制服综合另类| 成人欧美在线视频| 欧美日韩亚洲一区二区三区| 欧美性猛交xxxx免费看| 日韩国产激情在线| 疯狂做受xxxx欧美肥白少妇| 欧美日韩在线视频一区| 久久久久久成人精品| 91日韩在线视频| 欧美日韩一区二区在线| 亚洲免费伊人电影在线观看av| 欧美日韩国产一中文字不卡| 久久久影视精品| 日韩精品有码在线观看| 国产美女久久精品香蕉69| 欧美性视频在线| 成人网址在线观看| 欧美性高潮在线| 国产精品日韩在线| 国产女精品视频网站免费| 成人xvideos免费视频| 欧美大肥婆大肥bbbbb| 18性欧美xxxⅹ性满足| 国产精品444| 国产精品一区专区欧美日韩| 日韩av中文字幕在线播放| 日韩中文字幕久久| 久久久999精品免费| 欧美电影免费观看电视剧大全| 中文字幕精品国产| 亚洲国模精品一区| 色777狠狠综合秋免鲁丝| 日韩av电影在线免费播放| 自拍视频国产精品| 亚洲人成五月天| 日韩中文综合网| 欧美激情精品久久久久久蜜臀| 97香蕉超级碰碰久久免费软件| 91在线网站视频| 日韩美女免费线视频| 亚洲新中文字幕| 亚洲自拍偷拍色片视频| 精品福利在线视频| 欧美性在线视频| 欧美精品在线网站| 精品中文字幕久久久久久| 欧美xxxx14xxxxx性爽| 欧美韩国理论所午夜片917电影| 久久久国产成人精品| 国产精品久久久久久久电影| 九九视频直播综合网| 一区二区三区视频免费在线观看| 久久久极品av| 久久手机免费视频| 久久久久久九九九| 日韩电影在线观看永久视频免费网站| 91网站免费观看| 久久久中文字幕| 亚洲第一页自拍| 日韩一区二区三区xxxx| 91精品视频网站| 色妞色视频一区二区三区四区| 91在线观看免费高清完整版在线观看| 亚洲精品网站在线播放gif| 青草青草久热精品视频在线网站| 亚洲影院污污.| 国产精品免费视频xxxx| 国产精品免费福利| 精品国产乱码久久久久久虫虫漫画| 最近免费中文字幕视频2019| 久久高清视频免费| 日韩在线视频播放| 久久人体大胆视频| 青青草国产精品一区二区| 性亚洲最疯狂xxxx高清| 91超碰中文字幕久久精品| 永久免费看mv网站入口亚洲| 亚洲一区二区久久久|