stack.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402
  1. var logh=20;
  2. extraleft=new Array();
  3. extraleft[1]=6;
  4. extraleft[2]=4;
  5. extraleft[3]=5;
  6. extraleft[4]=5;
  7. extraright=10;
  8. var saw=308;
  9. var sah=247;
  10. var stdir;
  11. var stwidth=new Array();
  12. var stmargin=new Array();
  13. var sttype=new Array();
  14. var ststart=new Array();
  15. var stscore=0;
  16. sts=0;
  17. stwidth[0]=260; //a ronk maga!
  18. ststart[0]=(stwidth[0]-270)*Math.random();
  19. stmargin[0]=(saw-stwidth[0])/2; //ronk margoja!
  20. sttype[0]=Math.floor(Math.random()*4)+1;
  21. var stinterval;
  22. var paddingtarget=0,paddingnow=0;
  23. var gameisover=1;
  24. var dnd=0;
  25. function firstinit() {
  26. document.body.addEventListener("touchmove", function(e) {
  27. e.preventDefault();
  28. }, false);
  29. gamesplayed=getCookie('stack_gamesplayed');
  30. if(gamesplayed == '') {gamesplayed=0;}
  31. document.getElementById('gamesplayed').innerHTML=gamesplayed;
  32. theirbest=getCookie('stack_bestscore');
  33. if(theirbest == '') {theirbest=0;}
  34. document.getElementById('yourbest').innerHTML=theirbest;
  35. imgpreload(new Array('i/dropshadow.png','i/11.png','i/12.png','i/13.png','i/21.png','i/22.png','i/23.png','i/31.png','i//32.png','i/33.png','i/41.png','i/42.png','i/43.png'));
  36. document.body.addEventListener("touchmove", function(e) {
  37. e.preventDefault();
  38. }, false);
  39. }
  40. function init() {
  41. tmp=document.createElement('div');
  42. tmp.style.position='absolute';
  43. tmp.style.cursor='pointer';
  44. if(typeof(tmp.ontouchstart) !== 'undefined') {
  45. tmp.ontouchstart=handleclick;
  46. } else {
  47. tmp.onmousedown=handleclick;
  48. tmp.onclick = function() {return false;}
  49. }
  50. tmp.style.backgroundImage='url(i/stackthelog.png)';
  51. tmp.style.backgroundPosition='center center';
  52. tmp.style.backgroundRepeat='no-repeat';
  53. tmp.style.width='298px';
  54. tmp.style.height='55px';
  55. tmp.style.padding='17px 11px 0 11px';
  56. tmp.style.zIndex='30';
  57. tmp.style.margin='243px 0 0 0';
  58. $('st_outerarea').appendChild(tmp);
  59. tmp=document.createElement('div')
  60. tmp.id='st_scrollarea';
  61. tmp.style.backgroundImage='url(i/bg1250.png)';
  62. tmp.style.backgroundPosition='bottom center';
  63. tmp.style.width='320px';
  64. tmp.style.height='315px';
  65. tmp.style.position='absolute';
  66. $('st_outerarea').appendChild(tmp);
  67. tmp=document.createElement('div');
  68. tmp.style.backgroundImage='url(i/fuhatul.png)';
  69. tmp.style.position='absolute';
  70. tmp.style.width='320px';
  71. tmp.style.height='87px';
  72. tmp.style.marginTop='228px';
  73. tmp.style.zIndex='10';
  74. $('st_scrollarea').appendChild(tmp);
  75. tmp=document.createElement('div');
  76. tmp.style.backgroundImage='url(i/fuelol.png)';
  77. tmp.style.position='absolute';
  78. tmp.style.width='311px';
  79. tmp.style.height='39px';
  80. tmp.style.marginTop='217px';
  81. tmp.style.zIndex='20';
  82. $('st_scrollarea').appendChild(tmp);
  83. tmp2=Math.floor(Math.random()*4)+1;
  84. tmp=document.createElement('div');
  85. tmp.id='stp_0';
  86. tmp.style.position='absolute';
  87. tmp.style.height=logh+'px';
  88. tmp.style.marginTop=sah-logh+'px';
  89. tmp.style.marginLeft=stmargin[0]-extraleft[sttype[0]]+7+'px';
  90. $('st_scrollarea').appendChild(tmp);
  91. showaronk('stp_0',sttype[0],ststart[0],stwidth[0]);
  92. //addshadow();
  93. stack_init();
  94. }
  95. function stack_init() {
  96. if(sts>10) {
  97. paddingtarget=(sts-10)*(logh-4);
  98. if(sts > 15) {
  99. $('st_scrollarea').removeChild($('stp_'+(sts-16)));
  100. if(sts % 2 == 0 && sts>16) { $('st_scrollarea').removeChild($('shd_'+(sts-16)));}
  101. }
  102. }
  103. sts++;
  104. stwidth[sts]=stwidth[sts-1];
  105. ststart[sts]=(stwidth[sts]-270)*Math.random();
  106. stmargin[sts]=0; stdir=Math.log(sts+1)*2; $('level').innerHTML=Math.floor(sts/10)+1;
  107. sttype[sts]=Math.floor(Math.random()*4)+1;
  108. if(Math.random()>.5) {stdir*=-1; stmargin[sts]=saw-stwidth[sts];}
  109. tmp=document.createElement('div');
  110. tmp.id='stp_'+sts;
  111. // tmp.style.backgroundColor='#ffeb00';
  112. // tmp.style.overflow='hidden';
  113. tmp.style.position='absolute';
  114. tmp.style.height=logh+'px';
  115. tmp.style.width=extraleft[sttype[sts]]+stwidth[sts]+extraright/2+'px';
  116. tmp.style.marginTop=sah-(sts+2)*(logh-4);
  117. tmp.style.marginLeft=stmargin[sts]-extraleft[sttype[sts]]+7+'px';
  118. $('st_scrollarea').appendChild(tmp);
  119. showaronk('stp_'+sts,sttype[sts],ststart[sts],stwidth[sts]);
  120. stinterval=setInterval('stack_dothemove()',50);
  121. }
  122. function stack_dothemove() {
  123. //if($('score').innerHTML < stscore) {
  124. // $('score').innerHTML=Math.floor((parseInt($('score').innerHTML)+stscore*3)/4);
  125. //}
  126. if(paddingtarget > paddingnow+1) {
  127. paddingnow=(paddingtarget+paddingnow)/2;
  128. $('st_scrollarea').style.paddingTop=paddingnow+'px';
  129. }
  130. stmargin[sts]+=stdir;
  131. if(stmargin[sts] < 0) {stmargin[sts]=-stmargin[sts]; stdir*=-1;}
  132. else if(stmargin[sts]+stwidth[sts] > saw) {stmargin[sts]=saw-stwidth[sts]-stmargin[sts]-stwidth[sts]+ saw; stdir*=-1;}
  133. document.getElementById('stp_'+sts).style.marginLeft=stmargin[sts]-extraleft[sttype[sts]]+7+'px';
  134. }
  135. function handleclick() {
  136. if(dnd==1) {return false;}
  137. dnd=1;
  138. clearTimeout(stinterval);
  139. stwo=stwidth[sts];
  140. hcf='';
  141. if(stmargin[sts] < stmargin[sts-1]) {stwidth[sts]-=stmargin[sts-1]-stmargin[sts]; stmargin[sts]=stmargin[sts-1]; hcf='left';}
  142. if(stmargin[sts]+stwidth[sts] > stmargin[sts-1]+stwidth[sts-1]) {stwidth[sts]-= stmargin[sts]+stwidth[sts] - stmargin[sts-1]-stwidth[sts-1]; hcf='right';}
  143. if(stwidth[sts] <= 0) {hcf='all'}
  144. cutaronk('stp_'+sts,sttype[sts],ststart[sts],stwidth[sts],hcf);
  145. if(stwidth[sts] <= 0) {stwidth[sts]=0;}
  146. if(sts % 2 == 0 && stwidth[sts] > 0) {
  147. addshadow();
  148. }
  149. bon=Math.floor(stwidth[sts]/10*Math.log(sts+1));
  150. if(Math.abs(stwidth[sts] - stwidth[sts-1])<3 && stwidth[sts]>0) {
  151. bon*=2;
  152. $('combo').innerHTML=parseInt($('combo').innerHTML)+1;
  153. tmp=document.createElement('div');
  154. tmp.innerHTML='<div style="padding:5px"><b>漂亮 完美!</b></div>';
  155. tmp.id='box_perfect';
  156. tmp.style.zIndex='10';
  157. tmp.style.position='absolute';
  158. tmp.style.textAlign='center';
  159. tmp.style.width='150px';
  160. tmp.style.backgroundColor='#333333';
  161. tmp.style.marginLeft='85px';
  162. tmp3=(sah-(sts+2)*(logh-4)-16);
  163. tmp.style.marginTop=tmp3+'px';
  164. $('st_scrollarea').appendChild(tmp);
  165. tmp2=new Array();
  166. tmp2[0]="";
  167. tmp2[1]="$('score_title').style.color='#ffffff'; $('box_perfect').style.marginTop='"+(tmp3-5)+"px';";
  168. tmp2[2]="$('box_perfect').style.marginTop='"+(tmp3-10)+"px';";
  169. tmp2[3]="$('box_perfect').style.marginTop='"+(tmp3-15)+"px';";
  170. tmp2[4]="$('st_scrollarea').removeChild($('box_perfect')); $('score_title').style.color=''";
  171. ttt=Math.random();
  172. stispace[ttt]=tmp2;
  173. setTI(ttt,50);
  174. }
  175. stscore+=bon;
  176. $('score').innerHTML=stscore;
  177. if(stscore>theirbest) {$('score').style.color='#ff0000';}
  178. }
  179. function addshadow() {
  180. tmp=document.createElement('img');
  181. tmp.src='i/dropshadow.png';
  182. tmp.id='shd_'+sts;
  183. tmp.style.zIndex='15';
  184. tmp.style.position='absolute';
  185. tmp.style.width=(extraleft[sttype[sts]]+stwidth[sts]+extraright/2)+'px';
  186. tmp.style.height='30px';
  187. tmp.style.marginLeft=(stmargin[sts]-extraleft[sttype[sts]]+7)+'px';
  188. tmp.style.marginTop=(sah-(sts+1)*(logh-4)-1)+'px';
  189. $('st_scrollarea').appendChild(tmp);
  190. }
  191. function cutaronk(crid,crtype,crstart,crstays,crfrom) {
  192. //srfrom: left: bal oldalrol vag le, right: jobb oldalrol vag le
  193. croriw=parseInt(document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.width);
  194. if(crfrom == 'right') {
  195. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.width=crstays+'px';
  196. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('img')[0].style.marginLeft=extraleft[crtype]+crstays-extraright/2+'px';
  197. showaronk(crid,crtype,crstart-crstays,croriw-crstays);
  198. document.getElementById(crid).childNodes[1].style.marginLeft=crstays+'px';
  199. document.getElementById(crid).childNodes[1].style.zIndex='12';
  200. } else if(crfrom == 'left'){
  201. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.width=crstays+'px';
  202. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.marginLeft=extraleft[crtype]+croriw-crstays+1+'px';
  203. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('div')[0].style.backgroundPosition=crstart+crstays-croriw+'px';
  204. document.getElementById(crid).getElementsByTagName('div')[0].getElementsByTagName('img')[1].style.marginLeft=croriw-crstays+'px';
  205. showaronk(crid,crtype,crstart,croriw-crstays);
  206. document.getElementById(crid).childNodes[1].style.zIndex=(sts % 2 == 1)?(14):(16);
  207. }
  208. if(crfrom !='') {
  209. tmp=new Array();
  210. if(crfrom == 'left' || crfrom == 'right') {
  211. tmp[0]="$('"+crid+"').style.marginTop='"+(sah-(sts+1)*(logh-4))+"px';document.getElementById('"+crid+"').childNodes[1].style.marginTop='2px'; document.getElementById('"+crid+"').childNodes[0].style.zIndex="+((sts % 2)?(13):(16))+";";
  212. tmp[1]="$('"+crid+"').childNodes[1].style.opacity='.75'; $('"+crid+"').childNodes[1].style.marginTop='7px';";
  213. tmp[2]="$('"+crid+"').childNodes[1].style.opacity='.5';$('"+crid+"').childNodes[1].style.marginTop='12px';";
  214. tmp[3]="$('"+crid+"').childNodes[1].style.opacity='.25';$('"+crid+"').childNodes[1].style.marginTop='17px';";
  215. tmp[4]="$('"+crid+"').removeChild(document.getElementById('"+crid+"').childNodes[1]);"
  216. } else if(crfrom =='all') {
  217. tmp[0]="$('"+crid+"').childNodes[0].style.marginTop='2px';";
  218. tmp[1]="$('"+crid+"').childNodes[0].style.opacity='.75'; $('"+crid+"').childNodes[0].style.marginTop='7px';";
  219. tmp[2]="$('"+crid+"').childNodes[0].style.opacity='.5'; $('"+crid+"').childNodes[0].style.marginTop='12px';";
  220. tmp[3]="$('"+crid+"').childNodes[0].style.opacity='.25'; $('"+crid+"').childNodes[0].style.marginTop='17px';";
  221. tmp[4]="$('"+crid+"').removeChild(document.getElementById('"+crid+"').childNodes[0]);"
  222. }
  223. if(stwidth[sts] >0) { tmp[4]+="stack_init(); dnd=0;"; } else { tmp[4]+='gameover();' }
  224. ttt=Math.random();
  225. stispace[ttt]=tmp;
  226. setTI(ttt,50);
  227. } else {
  228. document.getElementById(crid).style.marginTop=(sah-(sts+1)*(logh-4))+'px'; document.getElementById(crid).childNodes[0].style.zIndex=((sts % 2)?(13):(16));
  229. stack_init();
  230. }
  231. }
  232. function showaronk(srid,srtype,srstart,srsize) {
  233. srt='i/'+srtype
  234. tmp=document.createElement('div');
  235. tmp.style.position='absolute';
  236. tmp.style.width=extraleft[srtype]+srsize+extraright/2+'px';
  237. tmp.style.height=logh+'px';
  238. tmp.style.zIndex=15;
  239. tmp2=document.createElement('div');
  240. tmp2.style.position='absolute';
  241. tmp2.style.width=srsize+'px';
  242. tmp2.style.height=logh+'px';
  243. tmp2.style.marginLeft=extraleft[srtype]+'px';
  244. tmp2.style.backgroundImage='url('+srt+'2.png)';
  245. tmp2.style.backgroundPosition=srstart+'px 0';
  246. tmp.appendChild(tmp2);
  247. tmp2=document.createElement('img');
  248. tmp2.src=srt+'3.png';
  249. tmp2.style.marginLeft=extraleft[srtype]+srsize-extraright/2;
  250. tmp2.style.position='absolute';
  251. tmp.appendChild(tmp2);
  252. tmp2=document.createElement('img');
  253. tmp2.src=srt+'1.png';
  254. tmp2.style.position='absolute';
  255. tmp.appendChild(tmp2);
  256. $(srid).appendChild(tmp);
  257. }
  258. function gameover() {
  259. gameisover=1;
  260. gamesplayed++;
  261. setCookie('stack_gamesplayed',gamesplayed);
  262. document.getElementById('gamesplayed').innerHTML=gamesplayed;
  263. if(stscore>theirbest) {
  264. setCookie('stack_bestscore',stscore);
  265. document.getElementById('yourbest').innerHTML=stscore;
  266. theirbest=stscore;
  267. ialert('<h1>游戏结束: '+stscore+'分</h1>厉害,你又破纪录了','restartgame();');
  268. } else {
  269. ialert('<h1>游戏结束: '+stscore+'</h1>再来一次?','restartgame();');
  270. }
  271. //urchinTracker('/stack/gamesplayed/');
  272. return false;
  273. }
  274. function restartgame() {
  275. clearInterval(stinterval);
  276. gameisover=0;
  277. stwidth=new Array();
  278. stmargin=new Array();
  279. sttype=new Array();
  280. ststart=new Array();
  281. stscore=0;
  282. sts=0;
  283. stwidth[0]=260; //a ronk maga!
  284. ststart[0]=(stwidth[0]-270)*Math.random();
  285. stmargin[0]=(saw-stwidth[0])/2; //ronk margoja!
  286. sttype[0]=Math.floor(Math.random()*4)+1;
  287. paddingtarget=0,paddingnow=0;
  288. dnd=0;
  289. $('combo').innerHTML=0;
  290. $('level').innerHTML=1;
  291. $('score').innerHTML=stscore;
  292. $('score').style.color='#ffffff';
  293. $('st_outerarea').innerHTML='';
  294. init();
  295. }
  296. function pausegame() {
  297. clearTimeout(stinterval);
  298. }
  299. function resumegame() {
  300. if(gameisover == 0) {
  301. stinterval=setInterval('stack_dothemove()',50);
  302. }
  303. }
  304. //xinli001
  305. var tit="0";
  306. tit=stscore;
  307. var tite="";
  308. var DFW = {
  309. appId: "",
  310. TLImg: "http://game.ikongzhong.cn/games/duimutou/icon.png",
  311. url: "http://game.ikongzhong.cn/games/duimutou/",
  312. title: "堆木头,简单的不得了,好玩的停不下",
  313. desc: "玩法简单,但是玩的是技巧,反应,没有最高只有更高,来挑战下--关注空中传媒:mkongzhong"
  314. };
  315. var onBridgeReady = function(){
  316. WeixinJSBridge.on('menu:share:appmessage', function(argv){
  317. if(tit>500){tite=DFW.title + " 我的分数是"+tit+"分,求超越!";}else{tite=DFW.title;};
  318. WeixinJSBridge.invoke('sendAppMessage', {
  319. "appid": DFW.appId,
  320. "img_url": DFW.TLImg,
  321. "img_width": "120",
  322. "img_height": "120",
  323. "link": DFW.url ,
  324. "title": tite ,
  325. "desc": DFW.desc
  326. });
  327. });
  328. WeixinJSBridge.on('menu:share:timeline', function(argv){
  329. if(tit>500){tite=DFW.title + " 我的分数是"+tit+"分,求超越!";}else{tite=DFW.title;};
  330. WeixinJSBridge.invoke('shareTimeline', {
  331. "appid": DFW.appId,
  332. "img_url":DFW.TLImg,
  333. "img_width": "120",
  334. "img_height": "120",
  335. "link": DFW.url ,
  336. "title": tite ,
  337. "desc": DFW.desc
  338. });
  339. });
  340. };
  341. if(document.addEventListener){
  342. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  343. }else if(document.attachEvent){
  344. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  345. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  346. }
  347. //xinli
  348. /*
  349. updateShare(stscore);
  350. function updateShare(stscore) {
  351. imgUrl = 'http://game.ikongzhong.cn/games/duimutou/i/icon.png';
  352. lineLink = 'http://game.ikongzhong.cn/games/duimutou';
  353. descContent = "玩法简单,但是玩的是技巧,反应,没有最高只有更高,来挑战下!";
  354. updateShareScore(stscore);
  355. appid = '';
  356. }
  357. function updateShareScore(stscore) {
  358. if(stscore > 0) {
  359. shareTitle = "我在《堆木头》得了" + stscore + "分,智力眼力大考验,求超越!";
  360. }
  361. else{
  362. shareTitle = "智力眼力挑战游戏堆木头,你能堆多高?";
  363. }
  364. }*/
  365. //xinli001