翻翻游戏
这是一个翻翻游戏,很简单的游戏,但是对我来说是走出去的第一步,请看到的人别喷我哦。我知道代码没有优化,游戏还有BUG,可玩性也不高,目前我还在想办法处理,我知道的不多,请各位有兴趣发现的大神帮忙点拨点拨,在下感激不尽。先感谢我的同事张童鞋,他给了我不小的帮助。
这是游戏截图:
游戏玩法:用鼠标点击天蓝色方块,点击一次显示,第二次点击遮盖;同时只能点开两个格子;两个相同图片,增加相应分数,每种图片分数不同;两个不同图片,还原成遮盖状态;
代码如下图:所有代码都在一个文件中,包含了jquery和我自己的小库,但是没有用到多少里面的东西,代码中只有HZTG.D()是我小库里的,作用是获取制定ID的DOM对象。图片的话,大家有兴趣自己搞个10个图片试试吧。也可以改参数,我在代码中做注释好了。
1 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://HdhCmsTestw3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
2 < html xmlns ="http://HdhCmsTestw3.org/1999/xhtml" >
3 < head >
4 < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" />
5 < title > 2012-1-29 </ title >
6 < style >
7 .child {
8 float : left ;
9 /* border:1px solid #fff; */
10 background : skyblue ;
11 margin : 10px ;
12 border-radius : 5px ;
13 position : relative ;
14 }
15 .cover
16 {
17 width : 100% ;
18 height : 100% ;
19 position : absolute ;
20 left : 0 ;
21 background : #ededed ;
22 overflow : hidden ;
23 z-index : 999 ;
24 border-radius : 5px ;
25 filter : alpha(opacity=50) ;
26 opacity : 0.5 ;
27 }
28 ul,li { list-style : none ; }
29 </ style >
30 < script type ="text/javascript" src ="js/jquery-1.4.1.min.js" ></ script >
31 < script type ="text/javascript" src ="js/pub.js" ></ script >
32 </ head >
33 < body >
34 </ body >
35 </ html >
36 < script >
37 Function.prototype.createInstance = function () {
38 var T = function () { };
39 T.prototype = this .prototype;
40 T.prototype.constructor = this ;
41 var o = new T();
42 this .apply(o, arguments);
43 return o;
44 }
45 function WBoard() {
46 this .allAry = [];
47 this .showAry = [];
48 this .board = document.createElement( " div " );
49 this .board.id = " board " ;
50 document.getElementsByTagName( " body " )[ 0 ].appendChild( this .board);
51 this .board.style.border = " 1px solid #B0B0FF " ;
52 this .board.style.borderRadius = " 5px " ;
53 this .board.style.display = " block " ;
54 this .board.style.position = " relative " ;
55 this .board.style.overflow = " hidden " ;
56 this .board.style.zIndex = " 9999 " ;
57 this .board.style.padding = " 30px 0px 20px 10px " ;
58 this .board.style.margin = " 0 auto " ;
59 this .board.style.background = " url(\"images/board_bg.jpg\") repeat " ;
60 }
61
62 function WChild(relid,id) {
63 if ( ! this ._editAry) this ._editAry = [];
64 this .id = id;
65 this ._editAry.push(id);
66 this .show = false ;
67 this .className = " child " ;
68 this .child = document.createElement( " div " );
69 this .child.id = this .id;
70 this .child.setAttribute( " relid " , relid);
71 this .child.className = this .className;
72 }
73
74 WBoard.prototype.config = {
75 Items: 1 ,
76 I " 130px " ,
77 Iheight: " 125px " ,
78 cols: 5 ,
79 WClothes:[],
80 points: 0 ,
81 time: 30 ,
82 relTime: 30 ,
83 defTime: 30 ,
84 start: false ,
85 timer: null ,
86 useTime: 0 ,
87 zzOpacity: 1 ,
88 zzLock: false
89
90 }
91
92 WBoard.prototype.addChild = function (relid) {
93 this .allAry[ this .allAry.length] = new WChild(relid, this .allAry.length);
94 }
95
96 WBoard.prototype.setChildStyle = function (n) {
97 n.style.width = this .config.Iwidth;
98 n.style.height = this .config.Iheight;
99 }
100
101 WBoard.prototype.setZheZhao = function () {
102 var _opacity = this .config.zzOpacity, _IE = this .config.zzOpacity * 100 ;
103 if ( ! document.getElementById( " zz " )) {
104 var zz = document.createElement( " div " );
105 zz.id = " zz " ;
106 zz.style.zIndex = " 10002 " ;
107 zz.style.position = " absolute " ;
108 zz.style.display = " block " ;
109 zz.style.left = " 0 " ;
110 zz.style.top = " 0 " ;
111 zz.style.opacity = _opacity;
112 zz.style.filter = " alpha(opacity= " + _IE + " ) " ;
113 zz.style.backgroundColor = "" ;
114 zz.style.width = Math.max(document.body.scrollWidth, document.body.clientWidth, $(document).width()) + " px " ; // document.body.clientWidth || document.documentElement.clientWidth;
115 zz.style.height = Math.max(document.body.scrollHeight, document.body.clientHeight, $(document).height()) + " px " ; // document.body.clientHeight || document.documentElement.clientHeight;
116 document.getElementsByTagName( " body " )[ 0 ].appendChild(zz);
117 } else {
118 HZTG.D( " zz " ).style.opacity = _opacity;
119 HZTG.D( " zz " ).style.filter = " alpha(opacity= " + _IE + " ) " ;
120 HZTG.D( " zz " ).style.display = " block " ;
121 }
122
123 }
124
125 WBoard.prototype.clearNode = function (node) {
126 this .cover(node);
127 node.onclick = null ;
128 }
129
130 WBoard.prototype.getLive = function () {
131 var _keyAry = [];
132 for ( var i = 0 ; i < this .allAry.length; i ++ ) {
133 _keyAry.push( "" + this .allAry[i].id + "" );
134 }
135 return _keyAry;
136 }
137
138 WBoard.prototype.kill = function (showId) {
139 var _keyAry = this .getLive();
140 this .allAry.del($.inArray( "" + showId + "" , _keyAry));
141 }
142
143 WBoard.prototype.getPoints = function (n) {
144 var _point, _basePoint = n.getAttribute( " relid " ); // this.config.points;
145 if (_basePoint) { _point = _basePoint * 2 ; }
146 this .config.points = _point + this .config.points;
147 }
148 WBoard.prototype.setPoints = function () {
149 if (HZTG.D( " points " )) {
150 HZTG.D( " points " ).innerHTML = this .config.points;
151 }
152 }
153
154 WBoard.prototype.Buffer = function (node, t) {
155 var sAryVal = node, _this = this ;
156 if ( ! t) { // 入库
157 this .showAry[ this .showAry.length] = sAryVal;
158 var _timer = null ;
159 if ( this .showAry.length > 1 ) {
160 _this.config.zzOpacity = 0.5 ;
161 this .setZheZhao();
162 _timer = window.setTimeout( function () {
163 if (_this测试数据pare(_this.showAry[ 0 ], _this.showAry[ 1 ])) {
164 _this.getPoints(_this.showAry[ 0 ]);
165 _this.clearNode(_this.showAry[ 0 ]);
166 _this.clearNode(_this.showAry[ 1 ]);
167 for ( var i = 0 ; i < 2 ; i ++ ) {
168 _this.kill(_this.showAry[i].id);
169 }
170 _this.setPoints();
171 if (_this.allAry.length == 0 ) {
172 // alert("Congratulations! You Win!");
173 if (_this.config.timer) { clearInterval(_this.config.timer); }
174 _this.board.style.width = _this.board.offsetWidth + " px " ;
175 _this.board.style.height = _this.board.offsetHeight + " px " ;
176 // _this.board.innerHTML = "";
177 _this.config.zzOpacity = 0.5 ;
178 _this.setZheZhao();
179 _this.result();
180 }
181 } else {
182 for ( var i = 0 ; i < 2 ; i ++ ) {
183 _this.showAry[i].innerHTML = "" ;
184 _this.takeOff(_this.showAry[i]);
185 }
186 }
187 _this.showAry.length = 0 ;
188 if (_this.config.time > 0 ){
189 HZTG.D( " zz " ).style.display = " none " ;
190 }
191 }, " 500 " );
192 }
193 } else { // 出库
194 this .showAry.length = 0 ;
195 }
196 }
197
198 WBoard.prototype测试数据pare = function (n1, n2) {
199 return (n1.getAttribute( " relid " ) == n2.getAttribute( " relid " ));
200 }
201
202 WBoard.prototype.addEvent = function (o, name, fn, argsObj) {
203 var eventHander = fn;
204 var _this = this ;
205 if (argsObj) {
206 eventHander = function () {
207 fn.call(_this, argsObj);
208 }
209 }
210 if (o.addEventListener) return o.addEventListener(name, eventHander, false );
211 return o.attachEvent( ' on ' + name, eventHander);
212 }
213
214 WBoard.prototype.cover = function (n) {
215 var _cover = document.createElement( " div " );
216 _cover.className = " cover " ;
217 n.appendChild(_cover);
218 }
219 WBoard.prototype.setTimer = function () {
220 this .config.start = true ;
221 var timeL = parseInt(HZTG.D( " timer " ).style.width), beginStep = 2 , endStep = false , comparand = 0 , s = 0 , step = 0 , secTime = 0 ;
222 if ( this .config.start) {
223 var _sL = 0 , _step = 0 , _this = this ;
224 this .config.timer = window.setInterval( function () {
225 s ++ ;
226 _step = timeL % _this.config.time;
227 step = timeL / _this.config.time;
228 if (_step == comparand) {
229 var _timeL = $( " #timer " ).width();
230 _timeL -= step;
231 if ( ! endStep) {
232 if ( ! (s > _this.config.time)) {
233 $( " #timer " ).width(_timeL);
234 if (s == _this.config.time) {
235 clearInterval(_this.config.timer);
236 _this.result();
237 }
238 }
239 } else {
240 secTime ++ ;
241 if ( ! (secTime > _this.config.time)) {
242 $( " #timer " ).width(_timeL);
243 if (secTime == _this.config.time) {
244 clearInterval(_this.config.timer);
245 _this.result();
246 }
247 }
248 } // end if !endStep
249 } else {
250 endStep = true ;
251 if ( ! (s > _this.config.relTime)) {
252 var _timeL = $( " #timer " ).width();
253 _timeL -= beginStep;
254 _sL = -- _this.config.time;
255 _this.config.time = _sL;
256 timeL = _timeL;
257 $( " #timer " ).width(_timeL);
258 if (s == _this.config.relTime) {
259 clearInterval(_this.config.timer);
260 _this.result();
261 }
262 }
263 } // end _step == comparand
264 _this.config.useTime = s + 1 ;
265 }, " 1000 " );
266 }
267 }
268 WBoard.prototype.nav = function () {
269 var _this = this ;
270 if ( ! HZTG.D( " pointsB " )) {
271 var _timerB = document.createElement( " span " );
272 _timerB.style.zIndex = " 100004 " ;
273 _timerB.style.padding = " 3px 5px " ;
274 _timerB.style.position = " absolute " ;
275 _timerB.style.fontSize = " 14px " ;
276 _timerB.style.fontWeight = " bold " ;
277 _timerB.style.color = " #fff " ;
278 _timerB.style.right = " 64% " ;
279 _timerB.style.top = " 2px " ;
280 _timerB.style.display = " inline-block " ;
281 _timerB.style.marginRight = " 3px " ;
282 this .board.appendChild(_timerB);
283 _timerB.innerHTML = " Timer : " ;
284 }
285
286 if ( ! HZTG.D( " timerContainer " )) {
287 var _timerContainer = document.createElement( " span " );
288 _timerContainer.id = " timerContainer " ;
289 _timerContainer.style.zIndex = " 100004 " ;
290 _timerContainer.style.width = " 100px " ;
291 _timerContainer.style.padding = " 3px " ;
292 _timerContainer.style.position = " absolute " ;
293 _timerContainer.style.background = " url(\"images/nav_bg.jpg\") repeat " ;
294 _timerContainer.style.right = " 47% " ;
295 _timerContainer.style.top = " 2px " ;
296 _timerContainer.style.display = " inline-block " ;
297 _timerContainer.style.marginRight = " 3px " ;
298 this .board.appendChild(_timerContainer);
299 if ( ! HZTG.D( " timer " )) {
300 var _timerDiv = document.createElement( " span " );
301 _timerDiv.id = " timer " ;
302 _timerDiv.style.zIndex = " 100004 " ;
303 _timerDiv.style.position = " relative " ;
304 _timerDiv.style.background = " #f50 " ;
305 _timerDiv.style.width = " 100px " ;
306 _timerDiv.style.height = " 14px " ;
307 _timerDiv.style.display = " inline-block " ;
308 if (HZTG.D( " timerContainer " )) { HZTG.D( " timerContainer " ).appendChild(_timerDiv); }
309 // _timerDiv.innerHTML = "";
310 }
311 }
312
313
314 if ( ! HZTG.D( " pointsB " )) {
315 var _pointsB = document.createElement( " span " );
316 _pointsB.style.zIndex = " 100004 " ;
317 _pointsB.style.padding = " 3px 5px " ;
318 _pointsB.style.position = " absolute " ;
319 _pointsB.style.fontSize = " 14px " ;
320 _pointsB.style.fontWeight = " bold " ;
321 _pointsB.style.color = " #fff " ;
322 _pointsB.style.right = " 27% " ;
323 _pointsB.style.top = " 2px " ;
324 _pointsB.style.display = " inline-block " ;
325 _pointsB.style.marginRight = " 3px " ;
326 this .board.appendChild(_pointsB);
327 _pointsB.innerHTML = " Your Points : " ;
328 }
329 if ( ! HZTG.D( " points " )) {
330 var _points = document.createElement( " span " );
331 _points.id = " points " ;
332 _points.style.zIndex = " 100004 " ;
333 _points.style.padding = " 3px 5px " ;
334 _points.style.border = " 1px solid #fff " ; // #CAE1E6
335 _points.style.position = " absolute " ;
336 _points.style.fontSize = " 14px " ;
337 _points.style.fontWeight = " bold " ;
338 _points.style.background = " url(\"images/nav_bg.jpg\") repeat " ;
339 _points.style.borderRadius = " 5px " ;
340 _points.style.color = " #fff " ;
341 _points.style.width = " 60px " ;
342 _points.style.textAlign = " right " ;
343 _points.style.right = " 15% " ;
344 _points.style.top = " 2px " ;
345 _points.style.display = " inline-block " ;
346 _points.style.marginRight = " 3px " ;
347 this .board.appendChild(_points);
348 _points.innerHTML = this .config.points;
349 }
350 if ( ! HZTG.D( " replay " )) {
351 var _replay = document.createElement( " span " );
352 _replay.id = " replay " ;
353 _replay.style.zIndex = " 100004 " ;
354 _replay.style.padding = " 3px 5px " ;
355 _replay.style.border = " 1px solid #fff " ; // #CAE1E6
356 _replay.style.position = " absolute " ;
357 _replay.style.fontSize = " 14px " ;
358 _replay.style.fontWeight = " bold " ;
359 _replay.style.background = " url(\"images/nav_bg.jpg\") repeat " ;
360 _replay.style.borderRadius = " 5px " ;
361 _replay.style.color = " #fff " ;
362 _replay.style.right = " 0 " ;
363 _replay.style.top = " 2px " ;
364 _replay.style.display = " inline-block " ;
365 _replay.style.marginRight = " 3px " ;
366 _replay.style.cursor = " pointer " ;
367 this .board.appendChild(_replay);
368 _replay.innerHTML = " Replay " ;
369 // this.addEvent(_replay, "click", this.draw)
370 _replay.onclick = function () {
371 _this.draw();
372 }
373 }
374 }
375
376 WBoard.prototype.result = function () {
377 this .setZheZhao();
378 this .config.time = 0 ;
379 if ( ! HZTG.D( " result " )){
380 this .config.zzLock = true ;
381 var _result = document.createElement( " div " );
382 _result.id = " result " ;
383 _result.style.display = " block " ;
384 _result.style.position = " absolute " ;
385 _result.style.top = " 20% " ;
386 _result.style.left = " 40% " ;
387 _result.style.zIndex = " 100007 " ;
388 // alert(this.board.style.width);
389 _result.style.width = this .board.offsetWidth / 2 + " px " ;
390 _result.style.height = this .board.offsetHeight / 2 + " px " ;
391 _result.style.margin = " 0 auto " ;
392 _result.style.filter = " alpha(opacity=100) " ;
393 _result.style.opacity = " 1 " ;
394 _result.style.background = " url(\"images/youwin.png\") 50% 20% #ededed no-repeat " ;
395 document.getElementsByTagName( " body " )[ 0 ].appendChild(_result);
396 } else {
397 // HZTG.D("rReplay").style.display = "block";
398 HZTG.D( " result " ).style.display = " block " ;
399 }
400 HZTG.D( " result " ).innerHTML = " <ul style=\"70%; height:45%; position:relative; left:5%; top:45%; line-height:34px; font-size:26px; font-weight:bold; color:#f60;\"><li>You Use : " + this .config.useTime + " s</li><li>You Earn : " + this .config.points + " points</li><li></li></li></ul> " ;
401 if ( ! HZTG.D( " rReplay " )) {
402 var rReplay = document.createElement( " div " );
403 rReplay.id = " rReplay " ;
404 rReplay.style.zIndex = " 100008 " ;
405 rReplay.style.position = " relative " ;
406 rReplay.style.padding = " 3px 5px " ;
407 rReplay.style.border = " 1px solid #fff " ; // #CAE1E6
408 rReplay.style.fontSize = " 14px " ;
409 rReplay.style.marginTop = " 50px " ;
410 rReplay.style.left = " 40% " ;
411 rReplay.style.fontWeight = " bold " ;
412 rReplay.style.background = " url(\"images/nav_bg.jpg\") repeat " ;
413 rReplay.style.borderRadius = " 5px " ;
414 rReplay.style.color = " #fff " ;
415 rReplay.style.display = " inline-block " ;
416 rReplay.style.cursor = " pointer " ;
417 HZTG.D( " result " ).appendChild(rReplay);
418 rReplay.innerHTML = " Replay " ;
419 // this.addEvent(_replay, "click", this.draw)
420 var _this = this ;
421 rReplay.onclick = function () {
422 _this.draw();
423 }
424 }
425 // alert("game over! you use " + this.config.useTime + "s and earn " + this.config.points + "");
426 }
427
428 WBoard.prototype.dress = function (n) {
429 var _haveClothes = this .config.WClothes.length;
430 for ( var i = 0 ; i < _haveClothes; i ++ ) {
431 if (n.getAttribute( " relid " ) == i) {
432 // n.innerHTML = "<img src=\"" + this.config.WClothes[i] + "\" width=\"98\" height=\"98\" style=\"display:none\"/>";
433 n.style.background = " url(\" " + this .config.WClothes[i] + " \") no-repeat " ;
434 }
435 }
436 }
437 WBoard.prototype.takeOff = function (n) {
438 n.style.background = " skyblue " ;
439 }
440
441 WBoard.prototype.clear = function () {
442 if (HZTG.D( " result " )){HZTG.D( " result " ).style.display = " none " ;}
443 if (HZTG.D( " zz " )){HZTG.D( " zz " ).style.display = " none " ;}
444 this .config.points = 0 ;
445 this .allAry.length = 0 ;
446 this .showAry.length = 0 ;
447 this .board.innerHTML = "" ;
448 }
449
450 WBoard.prototype.init = function () {
451 this .clear();
452 for ( var i = 0 ; i < this .config.Items; i ++ ) {
453 this .addChild(i);
454 this .addChild(i);
455 }
456 this .board.style.width = parseInt( this .config.cols * 152 + 10 ) + " px " ;
457 var aAry = this .allAry;
458 var aL = aAry.length;
459 var _this = this ;
460 var d = 0 ;
461 for ( var i = 0 ; i < aL; i ++ ) {
462
463 this .setChildStyle(aAry[i].child);
464 aAry[i].child.onclick = function () {
465 var sAryKey = this .getAttribute( " relid " );
466
467 if ( this .innerHTML.length == 0 ) { // 入库
468 this .innerHTML = " " ; // 暂时方便判断是否入库用中文状态下的空格填充
469 _this.dress( this );
470 _this.Buffer( this , false );
471 } else { // 出库
472 this .innerHTML = "" ;
473 _this.takeOff( this );
474 _this.Buffer( this , true );
475 }
476 }
477 // this.addEvent(aAry[i].child, "click", this.beClick, aAry[i].child);
478 }
479 this .allAry.sort( this .random);
480 }
481
482 WBoard.prototype.draw = function () {
483 this .init();
484 this .nav();
485 var aL = this .allAry.length;
486 var str = "" ;
487 for ( var i = 0 ; i < aL; i ++ ) {
488 this .board.appendChild( this .allAry[i].child);
489 }
490 this .config.time = this .config.defTime;
491 this .setTimer();
492 }
493
494 WBoard.prototype.replay = function () {
495 this .draw();
496 }
497
498 WBoard.prototype.beClick = function (node) {
499 var sAryKey = node.getAttribute( " relid " );
500 if (node.innerHTML == "" ) { // 入库
501 // node.innerHTML = sAryKey;
502 this .dress(node);
503 this .Buffer(node, false );
504 } else { // 出库
505 // node.innerHTML = "";
506 this .takeOff(node);
507 this .Buffer(node, true );
508 }
509 }
510
511 WBoard.prototype.random = function (a, b) {
512 return Math.random() > . 5 ? - 1 : 1 ; // 用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
513 }
514
515 Array.prototype.del = function (n) {
516 if (n < 0 ) return false ;
517 else {
518 this .splice(n, 1 ); // .concat(this.slice(n + 1, this.length));
519 return this ;
520 }
521 }
522 var testBoard = new WBoard( " o " );
523 testBoard.config.Items = 10 ;//这里是要显示的图片种类,最终显示Items*2的格子数,就是n对
524 testBoard.config.WClothes = [ " images/apple1.png " , " images/chilli1.png " , " images/mushroom1.png " , " images/lotusroot1.png " , " images/grape1.png " , " images/carrot1.png " , " images/banana1.png " , " images/cucumber1.png " , " images/cherry1.png " , " images/pomegranate1.png " ];//这里的图片数必须=Items
525 testBoard.draw();
526
527 </ script >
标签: javascript 游戏 html css
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did46870