munaiyiguilai.js 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581
  1. /**
  2. * 木乃伊归来
  3. * @author zhaofei8009
  4. */
  5. function main() {
  6. var cnm = {};
  7. cnm.isShowClue1 = true;//显示"点击加入主屏幕"标签
  8. cnm.isFirstInGame = true;
  9. cnm.init = function() {
  10. jsGame.canvas.screen.setWidth(cnm.width);
  11. jsGame.canvas.screen.setHeight(cnm.height);
  12. if (cnm.width < cnm.height) {
  13. cnm.clue = true;
  14. }
  15. if (cnm.height >= 300) {
  16. cnm.isShowClue1 = false;
  17. } else {
  18. if (cnm.isFirstInGame) {
  19. cnm.isFirstInGame = false;
  20. cnm.isShowClue1 = true;
  21. }
  22. }
  23. };
  24. cnm.initCanvas = function() {
  25. if (jsGame.canvas.screen.getTouch()) {
  26. window.scrollTo(0, -5);
  27. cnm.height = 600;
  28. cnm.width = 480;
  29. jsGame.canvas.screen.setHeight(cnm.height);
  30. cnm.top = 0;
  31. cnm.left = 0;
  32. } else {
  33. cnm.height = 600;
  34. cnm.width = 480;
  35. jsGame.canvas.screen.setHeight(cnm.height);
  36. jsGame.canvas.screen.setWidth(cnm.width);
  37. cnm.top = 0;
  38. cnm.left = (window.innerWidth-cnm.width)/2 -24;
  39. }
  40. cnm.init();
  41. cnm.canvas = document.getElementById('jsGameScreen');
  42. cnm.ctx = cnm.canvas.getContext('2d');
  43. };
  44. cnm.initCanvas();
  45. jsGame.initImage([
  46. { id: 'a', src: 'img/a.png' }, //进度条
  47. { id: 'h', src: 'img/h.png' },
  48. { id: 'chinese', src: 'img/chinese.png' },
  49. { id: 'english', src: 'img/english.png' },
  50. { id: 'img_cover', src: 'img/cover.png' }, //游戏封面
  51. { id: 'img_menu', src: 'img/menufront.png' }, //游戏封面
  52. { id: 'img_begin', src: 'img/start.png' }, //游戏封面
  53. { id: 'img_beginE', src: 'img/startE.png' },
  54. { id: 'img_back', src: 'img/more.png' }, //游戏封面
  55. { id: 'img_backE', src: 'img/moreE.png' },
  56. { id: 'img_quit', src: 'img/quit.png' }, //结束游戏
  57. { id: 'img_quitE', src: 'img/quitE.png' },
  58. { id: 'img_retry', src: 'img/retry.png' }, //重新游戏
  59. { id: 'img_retryE', src: 'img/retryE.png' },
  60. { id: 'img_check', src: 'img/check.png' }, //选择
  61. { id: 'img_stage', src: 'img/stage.png' }, //关口
  62. { id: 'img_stageE', src: 'img/stageE.png' },
  63. { id: 'img_stagenum', src: 'img/stagenum.png' }, //关口数
  64. { id: 'img_num', src: 'img/num.png' }, //数字
  65. { id: 'img_room', src: 'img/room.png' }, //背景图
  66. { id: 'img_door', src: 'img/door.png' }, //门
  67. { id: 'img_wallH', src: 'img/wallH.png' }, //水平墙
  68. { id: 'img_wallV', src: 'img/wallV.png' }, //垂直墙
  69. { id: 'img_character', src: 'img/character.png' }, //角色
  70. { id: 'img_dust', src: 'img/dust.png' }, //死亡烟尘
  71. { id: 'img_title', src: 'img/dijiguan.png' }, //标题
  72. { id: 'img_select', src: 'img/select.png' },
  73. { id: 'img_selectE', src: 'img/selectE.png' },
  74. { id: 'img_home', src: 'img/home.png' },
  75. { id: 'img_backgo', src: 'img/backgo.png' },
  76. { id: 'img_arrows', src: 'img/arrows.png' }
  77. ]).setRunFrequency(jsGame.canvas.screen.getTouch() ? 50 : 60);
  78. jsGame.initImageCallBack(function(loaded, count) { //加载图片的进度条
  79. if (loaded >= count) {
  80. jsGame.gameFlow.run();
  81. } else {
  82. try {
  83. var rate = loaded / count;
  84. rate = rate > 1 ? 1 : rate;
  85. cnm.ctx.fillStyle = '#FFFFFF';
  86. cnm.ctx.fillRect(0, 0, cnm.width, cnm.height);
  87. // 背景
  88. cnm.ctx.drawImage(jsGame.getImage('a'), 0, 0, 250, 81, (cnm.width - 250) / 2, (cnm.height - 81) / 2, 250, 81);
  89. // 进度条
  90. cnm.ctx.drawImage(jsGame.getImage('a'), 2, 86, 246 * rate, 10, (cnm.width - 246) / 2, (cnm.height - 81) / 2 + 51, 246 * rate, 10);
  91. } catch (err) {
  92. //console.log(err);
  93. }
  94. }
  95. });
  96. jsGame.pageLoad(function($) { //启动游戏页
  97. cnm.showClue = function() {
  98. window.scrollTo(0, -5);
  99. cnm.ctx.fillStyle = '#ffffff';
  100. cnm.ctx.fillRect(0, 0, window.innerWidth, window.innerHeight);
  101. $.canvas.drawImage('h', (window.innerWidth - 153) / 2 , (window.innerHeight) / 2 );
  102. };
  103. //定义变量
  104. Pos = function(){ //点对象
  105. this.x = 0;
  106. this.y = 0;
  107. };
  108. Obj = function(){ //物体对象
  109. this.idx=0;
  110. this.pos = new Pos();
  111. this.old = new Pos();
  112. };
  113. Rect = function(){ //矩形对象
  114. this.x=0;
  115. this.y=0;
  116. this.dx=0;
  117. this.dy=0;
  118. };
  119. var quit_idx = -1;
  120. var level = -1;
  121. var maxlevel = 0; //当前
  122. var level_tmp;
  123. var vPort; //Rect
  124. var orig_mutable; //Pos
  125. var player; //Obj
  126. var mummy; //Obj
  127. var door; //Obj
  128. var block=
  129. [0,0,0,0,0,0,0,0,
  130. 0,0,0,0,0,0,0,0,
  131. 0,0,0,0,0,0,0,0,
  132. 0,0,0,0,0,0,0,0,
  133. 0,0,0,0,0,0,0,0,
  134. 0,0,0,0,0,0,0,0,
  135. 0,0,0,0,0,0,0,0,
  136. 0,0,0,0,0,0,0,0];//new byte[64];
  137. var status = -1;
  138. var hold_it = false;
  139. var stage_clear = false;
  140. var game_over = false;
  141. var redraw = 0;
  142. var world_dir = -1;
  143. var undo = new Array([0,0],[0,0],[0,0]);//new byte[3][2];
  144. var undo_idx = -1;
  145. var moving_obj; //Obj;
  146. var moving_step = 0;
  147. var mummy_step = 0;
  148. var stagenumTimer = -1;
  149. var retryTimer = -1;
  150. var movingTimer = -1;
  151. var TopH = 128; //游戏画面(除背景外的高度)
  152. var TopW = 50;
  153. var playerX = 0;
  154. var playerY = 0;
  155. var BTN_CHS = {//中文选择
  156. x : ($.canvas.screen.getWidth() - 240)/2,
  157. y : 240,
  158. w : 240,
  159. h : 60,
  160. isPressed : false,
  161. draw : drawSlice
  162. };
  163. var BTN_ENG = {//英文选择
  164. x : ($.canvas.screen.getWidth() - 240)/2,
  165. y : 320,
  166. w : 240,
  167. h : 60,
  168. isPressed : false,
  169. draw : drawSlice
  170. };
  171. var BTN_START = {//游戏开始
  172. x : ($.canvas.screen.getWidth() - 240)/2,
  173. y : 380,
  174. w : 240,
  175. h : 60,
  176. isPressed : false,
  177. draw : drawSlice
  178. };
  179. var BTN_BACKT = {//返回社区
  180. x : ($.canvas.screen.getWidth() - 240)/2,
  181. y : 460,
  182. w : 240,
  183. h : 60,
  184. isPressed : false,
  185. draw : drawSlice
  186. };
  187. var BTN_HOME = {//游戏结束
  188. x : 420,
  189. y : 10,
  190. w : 55,
  191. h : 55,
  192. isPressed : false,
  193. draw : drawSlice
  194. };
  195. var BTN_PAUSE = {//游戏暂停
  196. x : 360,
  197. y : 10,
  198. w : 55,
  199. h : 55,
  200. isPressed : false,
  201. draw : drawSlice
  202. };
  203. var language = "";
  204. var init = function() {
  205. vPort = new Rect();
  206. orig_mutable = new Pos();
  207. player = new Obj();
  208. mummy = new Obj();
  209. door = new Obj();
  210. //游戏初始化
  211. _init();
  212. }; init();
  213. function _init() { //初始化游戏
  214. vPort.x = 0;
  215. vPort.y = 0;
  216. vPort.dx = $.canvas.screen.getWidth();
  217. vPort.dy = $.canvas.screen.getHeight();
  218. orig_mutable.x = 0;
  219. orig_mutable.y = 0;
  220. level = -1;
  221. maxlevel = 0;
  222. world_dir = -1;
  223. status = 1;
  224. language = "CHS";
  225. //$.localStorage.getItem('language3');
  226. status = 1;
  227. _procLevel(false);
  228. paint();
  229. }
  230. function _game_start(flag,flag1){ //是否显示关口号,是否从数据库中读取
  231. var byte1 = 0;
  232. _game_reset(flag1);
  233. status = 3;
  234. redraw = 7;
  235. if(flag) {
  236. status = 5;
  237. if(stagenumTimer<0) stagenumTimer = 1;
  238. } else {
  239. status = 0;
  240. }
  241. }
  242. //绘制语言选择界面
  243. function renderLanguage(){
  244. $.canvas.drawImage('img_menu',0,0,$.getImage('img_menu').width,$.getImage('img_menu').height
  245. ,0,0,$.canvas.screen.getWidth(),$.canvas.screen.getHeight());
  246. BTN_CHS.draw('chinese', 0, BTN_CHS.isPressed ? 1 : 0, BTN_CHS.w, BTN_CHS.h,BTN_CHS.x, BTN_CHS.y, BTN_CHS.w, BTN_CHS.h);
  247. BTN_ENG.draw('english', 0, BTN_ENG.isPressed ? 1 : 0, BTN_ENG.w, BTN_ENG.h,BTN_ENG.x, BTN_ENG.y, BTN_ENG.w, BTN_ENG.h);
  248. }
  249. function paint() { //绘制游戏画面
  250. if(status == 9){
  251. renderLanguage();
  252. }else if(status == 1) {
  253. $.canvas.drawImage('img_cover',0,0,$.getImage('img_cover').width,$.getImage('img_cover').height
  254. ,0,0,$.canvas.screen.getWidth(),$.canvas.screen.getHeight());
  255. var scale =$.canvas.screen.getWidth()/$.getImage('img_cover').width;
  256. if(language == "ENG"){
  257. BTN_START.draw('img_beginE', 0, BTN_START.isPressed ? 1 : 0, BTN_START.w, BTN_START.h,BTN_START.x, BTN_START.y, BTN_START.w, BTN_START.h);
  258. BTN_BACKT.draw('img_backE', 0, BTN_BACKT.isPressed ? 1 : 0, BTN_BACKT.w, BTN_BACKT.h,BTN_BACKT.x, BTN_BACKT.y, BTN_BACKT.w, BTN_BACKT.h);
  259. }else{
  260. BTN_START.draw('img_begin', 0, BTN_START.isPressed ? 1 : 0, BTN_START.w, BTN_START.h,BTN_START.x, BTN_START.y, BTN_START.w, BTN_START.h);
  261. BTN_BACKT.draw('img_back', 0, BTN_BACKT.isPressed ? 1 : 0, BTN_BACKT.w, BTN_BACKT.h,BTN_BACKT.x, BTN_BACKT.y, BTN_BACKT.w, BTN_BACKT.h);
  262. }
  263. }else if(status == 4) { //画面选关
  264. $.canvas.drawImage('img_menu',0,0,$.getImage('img_menu').width,$.getImage('img_menu').height
  265. ,0,0,$.canvas.screen.getWidth(),$.canvas.screen.getHeight());
  266. if(language == "ENG"){
  267. $.canvas.drawImage('img_selectE',40,200);
  268. }else{
  269. $.canvas.drawImage('img_select',40,200);
  270. }
  271. var top = 300;
  272. var left = 50;
  273. for(var i=0;i<5;i++){
  274. for(var j=0;j<10;j++){
  275. var numtip = i*10+j+1;
  276. var arry = $.commandFuns.getArray(numtip, false);
  277. for(var byte0 = 0; byte0 < arry.length;) {
  278. $.canvas.drawImage('img_stagenum',arry[byte0] * 16,0,16, 18, left, top, 16, 18);
  279. byte0++;
  280. left += 12;
  281. }
  282. if(maxlevel<(numtip-1))
  283. $.canvas.drawImage('img_check',(left-18), top);
  284. if(i>0) left += 14;
  285. else if(j<8) left += 28;
  286. else left += 14;
  287. }
  288. left = 50;
  289. top += 40;
  290. }
  291. BTN_HOME.draw('img_home', BTN_HOME.isPressed ? 1 : 0, 0, BTN_HOME.w, BTN_HOME.h,BTN_HOME.x, BTN_HOME.y, BTN_HOME.w, BTN_HOME.h);
  292. }else if(status == 5) { //启动关口声明
  293. _drawMap();
  294. var word0 = parseInt((vPort.dx - 60) / 2);
  295. var word2 = parseInt((vPort.dy - 65) / 2 -40);
  296. if(language == "ENG")
  297. $.canvas.drawImage('img_stageE',0,0,60, 65,word0, word2, 60, 65);
  298. else
  299. $.canvas.drawImage('img_stage',0,0,60, 65,word0, word2, 60, 65);
  300. var arry = $.commandFuns.getArray((level + 1), false);
  301. word0 += 26 - ((level + 1).toString().length >= 2 ? 16 : 8);
  302. word2 += 29;
  303. for(var byte0 = 0; byte0 < arry.length;) {
  304. $.canvas.drawImage('img_stagenum',arry[byte0] * 16,0,16, 18,word0, word2, 16, 18);
  305. byte0++;
  306. word0 += 16;
  307. }
  308. } else if(status == 7 || status == 2) { //是否继续/退出游戏
  309. var word1 = parseInt((vPort.dx - 120) / 2);
  310. var word3 = parseInt((vPort.dy - 83) / 2 - 40);
  311. var image = status != 7 ? 'img_retry' : 'img_quit';
  312. if(language == "ENG")
  313. image = status != 7 ? 'img_retryE' : 'img_quitE';
  314. if(quit_idx == -1) {
  315. $.canvas.drawImage(image.toString(), 0, 0, 120, 83, word1, word3, 120, 83);
  316. if(status != 7)
  317. quit_idx = 1;
  318. else
  319. quit_idx = 0;
  320. } else {
  321. if(quit_idx == 1)
  322. $.canvas.drawImage(image.toString(),0, 0, 120, 83, word1, word3, 120, 83);
  323. else
  324. $.canvas.drawImage(image.toString(),0, 0, 120, 83, word1, word3, 120, 83);
  325. }
  326. } else if(status == 0 || status == 3) {//游戏进行中
  327. if((redraw & 0x1) == 1)
  328. _drawMap(); //绘制地图
  329. if((redraw & 0x2) == 2){
  330. _drawCharacter(0,player);//绘制角色
  331. if(!(mummy_step >= 3 && game_over)) drawOther(mummy);//重绘
  332. }
  333. if((redraw & 0x4) == 4){
  334. _drawCharacter(1,mummy);//绘制木乃伊
  335. if(!(mummy_step >= 3 && game_over)) drawOther(player);//重绘
  336. }
  337. var s1 = level + 1;
  338. var i = 0;
  339. var word4 = 20;
  340. i += 120;
  341. $.canvas.drawImage('img_title',(i-42),word4);
  342. var arry = $.commandFuns.getArray(s1, false);
  343. for(var byte1 = 0; byte1 < arry.length;) {
  344. $.canvas.drawImage('img_num',arry[byte1] * 9,0,9,17,i,(word4+5),9,17);
  345. byte1++;
  346. i += 9;
  347. }
  348. if(isShowArrow){ //绘制行动箭头
  349. if(_isMove(0)) $.canvas.drawImage('img_arrows',0,0 ,45, 45,playerX ,(playerY+48), 45, 45); //下
  350. if(_isMove(1)) $.canvas.drawImage('img_arrows',0,45 ,45, 45,(playerX+48), playerY , 45, 45); //右
  351. if(_isMove(2)) $.canvas.drawImage('img_arrows',0,90 ,45, 45,(playerX-48), playerY, 45, 45); //左
  352. if(_isMove(3)) $.canvas.drawImage('img_arrows',0,135,45, 45,playerX , (playerY-48), 45, 45); //上
  353. }
  354. }
  355. if(status != 1 && status != 4 && status != 9){
  356. BTN_HOME.draw('img_home', BTN_HOME.isPressed ? 1 : 0, 0, BTN_HOME.w, BTN_HOME.h,BTN_HOME.x, BTN_HOME.y, BTN_HOME.w, BTN_HOME.h);
  357. BTN_PAUSE.draw('img_backgo', BTN_PAUSE.isPressed ? 1 : 0, 0, BTN_PAUSE.w, BTN_PAUSE.h,BTN_PAUSE.x, BTN_PAUSE.y, BTN_PAUSE.w, BTN_PAUSE.h);
  358. }
  359. }
  360. function _drawMap(){ //绘制游戏地图
  361. var rect = new Rect();
  362. $.canvas.drawImage('img_room',0,0);
  363. //绘制隔断
  364. for(var word1 = 0; word1 < 8; word1++) {
  365. for(var word0 = 0; word0 < 8; word0++) {
  366. var byte0 = block[word1 * 8 + word0];
  367. if((byte0 & 0x1) == 1)
  368. _drawBlockH(word0, word1);//绘制横隔断
  369. if((byte0 & 0x2) == 2)
  370. _drawBlockV(word0, word1);//绘制竖隔断
  371. }
  372. }
  373. //绘制门
  374. switch(door.idx) {
  375. default:
  376. break;
  377. case 0: //横着的门
  378. case 2:
  379. rect.x = (TopW + door.pos.x * 48);//(24 + door.pos.x * 16);
  380. rect.dx = 48;//16; //门的宽度
  381. if(door.idx == 0) {//向下
  382. rect.y = TopH - rect.dy -48;//((26 - rect.dy) + 1);
  383. rect.dy = 46;//15; //门的高度
  384. byte1 = 48;//16;
  385. } else { //向上
  386. rect.y = TopH + 380;//154;
  387. rect.dy = 24;//8; //门的高度
  388. byte1 = 96;//32;
  389. }
  390. break;
  391. case 1: //竖着的门
  392. case 3:
  393. rect.y = (TopH + door.pos.y * 48);
  394. rect.dx = 24;//8; //门的宽度
  395. rect.dy = 48;//16; //门的高度
  396. if(door.idx == 1) {
  397. rect.x = 430;//152;
  398. byte1 = 24;//8; //切块x距离
  399. } else {
  400. rect.x = (64 - rect.dx); //(24 - rect.dx);
  401. byte1 = 0;
  402. }
  403. break;
  404. }
  405. $.canvas.drawImage('img_door',byte1,0,rect.dx, rect.dy,rect.x, rect.y, rect.dx, rect.dy);
  406. }
  407. function _drawBlockH( word0, word1) { //绘制横隔断
  408. $.canvas.drawImage('img_wallH', ((48 + word0 * 48) - 1), ((TopH + word1 * 48) - 22 +8 +2) );
  409. }
  410. function _drawBlockV( word0, word1) { //绘制竖隔断
  411. $.canvas.drawImage('img_wallV', ((48 + word0 * 48) - 1), ((TopH + word1 * 48) - 12) );
  412. }
  413. function _drawCharacter(type,obj) { //绘制角色
  414. var byte0 = 0;
  415. var byte1 = 0;
  416. var flag = false;
  417. var flag1 = false;
  418. var byte2 = 1;
  419. var flag2 = false;
  420. //绘制碰撞打斗
  421. if(mummy_step >= 3 && game_over) {
  422. var word0 = (TopW + obj.pos.x * 48 + -4);//(24 + obj.pos.x * 16 + -4);
  423. var word2 = (((TopH + obj.pos.y * 48) - 5) -2);//(((26 + obj.pos.y * 16) - 5) + -2);
  424. var word7 = (moving_step * 76);
  425. if(moving_step == 5) {
  426. if(mummy_step == 5) {
  427. obj.idx = 2;
  428. byte2 = 2;
  429. } else {
  430. mummy_step++;
  431. moving_step = 0;
  432. }
  433. } else {//碰撞打斗
  434. $.canvas.drawImage('img_dust',word7,0,76, 60,word0, word2, 76, 60);
  435. return;
  436. }
  437. }
  438. if(byte2 > 0) {
  439. var word1 = (TopW + obj.pos.x * 48);
  440. var word3 = ((TopH + obj.pos.y * 48) - 5) - 2;
  441. var word8 = (obj.idx * 3 * 48);
  442. var word9 = obj != player ? (48 + (world_dir >= 2 ? 48 : 0)) : 0;
  443. if(byte2 == 1) {
  444. if(obj.old.x >= 0 && (redraw & 0x1) != 1) {
  445. _drawMap();
  446. }
  447. if(movingTimer>0) {
  448. if(obj.idx % 2 == 1)
  449. byte0 = 2 - obj.idx;
  450. else
  451. byte1 = obj.idx - 1;
  452. if(moving_step <= 4) {
  453. word8 += (moving_step % 2 != 1 ? 2 : 1) * 48;
  454. word1 += parseInt((byte0 * 48 * moving_step) / 4);
  455. word3 += parseInt((byte1 * 48 * moving_step) / 4);
  456. if( moving_obj == mummy && mummy_step == 1 && moving_step == 4) {
  457. obj.pos.x += byte0;
  458. obj.pos.y += byte1;
  459. flag2 = true;
  460. }
  461. } else {
  462. word1 += byte0 * 48;//byte0 * 16;
  463. word3 += byte1 * 48;//byte1 * 16;
  464. obj.pos.x += byte0;
  465. obj.pos.y += byte1;
  466. flag2 = true;
  467. }
  468. }
  469. }
  470. var isdrawed = false;
  471. if(obj.pos.y < 6 && byte1 > 0 && !flag2 && moving_step >= 4)
  472. {
  473. var word4 = ((obj.pos.y + 2) * 8 + obj.pos.x);
  474. if(word4 >= 0 && word4 < 64 && (block[word4] & 0x1) == 1){
  475. $.canvas.drawImage('img_character',word8,word9,48, 48,word1, word3, 48, 48);
  476. isdrawed = true;
  477. }
  478. }
  479. if(obj.pos.y < 7) {
  480. var word5 = ((obj.pos.y + 1) * 8 + obj.pos.x);
  481. var word6 = (word5 + byte0);
  482. if(word5 >= 0 && word5 < 64 && word6 >= 0 && word6 < 64 && ((block[word5] & 0x1) == 1 || byte0 != 0 && moving_step != 5 && (block[word6] & 0x1) == 1)){
  483. $.canvas.drawImage('img_character',word8,word9,48, 48,word1, word3, 48, 48);
  484. isdrawed = true;
  485. }
  486. }
  487. if(!isdrawed)
  488. $.canvas.drawImage('img_character',word8,word9,48, 48,word1, word3, 48, 48);
  489. obj.old.x = word1;
  490. obj.old.y = word3;
  491. if(type ==0){
  492. playerX = word1;
  493. playerY = word3;
  494. }
  495. }
  496. }
  497. function drawOther(obj){
  498. var word1 = (TopW + obj.pos.x * 48);
  499. var word3 = ((TopH + obj.pos.y * 48) - 5) -2;
  500. var word8 = (obj.idx * 3 * 48);
  501. var word9 = obj != player ? (48 + (world_dir >= 2 ? 48 : 0)) : 0;
  502. $.canvas.drawImage('img_character',word8,word9,48, 48,word1, word3, 48, 48);
  503. }
  504. function control(){ //玩家控制
  505. if(status == -1 || status == 3)
  506. return;
  507. if(status == 4)
  508. if($.keyPressed('a'))
  509. _game_start(true, true);
  510. if(status == 7 || status == 2) {
  511. if($.keyPressed('a')){
  512. if(status == 7) { //游戏现实出是否返回的位置
  513. if(quit_idx == 1){
  514. //结束游戏
  515. $.updateScore( { score: level });
  516. $.gameFlow.over();
  517. paint();
  518. } else {
  519. redraw = 7;
  520. status = 0;
  521. paint();
  522. }
  523. } else if(quit_idx == 0){ //游戏退出
  524. //$.updateScore( { score: level });
  525. $.gameFlow.over();
  526. //$.audio.pause('bgsound');
  527. //结束游戏
  528. } else { //游戏重新开始
  529. status = 3;
  530. _game_start(false, false);
  531. paint();
  532. }
  533. } else if($.keyPressed('left') || $.keyPressed('right')) {
  534. quit_idx ^= 0x1;
  535. paint();
  536. }
  537. } else {
  538. if($.keyPressed('b'))
  539. _game_start(true, false);
  540. else if($.keyPressed('c'))
  541. _game_undoGet();
  542. }
  543. if(status == 0){ //游戏进行中
  544. var istip = false;
  545. var flag = false;
  546. var byte0 = 2;
  547. if($.keyPressed('b')){
  548. quit_idx = -1;
  549. //status = 7;
  550. paint();
  551. }else if($.keyPressed('up')){
  552. byte0 = 0;
  553. flag = _game_move(0, -1, true);
  554. istip = true;
  555. }else if($.keyPressed('down')){
  556. byte0 = 2;
  557. flag = _game_move( 0, 1, true);
  558. istip = true;
  559. }else if($.keyPressed('left')){
  560. byte0 = 3;
  561. flag = _game_move( -1, 0, true);
  562. istip = true;
  563. }else if($.keyPressed('right')){
  564. byte0 = 1;
  565. flag = _game_move( 1, 0, true);
  566. istip = true;
  567. }
  568. if(istip){
  569. status = 3;
  570. _game_undoPut();
  571. if(!flag) {//不能移动
  572. if(player.idx != byte0) {
  573. player.idx = byte0;
  574. redraw = 2;
  575. paint();
  576. }
  577. hold_it = true;
  578. moving_step = 5;
  579. } else { //可以移动
  580. moving_step = 0;
  581. moving_obj = player; //玩家开始移动.
  582. player.idx = byte0;
  583. }
  584. redraw = 2;
  585. mummy_step = 0;
  586. moving_obj = player;
  587. if(movingTimer<0) movingTimer=1;
  588. }
  589. }
  590. }
  591. function _game_undoGet() {
  592. var flag = false;
  593. if(undo_idx < 0) return;
  594. player.idx = 2;
  595. mummy.idx = 2;
  596. player.pos.x = (undo[undo_idx][0] >>> 4 & 0xf);
  597. player.pos.y = (undo[undo_idx][0] & 0xf);
  598. if(player.pos.x == mummy.pos.x && player.pos.y == mummy.pos.y)
  599. flag = true;
  600. mummy.pos.x = (undo[undo_idx][1] >>> 4 & 0xf);
  601. mummy.pos.y = (undo[undo_idx][1] & 0xf);
  602. undo_idx--;
  603. if(flag)
  604. {
  605. redraw = 4;
  606. paint();
  607. redraw = 2;
  608. } else
  609. {
  610. redraw = 6;
  611. }
  612. paint();
  613. }
  614. function _game_reset(flag) {
  615. undo_idx = -1;
  616. quit_idx = -1;
  617. stage_clear = false;
  618. game_over = false;
  619. player.idx = 2;
  620. mummy.idx = 2;
  621. // if(flag) level = _procLevel(false); //当前关口
  622. _procLevel(false);
  623. if(level < 0) maxlevel = level = 0;
  624. else if(level > 49) maxlevel = level = 49;
  625. level_tmp = level;
  626. return _game_buildWorld();
  627. }
  628. function _game_show() {
  629. var flag = false;
  630. if(hold_it)
  631. {
  632. hold_it = false;
  633. } else
  634. {
  635. moving_step++;
  636. paint();
  637. }
  638. if(stage_clear && mummy_step == 0 && moving_step == 2)
  639. {
  640. movingTimer = -1;
  641. //document.title = window.shareData.tTitle = "我在经典游戏【木乃伊】中玩了" + (level+1)+ "关" + //window.shareData.Rankstr + ",据说全世界只有不到10个人通过,一起来挑战吧!";
  642. //if (confirm("你真牛逼,玩了" + (level+1) + "关" + window.shareData.Rankstr + //",要不要让小伙伴们看看你有多厉害呢?")) {
  643. //share();
  644. //}
  645. if(++level >= 50)
  646. level = 49;
  647. if(level > maxlevel)
  648. maxlevel = level;
  649. dp_submitScore(level);
  650. _procLevel(true);
  651. world_dir = -1;
  652. _game_start(true, false);
  653. return;
  654. }
  655. if(moving_step == 5 || moving_step == 4 && mummy_step == 1)
  656. {
  657. moving_step = 0;
  658. mummy_step++;
  659. var flag1= false;
  660. switch(mummy_step)
  661. {
  662. case 1:
  663. case 2:
  664. if(game_over || !_mummy_action())
  665. {
  666. flag1 = true;
  667. } else
  668. {
  669. moving_obj = mummy;
  670. redraw = 4;
  671. return;
  672. }
  673. break;
  674. default:
  675. flag1 = true;
  676. break;
  677. }
  678. if(mummy_step < 5 && flag1 && game_over)
  679. {
  680. mummy_step = 3;
  681. return;
  682. }
  683. if(flag1)
  684. {
  685. movingTimer = -1;
  686. moving_step = 0;
  687. mummy_step = 0;
  688. if(!game_over)
  689. {
  690. status = 0;
  691. } else
  692. {
  693. status = 3;
  694. if(retryTimer<0) retryTimer=1;
  695. }
  696. return;
  697. }
  698. }
  699. }
  700. function _mummy_action()
  701. {
  702. var flag = false;
  703. var byte6;
  704. if(world_dir != 2 && (byte6 = (player.pos.x - mummy.pos.x)) != 0)
  705. {
  706. var byte3 = 0;
  707. var byte0;
  708. if(byte6 > 0)
  709. {
  710. mummy.idx = 1;
  711. byte0 = 1;
  712. } else
  713. {
  714. mummy.idx = 3;
  715. byte0 = -1;
  716. }
  717. flag = _game_move(byte0, byte3, false);
  718. }
  719. if(!flag && (byte6 = (player.pos.y - mummy.pos.y)) != 0)
  720. {
  721. var byte1 = 0;
  722. var byte4;
  723. if(byte6 > 0)
  724. {
  725. mummy.idx = 2;
  726. byte4 = 1;
  727. } else
  728. {
  729. mummy.idx = 0;
  730. byte4 = -1;
  731. }
  732. flag = _game_move(byte1, byte4, false);
  733. }
  734. if(!flag && world_dir == 2 && (byte6 = (player.pos.x - mummy.pos.x)) != 0)
  735. {
  736. var byte5 = 0;
  737. var byte2;
  738. if(byte6 > 0)
  739. {
  740. mummy.idx = 1;
  741. byte2 = 1;
  742. } else
  743. {
  744. mummy.idx = 3;
  745. byte2 = -1;
  746. }
  747. flag = _game_move(byte2, byte5, false);
  748. }
  749. return flag;
  750. }
  751. function _game_move(byte0,byte1,flag) {
  752. var word2 = 0;
  753. var byte2 = 0;
  754. var obj;
  755. var obj1;
  756. if(flag) {
  757. obj = player;
  758. obj1 = mummy;
  759. if(obj.pos.x + byte0 == door.pos.x && obj.pos.y + byte1 == door.pos.y)
  760. {
  761. stage_clear = true;
  762. return true;
  763. }
  764. } else
  765. {
  766. obj = mummy;
  767. obj1 = player;
  768. }
  769. var word0 = (obj.pos.x + byte0);
  770. if(word0 < 0 || word0 >= 8)
  771. return false;
  772. word0 = (obj.pos.y + byte1);
  773. if(word0 < 0 || word0 >= 8)
  774. return false;
  775. word0 = (obj.pos.y * 8 + obj.pos.x);
  776. if(byte0 != 0)
  777. {
  778. byte2 = 2;
  779. word2 = ((byte0 + 1) / 2);
  780. } else
  781. {
  782. byte2 = 1;
  783. word2 = (((byte1 + 1) / 2) * 8);
  784. }
  785. if((block[word0 + word2] & byte2) == byte2)
  786. return false;
  787. word0 += byte1 * 8 + byte0;
  788. var word1 = (obj1.pos.y * 8 + obj1.pos.x);
  789. if(word0 == word1)
  790. {
  791. if(flag)
  792. return false;
  793. game_over = true;
  794. }
  795. return true;
  796. }
  797. function _game_undoPut() {
  798. if(undo_idx < 2) {
  799. undo_idx++;
  800. } else {
  801. for(var byte0 = 0; byte0 < undo_idx; byte0++) {
  802. undo[byte0][0] = undo[byte0 + 1][0];
  803. undo[byte0][1] = undo[byte0 + 1][1];
  804. }
  805. }
  806. undo[undo_idx][0] = (player.pos.x << 4 | player.pos.y);
  807. undo[undo_idx][1] = (mummy.pos.x << 4 | mummy.pos.y);
  808. }
  809. function _game_buildWorld() {
  810. var abyte0;
  811. if(level == 0){
  812. abyte0 = [50,48,50,53,50,55,88,88];
  813. block = [48,48,50,48,48,48,50,48,48,49,48,50,48,49,48,50,48,50,49,48,49,50,50,48,48,48,48,48,49,50,49,51,48,48,49,48,48,50,48,48,48,50,48,51,51,48,50,48,48,48,51,48,49,49,49,48,48,48,48,48,48,48,48,48];
  814. }else if(level == 1){
  815. abyte0 = [48,48,53,49,50,50,88,88];
  816. block = [48,48,50,48,48,48,50,48,48,49,50,50,50,48,50,48,48,48,48,49,48,50,48,49,48,48,48,49,51,49,48,48,48,49,50,49,50,51,49,48,49,49,48,51,50,48,49,48,48,50,48,48,49,49,48,48,49,48,48,50,48,48,48,48];
  817. }else if(level == 2){
  818. abyte0 = [48,52,50,52,48,51,88,88];
  819. block = [48,48,48,48,48,50,48,48,48,50,48,48,49,50,50,50,48,48,50,50,50,48,50,49,48,51,48,50,50,49,48,50,48,50,49,50,51,50,48,48,48,48,48,50,50,49,51,48,48,48,50,50,48,48,49,48,48,50,49,48,48,50,48,48];
  820. }else if(level == 3){
  821. abyte0 = [50,48,55,51,51,54,88,88];
  822. block = [48,48,48,48,48,50,48,48,48,51,48,48,51,48,48,48,48,48,48,48,48,48,48,50,49,48,48,48,48,48,48,49,48,48,49,48,48,48,48,48,49,48,50,48,48,48,50,48,48,48,48,50,50,49,51,48,48,49,49,48,50,49,48,48];
  823. }else if(level == 4){
  824. abyte0 = [51,49,52,52,49,51,88,88];
  825. block = [48,50,48,48,48,48,50,48,48,48,50,48,48,48,48,48,48,50,49,48,50,49,50,48,48,50,49,48,48,49,48,48,49,48,48,50,50,50,48,49,48,49,48,50,48,49,48,48,48,51,48,50,48,49,50,48,48,50,48,48,49,49,48,50];
  826. }else if(level == 5){
  827. abyte0 = [50,55,53,53,50,55,88,88];
  828. block = [48,50,48,48,48,48,50,48,48,51,49,48,48,48,49,48,48,48,48,48,51,48,48,51,49,49,50,48,48,48,51,48,48,50,48,48,48,50,49,50,48,50,48,50,48,51,48,48,48,48,48,51,48,48,48,48,48,48,49,48,48,48,48,49];
  829. }else if(level == 6){
  830. abyte0 = [50,51,49,52,49,54,88,88];
  831. block = [48,48,48,48,48,48,48,48,48,50,48,48,49,50,51,50,49,48,48,48,48,50,50,49,48,48,48,48,48,48,50,48,48,48,50,48,48,48,50,48,48,49,49,50,48,48,48,48,48,50,48,48,50,48,48,50,48,50,48,48,48,49,50,50];
  832. }else if(level == 7){
  833. abyte0 = [50,49,48,53,52,55,88,88];
  834. block = [48,48,48,48,48,48,48,50,48,48,49,48,48,48,48,48,48,48,48,49,50,48,48,48,48,48,49,51,48,49,48,48,48,48,48,49,51,48,48,48,48,49,50,51,49,48,50,48,48,48,48,48,50,48,50,48,48,48,48,49,48,50,49,50];
  835. }else if(level == 8){
  836. abyte0 = [51,49,52,49,49,50,88,88];
  837. block = [48,48,48,48,48,50,48,48,48,48,48,48,51,48,50,48,48,48,50,48,49,50,50,48,49,48,51,51,50,50,51,48,49,48,48,48,48,48,50,48,49,50,48,49,49,49,49,48,48,48,48,50,50,48,49,48,48,48,49,48,48,50,48,49];
  838. }else if(level == 9){
  839. abyte0 = [51,55,54,52,48,52,88,88];
  840. block = [48,48,48,50,48,48,48,48,48,49,50,50,49,51,51,48,48,49,48,51,49,48,50,48,48,48,50,50,48,49,48,49,49,48,48,50,49,50,48,48,48,48,50,50,48,49,49,50,49,48,48,48,48,49,48,50,48,48,48,48,50,48,48,48];
  841. }else if(level == 10){
  842. abyte0 = [51,54,50,50,51,53,88,88];
  843. block = [48,48,48,48,48,48,48,50,48,49,50,50,48,50,50,48,49,51,48,48,48,49,48,50,48,48,51,49,49,51,48,48,49,48,48,48,48,48,49,48,48,48,49,50,48,49,49,50,48,48,49,48,48,51,48,48,48,49,48,50,48,48,48,48];
  844. }else if(level == 11){
  845. abyte0 = [50,51,48,53,55,53,88,88];
  846. block = [48,48,48,48,50,48,48,50,48,50,48,48,51,50,48,48,48,50,49,48,48,49,48,50,48,49,50,50,51,50,51,48,48,48,49,48,48,51,50,48,48,50,49,49,50,50,48,48,48,49,48,48,48,48,48,51,49,48,49,48,48,48,49,48];
  847. }else if(level == 12){
  848. abyte0 = [51,48,51,55,48,49,88,88];
  849. block = [48,48,50,48,50,48,48,48,48,49,50,48,48,49,50,48,48,49,48,51,49,48,49,48,48,48,48,49,49,49,49,49,48,50,49,48,49,48,48,48,49,49,51,50,49,48,50,49,48,50,48,49,48,48,51,48,49,48,51,49,48,50,49,48];
  850. }else if(level == 13){
  851. abyte0 = [50,55,50,48,53,50,88,88];
  852. block = [48,50,48,48,50,48,48,48,48,48,49,48,49,48,48,51,48,50,51,48,48,49,48,48,48,50,48,51,48,48,48,51,48,49,50,48,48,49,48,48,48,48,48,48,48,50,48,50,48,48,51,48,48,49,48,48,48,48,49,48,48,48,48,49];
  853. }else if(level == 14){
  854. abyte0 = [51,52,52,52,53,50,88,88];
  855. block = [48,48,48,48,50,48,48,48,49,48,48,48,48,48,48,48,48,50,49,50,48,48,51,48,48,48,48,48,50,48,48,48,49,50,48,51,48,48,49,49,48,48,50,49,50,49,48,49,49,49,49,48,50,50,48,48,49,48,51,48,48,48,49,48];
  856. }else if(level == 15){
  857. abyte0 = [50,53,51,48,51,55,88,88];
  858. block = [48,48,50,48,48,48,48,50,48,48,49,50,48,48,49,50,48,51,48,48,48,48,48,48,48,51,48,50,48,50,48,50,48,48,49,48,50,49,49,51,49,48,51,51,50,48,48,48,48,48,48,48,48,50,51,48,48,48,49,48,48,48,48,48];
  859. }else if(level == 16){
  860. abyte0 = [50,53,48,48,53,55,88,88];
  861. block = [48,50,48,48,48,50,50,48,48,49,48,48,49,48,49,48,48,48,49,50,49,48,48,49,48,48,48,48,48,49,48,48,49,48,51,51,50,50,49,48,48,51,48,48,50,50,49,50,48,48,48,50,48,50,48,50,48,49,48,48,48,48,49,50];
  862. }else if(level == 17){
  863. abyte0 = [48,48,52,48,48,49,88,88];
  864. block = [48,48,48,48,48,48,48,50,48,51,50,49,48,48,48,48,49,50,51,50,50,48,48,48,48,50,48,51,49,49,48,48,48,48,48,48,51,51,49,48,48,50,49,49,48,49,51,48,49,48,50,48,48,48,49,50,48,50,49,49,48,49,48,48];
  865. }else if(level == 18){
  866. abyte0 = [48,49,55,55,53,49,88,88];
  867. block = [48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,49,49,50,48,50,49,48,48,48,51,49,51,49,48,48,48,50,48,49,48,48,49,48,48,48,48,48,50,48,48,48,48,48,48,49,48,49,49,51,48,49,49,48,48,48,50,48];
  868. }else if(level == 19){
  869. abyte0 = [49,51,50,49,50,53,88,88];
  870. block = [48,48,50,48,48,48,48,48,48,48,48,50,49,48,48,48,48,49,48,48,51,48,49,51,49,50,48,48,48,50,51,48,48,49,48,48,48,49,48,48,48,48,51,49,48,49,48,49,48,50,48,48,48,50,49,48,49,48,49,48,49,48,49,49];
  871. }else if(level == 20){
  872. abyte0 = [50,53,51,49,51,53,88,88];
  873. block = [48,48,50,48,48,48,48,50,48,48,49,50,48,48,48,50,48,48,49,50,48,48,49,50,48,51,48,50,48,50,48,50,48,48,49,48,50,49,49,51,49,48,51,51,50,48,48,48,48,48,48,48,48,50,51,48,48,48,49,48,48,48,48,48];
  874. }else if(level == 21){
  875. abyte0 = [51,50,48,54,51,50,88,88];
  876. block = [48,50,48,50,48,50,50,48,48,49,48,50,48,48,48,51,48,49,49,48,48,48,48,48,49,49,48,50,50,49,49,48,48,48,50,49,48,48,51,48,49,50,49,48,51,48,50,48,48,49,50,49,48,48,51,48,48,50,48,49,49,50,48,48];
  877. }else if(level == 22){
  878. abyte0 = [48,55,51,53,55,48,88,88];
  879. block = [48,48,48,48,48,50,48,48,48,50,49,48,50,50,49,48,48,49,50,48,50,48,48,48,48,48,48,48,50,48,50,48,48,48,51,49,48,48,48,49,48,48,48,51,48,48,48,48,49,48,50,51,48,49,49,49,48,48,50,48,49,49,49,48];
  880. }else if(level == 23){
  881. abyte0 = [51,49,48,53,48,48,88,88];
  882. block = [48,48,48,48,48,48,48,50,49,50,49,51,48,50,49,48,48,48,48,48,50,48,50,49,49,49,51,50,48,50,48,50,48,50,48,48,48,49,48,50,48,48,50,48,48,48,48,48,48,49,48,48,49,49,49,48,48,48,48,49,48,48,50,48];
  883. }else if(level == 24){
  884. abyte0 = [51,50,48,51,49,50,88,88];
  885. block = [48,48,48,50,48,48,48,48,48,50,49,50,48,50,50,48,49,48,50,48,49,49,48,49,49,49,48,50,48,48,49,48,48,49,48,48,48,51,50,48,48,48,48,49,49,50,48,48,48,49,48,48,50,48,49,48,48,48,50,49,48,50,50,49];
  886. }else if(level == 25){
  887. abyte0 = [50,49,51,49,53,54,88,88];
  888. block = [48,48,48,50,50,48,48,48,48,50,49,50,48,49,48,50,49,48,48,49,50,49,48,48,48,49,49,49,50,49,49,50,48,48,50,48,48,50,49,50,48,48,51,49,48,50,50,49,48,49,49,48,49,51,50,48,48,51,49,48,48,48,49,48];
  889. }else if(level == 26){
  890. abyte0 = [48,50,48,51,53,50,88,88];
  891. block = [48,48,48,50,48,48,50,48,48,50,48,48,48,48,48,48,48,48,48,50,50,48,51,50,48,48,48,49,49,48,48,48,49,48,49,50,50,48,48,48,48,48,48,48,50,49,48,48,48,48,48,48,50,49,49,48,49,49,48,48,48,49,48,48];
  892. }else if(level == 27){
  893. abyte0 = [49,55,48,55,55,54,88,88];
  894. block = [48,48,48,48,48,48,48,48,48,50,48,50,48,50,48,48,49,48,48,50,48,49,49,48,48,48,48,50,49,48,50,50,48,49,48,48,49,48,48,48,49,48,48,50,48,48,48,50,48,48,50,51,49,48,48,48,48,48,48,50,48,48,49,48];
  895. }else if(level == 28){
  896. abyte0 = [51,55,53,51,50,54,88,88];
  897. block = [48,48,48,48,48,48,48,48,49,50,50,50,48,48,48,48,48,48,50,48,49,50,48,50,48,48,48,50,48,48,51,48,48,49,48,48,48,49,51,48,48,48,50,49,50,51,48,49,48,50,50,51,49,48,50,48,49,48,50,49,48,50,48,50];
  898. }else if(level == 29){
  899. abyte0 = [50,54,50,48,53,54,88,88];
  900. block = [48,48,48,48,48,48,50,48,48,50,50,49,48,50,50,50,48,48,48,48,50,48,48,50,48,48,50,48,50,48,48,50,48,49,49,50,50,50,48,48,49,48,48,48,48,49,48,49,48,48,51,49,48,48,48,48,48,50,48,50,48,51,48,48];
  901. }else if(level == 30){
  902. abyte0 = [49,53,49,48,52,55,88,88];
  903. block = [48,48,48,48,48,50,48,48,48,50,50,50,48,48,50,49,48,50,50,49,48,48,49,49,48,50,48,49,48,48,49,51,48,48,48,50,48,48,49,48,48,48,49,48,50,48,48,51,48,48,50,48,48,50,48,48,48,49,50,50,51,48,49,48];
  904. }else if(level == 31){
  905. abyte0 = [50,49,51,49,51,53,88,88];
  906. block = [48,48,48,48,50,48,48,48,48,49,48,51,48,48,49,48,48,48,48,48,49,49,50,49,49,50,49,49,48,48,49,48,48,50,48,49,48,49,48,48,48,50,49,49,51,48,50,50,48,48,50,48,51,49,48,50,48,49,49,48,48,49,51,48];
  907. }else if(level == 32){
  908. abyte0 = [50,49,49,50,48,52,88,88];
  909. block = [48,48,50,48,48,50,48,48,49,50,48,48,48,49,48,50,48,50,48,50,51,48,48,50,48,49,48,48,48,48,49,48,49,50,50,49,49,48,49,48,48,49,48,48,51,48,50,50,48,50,49,48,50,50,48,51,48,48,49,50,48,48,48,48];
  910. }else if(level == 33){
  911. abyte0 = [51,54,51,55,48,54,88,88];
  912. block = [48,48,48,48,48,48,48,50,48,48,50,48,48,51,49,48,48,48,48,48,48,50,48,48,48,48,48,48,48,48,48,48,48,48,50,50,48,49,48,48,48,49,48,48,48,48,49,50,48,48,50,50,49,48,49,48,49,48,49,48,48,48,49,50];
  913. }else if(level == 34){
  914. abyte0 = [49,48,50,50,54,48,88,88];
  915. block = [48,48,48,48,50,48,48,48,48,48,48,49,49,48,48,50,48,48,50,50,48,50,48,49,49,48,50,48,48,48,50,50,48,51,48,50,48,48,51,48,48,50,48,49,48,48,48,48,48,48,51,50,48,49,49,48,48,48,48,49,48,48,48,50];
  916. }else if(level == 35){
  917. abyte0 = [48,48,50,53,53,49,88,88];
  918. block = [48,50,48,48,48,50,48,48,48,48,48,49,48,48,48,48,48,48,50,48,50,48,51,48,48,48,49,49,48,48,48,49,49,50,48,51,48,49,50,49,48,48,48,48,51,48,49,48,49,48,48,48,48,50,49,50,48,49,50,48,51,49,48,48];
  919. }else if(level == 36){
  920. abyte0 = [50,54,50,48,53,54,88,88];
  921. block = [48,48,48,48,48,48,50,48,48,50,50,49,48,50,50,50,48,48,48,48,50,48,48,50,48,48,50,48,50,48,48,50,48,49,49,50,50,50,48,48,49,48,48,48,48,49,48,49,48,48,51,49,48,48,48,48,48,50,48,50,48,51,48,48];
  922. }else if(level == 37){
  923. abyte0 = [48,49,55,49,48,51,88,88];
  924. block = [48,48,48,50,48,48,48,48,48,48,48,48,50,48,48,48,49,50,48,50,48,49,48,49,48,48,49,49,48,51,48,48,48,48,50,51,49,50,48,48,48,48,51,50,49,50,49,49,48,48,48,48,48,49,48,48,48,48,49,48,50,49,51,48];
  925. }else if(level == 38){
  926. abyte0 = [49,52,51,55,54,55,88,88];
  927. block = [48,48,50,48,50,50,48,48,48,49,49,48,48,48,48,48,49,48,50,48,49,50,48,51,48,51,48,50,49,50,50,48,48,50,48,50,48,50,50,48,48,48,50,50,49,50,48,48,48,50,50,49,51,48,49,48,48,49,50,50,48,49,50,49];
  928. }else if(level == 39){
  929. abyte0 = [49,49,54,52,50,48,88,88];
  930. block = [48,50,48,48,50,48,48,48,48,51,48,48,48,48,51,49,48,48,49,48,48,48,48,48,48,49,50,49,49,48,48,49,48,49,48,49,49,49,49,50,48,48,48,51,48,48,49,50,49,48,51,48,48,49,48,49,49,48,49,48,51,48,48,50];
  931. }else if(level == 40){
  932. abyte0 = [50,53,51,53,48,53,88,88];
  933. block = [48,48,48,50,48,50,48,50,48,49,50,48,50,50,49,48,48,48,51,48,50,48,48,49,48,49,50,49,48,48,48,51,48,49,50,48,48,50,50,48,49,50,48,50,50,49,48,50,48,48,49,48,48,49,51,50,48,48,50,50,48,48,48,48];
  934. }else if(level == 41){
  935. abyte0 = [48,49,55,54,49,51,88,88];
  936. block = [48,50,50,48,48,48,48,48,48,48,48,48,48,50,49,49,48,48,49,48,51,50,48,48,48,49,51,50,48,51,49,48,48,48,48,48,49,48,49,51,49,49,48,50,48,50,50,48,48,49,49,48,51,48,49,49,48,50,51,48,48,48,48,50];
  937. }else if(level == 42){
  938. abyte0 = [49,51,51,51,54,52,88,88];
  939. block = [48,48,48,48,48,50,48,48,48,51,48,50,51,48,50,48,48,51,48,48,49,48,50,49,48,48,49,48,48,50,49,50,48,48,49,48,48,48,48,49,49,49,48,48,49,49,49,48,48,48,50,48,50,48,48,50,48,48,48,49,48,49,50,49];
  940. }else if(level == 43){
  941. abyte0 = [49,53,51,48,48,53,88,88];
  942. block = [48,48,48,48,48,48,48,48,49,50,50,49,48,48,49,48,48,49,49,48,48,48,48,51,48,48,48,48,48,50,50,48,48,48,48,48,50,49,51,48,48,48,48,48,50,48,50,48,48,49,49,48,50,50,48,48,49,48,48,49,48,50,49,48];
  943. }else if(level == 44){
  944. abyte0 = [48,52,50,51,52,50,88,88];
  945. block = [48,48,48,48,48,48,48,50,48,49,50,50,48,48,50,48,49,50,48,48,50,49,48,50,48,48,50,48,48,50,48,48,48,49,48,48,50,48,48,50,49,48,48,50,51,48,48,48,48,48,48,51,50,48,48,49,48,48,48,48,48,48,48,49];
  946. }else if(level == 45){
  947. abyte0 = [49,54,55,48,55,53,88,88];
  948. block = [48,48,48,48,48,48,50,48,48,50,50,49,50,48,49,48,48,48,49,50,48,51,48,48,49,50,48,49,50,48,51,48,48,48,48,48,48,48,50,51,49,50,50,48,51,48,51,48,48,50,51,48,48,49,48,48,48,48,50,48,50,50,49,48];
  949. }else if(level == 46){
  950. abyte0 = [51,51,52,53,53,50,88,88];
  951. block = [48,48,50,48,48,50,48,48,48,48,50,49,50,48,48,50,48,48,49,48,48,50,50,48,48,48,48,48,49,50,51,48,48,48,51,48,48,48,49,49,48,49,50,48,48,49,50,48,48,49,48,50,50,51,49,48,48,48,50,48,48,48,48,49];
  952. }else if(level == 47){
  953. abyte0 = [48,55,48,51,50,50,88,88];
  954. block = [48,48,48,48,48,48,48,48,48,50,49,48,48,48,50,49,48,48,50,49,49,48,48,48,48,49,48,48,48,48,48,50,48,49,48,48,51,48,49,48,48,48,48,50,50,50,50,48,48,50,48,48,48,48,50,50,49,48,50,48,48,48,48,48];
  955. }else if(level == 48){
  956. abyte0 = [52,55,49,54,52,55,88,88];
  957. block = [48,48,48,48,48,50,48,48,48,50,48,49,48,48,48,50,48,48,48,48,48,48,51,48,48,50,49,49,49,48,48,50,48,49,50,48,48,48,49,49,49,50,49,49,48,50,48,50,48,48,48,48,48,48,50,48,48,49,48,48,48,49,48,48];
  958. }else if(level == 49){
  959. abyte0 = [49,48,53,50,52,51,88,88];
  960. block = [48,48,50,48,48,48,48,48,48,48,48,48,49,48,48,51,49,48,50,49,50,50,50,50,48,49,51,51,50,48,51,48,48,48,48,48,50,48,50,48,49,48,48,48,51,50,48,50,48,50,48,50,48,48,48,48,48,48,49,48,49,48,48,48];
  961. }
  962. for(var word0 = 0; word0 < 64; word0++)
  963. block[word0] -= 48;
  964. for(var word1 = 0; word1 < abyte0.length; word1++)
  965. abyte0[word1] -= 48;
  966. if(world_dir < 0)
  967. world_dir = $.commandFuns.getRandom(3);
  968. switch(world_dir) {
  969. default:
  970. break;
  971. case 0:
  972. case 1:
  973. for(var word2 = 0; word2 < 4; word2++) {
  974. var word10 = (word2 * 8);
  975. var word14 = (64 - (word10 + 8));
  976. for(var word6 = 0; word6 < 8; word6++) {
  977. block[word10 + word6] ^= block[word14 + word6];
  978. block[word14 + word6] ^= block[word10 + word6];
  979. block[word10 + word6] ^= block[word14 + word6];
  980. }
  981. }
  982. for(var word3 = 6; word3 >= 0; word3--) {
  983. var word11 = (word3 * 8);
  984. var word15 = (word11 + 8);
  985. for(var word7 = 0; word7 < 8; word7++)
  986. if((block[word11 + word7] & 0x1) == 1) {
  987. block[word11 + word7] ^= 0x1;
  988. block[word15 + word7] |= 0x1;
  989. }
  990. }
  991. if((abyte0[0] & 0x1) == 0)
  992. abyte0[0] = (2 - abyte0[0]);
  993. else
  994. abyte0[1] = (8 - abyte0[1] - 1);
  995. abyte0[3] = (8 - abyte0[3] - 1);
  996. abyte0[5] = (8 - abyte0[5] - 1);
  997. break;
  998. case 2:
  999. var abyte1 = [0,0,0,0,0,0,0,0,
  1000. 0,0,0,0,0,0,0,0,
  1001. 0,0,0,0,0,0,0,0,
  1002. 0,0,0,0,0,0,0,0,
  1003. 0,0,0,0,0,0,0,0,
  1004. 0,0,0,0,0,0,0,0,
  1005. 0,0,0,0,0,0,0,0,
  1006. 0,0,0,0,0,0,0,0];
  1007. abyte1 = $.clone(block);
  1008. for(var word4 = 0; word4 < 8; word4++) {
  1009. var word12 = (word4 * 8);
  1010. var word16 = (8 - word4 - 1);
  1011. for(var word8 = 0; word8 < 8; word8++)
  1012. block[word8 * 8 + word16] = abyte1[word12 + word8];
  1013. }
  1014. for(var word5 = 0; word5 < 8; word5++)
  1015. {
  1016. var word13 = (word5 * 8);
  1017. for(var word9 = 7; word9 >= 0; word9--) {
  1018. if((block[word13 + word9] & 0x1) == 1)
  1019. {
  1020. block[word13 + word9] ^= 0x1;
  1021. block[word13 + word9 + 1] |= 0x2;
  1022. }
  1023. if((block[word13 + word9] & 0x2) == 2)
  1024. {
  1025. block[word13 + word9] ^= 0x2;
  1026. block[word13 + word9] |= 0x1;
  1027. }
  1028. }
  1029. }
  1030. abyte1 = null;
  1031. if((abyte0[0] & 0x1) == 0)
  1032. {
  1033. abyte0[0]++;
  1034. } else
  1035. {
  1036. abyte0[0] = ((abyte0[0] + 1) % 4);
  1037. abyte0[1] = (8 - abyte0[1] - 1);
  1038. }
  1039. abyte0[2] ^= abyte0[3];
  1040. abyte0[3] ^= abyte0[2];
  1041. abyte0[2] ^= abyte0[3];
  1042. abyte0[2] = (8 - abyte0[2] - 1);
  1043. abyte0[4] ^= abyte0[5];
  1044. abyte0[5] ^= abyte0[4];
  1045. abyte0[4] ^= abyte0[5];
  1046. abyte0[4] = (8 - abyte0[4] - 1);
  1047. break;
  1048. }
  1049. door.idx = abyte0[0];
  1050. switch(door.idx)
  1051. {
  1052. case 0:
  1053. door.pos.x = abyte0[1];
  1054. door.pos.y = -1;
  1055. break;
  1056. case 1:
  1057. door.pos.x = 8;
  1058. door.pos.y = abyte0[1];
  1059. break;
  1060. case 2:
  1061. door.pos.x = abyte0[1];
  1062. door.pos.y = 8;
  1063. break;
  1064. case 3:
  1065. door.pos.x = -1;
  1066. door.pos.y = abyte0[1];
  1067. break;
  1068. }
  1069. player.pos.x = abyte0[2];
  1070. player.pos.y = abyte0[3];
  1071. mummy.pos.x = abyte0[4];
  1072. mummy.pos.y = abyte0[5];
  1073. return true;
  1074. }
  1075. function _procLevel(flag) {
  1076. //从数据库中读取关口号
  1077. if(flag) {
  1078. $.localStorage.setItem('maxlevel',maxlevel);
  1079. }else{
  1080. maxlevel = $.localStorage.getItem('maxlevel');
  1081. }
  1082. }
  1083. //-------------------------------------------------
  1084. var mousePos = { x: 0, y: 0 };
  1085. var isShowArrow = false;
  1086. $.events.touchStart(function(e) {
  1087. var PosX = e.touches[0].clientX;
  1088. var PosY = e.touches[0].clientY;
  1089. mousePos = {x:PosX,y:PosY};
  1090. Press(mousePos);
  1091. }).touchMove(function(e) {
  1092. var PosX = e.touches[0].clientX;
  1093. var PosY = e.touches[0].clientY;
  1094. mousePos = {x:PosX,y:PosY};
  1095. Move(mousePos);
  1096. }).touchEnd(function(e) {
  1097. Release(mousePos);
  1098. }).mouseMove(function(e) {
  1099. var PosX = e.clientX - cnm.left;
  1100. var PosY = e.clientY - cnm.top;
  1101. mousePos = {x:PosX,y:PosY};
  1102. Move(mousePos);
  1103. }).mouseDown(function(e) {
  1104. var PosX = e.clientX - cnm.left;
  1105. var PosY = e.clientY - cnm.top;
  1106. mousePos = {x:PosX,y:PosY};
  1107. Press(mousePos);
  1108. }).mouseUp(function(e) {
  1109. var PosX = e.clientX - cnm.left;
  1110. var PosY = e.clientY - cnm.top;
  1111. mousePos = {x:PosX,y:PosY};
  1112. Release(mousePos);
  1113. });
  1114. function Press(mousePos){
  1115. if(status == 9){
  1116. if(checkBtnArea(BTN_CHS, mousePos.x, mousePos.y)){
  1117. BTN_CHS.isPressed = true;
  1118. }else if(checkBtnArea(BTN_ENG, mousePos.x, mousePos.y)){
  1119. BTN_ENG.isPressed = true;
  1120. }
  1121. }else if(status == 1) { //游戏主菜单
  1122. if(checkBtnArea(BTN_START, mousePos.x, mousePos.y)){
  1123. BTN_START.isPressed = true;
  1124. }else if(checkBtnArea(BTN_BACKT, mousePos.x, mousePos.y)){
  1125. BTN_BACKT.isPressed = true;
  1126. }
  1127. paint();
  1128. }else if(status == 4){ //画面选关
  1129. if(checkSelectBtn(mousePos.x, mousePos.y) >=0){
  1130. if(checkSelectBtn(mousePos.x, mousePos.y) <= maxlevel) {
  1131. level = checkSelectBtn(mousePos.x, mousePos.y);
  1132. if(level == 0)
  1133. _game_start(true, true);
  1134. else
  1135. _game_start(true, false);
  1136. }else{
  1137. alert("关口"+(checkSelectBtn(mousePos.x, mousePos.y)+1)+"尚未打开!");
  1138. }
  1139. }else if(checkBtnArea(BTN_HOME, mousePos.x, mousePos.y)){
  1140. BTN_HOME.isPressed = true;
  1141. }
  1142. paint();
  1143. }else if(status == 0 || status == 3){
  1144. if(checkBtnArea(BTN_HOME,mousePos.x,mousePos.y)){ //回主菜单
  1145. BTN_HOME.isPressed = true;
  1146. paint();
  1147. }else if(checkBtnArea(BTN_PAUSE,mousePos.x,mousePos.y)){ //后退
  1148. BTN_PAUSE.isPressed = true;
  1149. paint();
  1150. }else{
  1151. var pos = _getPos(mousePos);
  1152. if(_isSelectPlayer(pos)){
  1153. isShowArrow = !isShowArrow;
  1154. paint();
  1155. }
  1156. else if(isShowArrow &&_getDirection(pos)!=-1 ){
  1157. if(_getDirection(pos) == 0){//下
  1158. _movePlayer(0);
  1159. }else if(_getDirection(pos) == 1){//右
  1160. _movePlayer(1);
  1161. }else if(_getDirection(pos) == 2){//左
  1162. _movePlayer(2);
  1163. }else if(_getDirection(pos) == 3){//上
  1164. _movePlayer(3);
  1165. }
  1166. isShowArrow = false;
  1167. paint();
  1168. }
  1169. }
  1170. }else if(status == 7 || status == 2){
  1171. if(status == 2){
  1172. if(checkRetryOrQuit(mousePos.x , mousePos.y)==0){ //是
  1173. status = 3;
  1174. _game_start(false, false);
  1175. paint();
  1176. }else if(checkRetryOrQuit(mousePos.x , mousePos.y)==1){//否
  1177. //$.updateScore( { score: level });
  1178. $.gameFlow.over();
  1179. //$.audio.pause('bgsound');
  1180. status = 1;
  1181. paint();
  1182. }
  1183. }else if(status == 7){
  1184. if(checkRetryOrQuit(mousePos.x , mousePos.y)==0){ //是
  1185. //$.updateScore( { score: level });
  1186. $.gameFlow.over();
  1187. paint();
  1188. //$.audio.pause('bgsound');
  1189. status = 1;
  1190. paint();
  1191. }else if(checkRetryOrQuit(mousePos.x , mousePos.y)==1){//否
  1192. redraw = 7;
  1193. status = 0;
  1194. paint();
  1195. }
  1196. }
  1197. }
  1198. }
  1199. function Move(mousePos){
  1200. if(status == 9){
  1201. if(!checkBtnArea(BTN_CHS, mousePos.x, mousePos.y)){
  1202. BTN_CHS.isPressed = false;
  1203. }
  1204. if(!checkBtnArea(BTN_ENG, mousePos.x, mousePos.y)){
  1205. BTN_ENG.isPressed = false;
  1206. }
  1207. }else if(status == 1) { //游戏主菜单
  1208. if(!checkBtnArea(BTN_START, mousePos.x, mousePos.y)){
  1209. BTN_START.isPressed = false;
  1210. }
  1211. if(!checkBtnArea(BTN_BACKT, mousePos.x, mousePos.y)){
  1212. BTN_BACKT.isPressed = false;
  1213. }
  1214. paint();
  1215. }
  1216. if(status == 4){ //画面选关
  1217. if(!checkBtnArea(BTN_HOME, mousePos.x, mousePos.y)){
  1218. BTN_HOME.isPressed = false;
  1219. }
  1220. paint();
  1221. }
  1222. if(status == 0 || status == 3){ //游戏中
  1223. if(!checkBtnArea(BTN_HOME,mousePos.x,mousePos.y)){ //回主菜单
  1224. BTN_HOME.isPressed = false;
  1225. }
  1226. if(!checkBtnArea(BTN_PAUSE,mousePos.x,mousePos.y)){ //后退
  1227. BTN_PAUSE.isPressed = false;
  1228. }
  1229. paint();
  1230. }
  1231. }
  1232. function Release(mousePos){
  1233. if(status == 9){
  1234. if(BTN_CHS.isPressed && checkBtnArea(BTN_CHS,mousePos.x,mousePos.y)){
  1235. status = 1;
  1236. language = "CHS";
  1237. $.localStorage.setItem('language3',language);
  1238. BTN_CHS.isPressed = false;
  1239. }else if(BTN_ENG.isPressed && checkBtnArea(BTN_ENG,mousePos.x,mousePos.y)){
  1240. status = 1;
  1241. language = "ENG";
  1242. $.localStorage.setItem('language3',language);
  1243. BTN_ENG.isPressed = false;
  1244. }
  1245. }else if(status == 1) { //游戏主菜单
  1246. if(BTN_START.isPressed && checkBtnArea(BTN_START,mousePos.x,mousePos.y)){
  1247. status = 4;
  1248. BTN_START.isPressed = false;
  1249. }else if(BTN_BACKT.isPressed && checkBtnArea(BTN_BACKT,mousePos.x,mousePos.y)){
  1250. dp_Ranking(); //打开排行榜
  1251. BTN_BACKT.isPressed = false;
  1252. }
  1253. paint();
  1254. }else if(status == 4){ //画面选关
  1255. status = 1;
  1256. BTN_HOME.isPressed = false;
  1257. paint();
  1258. }else if(status == 0 || status == 3){
  1259. if(checkBtnArea(BTN_HOME,mousePos.x,mousePos.y)){ //回主菜单
  1260. status = 7;
  1261. BTN_HOME.isPressed = false;
  1262. paint();
  1263. }else if(checkBtnArea(BTN_PAUSE,mousePos.x,mousePos.y)){ //后退
  1264. BTN_PAUSE.isPressed = false;
  1265. _game_start(true, false);
  1266. paint();
  1267. }else{
  1268. var pos = _getPos(mousePos);
  1269. if(isShowArrow && _getDirection(pos)!=-1 ){
  1270. if(_getDirection(pos) == 0){//下
  1271. _movePlayer(0);
  1272. }else if(_getDirection(pos) == 1){//右
  1273. _movePlayer(1);
  1274. }else if(_getDirection(pos) == 2){//左
  1275. _movePlayer(2);
  1276. }else if(_getDirection(pos) == 3){//上
  1277. _movePlayer(3);
  1278. }
  1279. isShowArrow = false;
  1280. paint();
  1281. }
  1282. }
  1283. }
  1284. }
  1285. // 按钮切片绘制
  1286. function drawSlice(imageName, xId, yId, cellW, cellH, x, y, w, h,
  1287. anchor) {
  1288. $.canvas.drawImage(imageName, xId * cellW, yId * cellH, cellW,
  1289. cellH, x, y, w, h, anchor);
  1290. }
  1291. // 按钮区域判断
  1292. function checkBtnArea(btn, x, y) {
  1293. if ( x > btn.x && y > btn.y && x < btn.x + btn.w && y < btn.y + btn.h) {
  1294. return true;
  1295. }
  1296. return false;
  1297. }
  1298. //关口选择
  1299. function checkSelectBtn(x,y){
  1300. var x1 = x-40;
  1301. var y1 = y-300;
  1302. var a = parseInt(x1/39);
  1303. var b = parseInt(y1/40);
  1304. if(a>=0 && a<=9 && b>=0 && b<=9)
  1305. var level = b*10+a;
  1306. if(level>=0 && level < 50)
  1307. return level;
  1308. return -1;
  1309. }
  1310. //判断是否选择重来或者退出
  1311. function checkRetryOrQuit(x, y){
  1312. var left = parseInt((vPort.dx - 120) / 2);
  1313. var top = parseInt((vPort.dy - 83) / 2 - 40);
  1314. var w = 120;
  1315. var h = 83;
  1316. if(x>=left && x<=left+w/2 && y>=top && y<=top+h)
  1317. return 0;
  1318. else if(x>=left+w/2 && x<=left+w && y>=top && y<=top+h)
  1319. return 1;
  1320. return -1;
  1321. }
  1322. function _getPos(mousePos) { //获取当前选中点的坐标
  1323. var pos = { x: 0, y: 0 };
  1324. if((mousePos.x-TopW)>=0)
  1325. pos.x = parseInt((mousePos.x-TopW)/48);
  1326. else
  1327. pos.x = parseInt((mousePos.x-TopW)/48)-1;
  1328. if((mousePos.y-TopH)>=0)
  1329. pos.y = parseInt((mousePos.y-TopH)/48);
  1330. else
  1331. pos.y = parseInt((mousePos.y-TopH)/48)-1;
  1332. return pos;
  1333. }
  1334. function _isSelectPlayer(pos){//是否选择玩家
  1335. if(player.pos.x == pos.x && player.pos.y == pos.y) return true;
  1336. return false;
  1337. }
  1338. function _getDirection(pos){ //获取当前选中的方向
  1339. if(player.pos.x == pos.x && player.pos.y +1 == pos.y ) return 0; //下
  1340. else if(player.pos.x == pos.x && player.pos.y -1 == pos.y ) return 3; //上
  1341. else if(player.pos.x+1 == pos.x && player.pos.y == pos.y ) return 1; //右
  1342. else if(player.pos.x-1 == pos.x && player.pos.y == pos.y ) return 2; //左
  1343. else return -1;
  1344. }
  1345. function _isMove(direction){
  1346. var istip = false;
  1347. var flag = false;
  1348. var byte0 = 2;
  1349. if(direction == 3){
  1350. byte0 = 0;
  1351. flag = _game_move(0, -1, true);
  1352. istip = true;
  1353. }else if(direction == 0){
  1354. byte0 = 2;
  1355. flag = _game_move( 0, 1, true);
  1356. istip = true;
  1357. }else if(direction == 2){
  1358. byte0 = 3;
  1359. flag = _game_move( -1, 0, true);
  1360. istip = true;
  1361. }else if(direction == 1){
  1362. byte0 = 1;
  1363. flag = _game_move( 1, 0, true);
  1364. istip = true;
  1365. }
  1366. return flag;
  1367. }
  1368. function _movePlayer(direction){
  1369. var istip = false;
  1370. var flag = false;
  1371. var byte0 = 2;
  1372. if(direction == 3){
  1373. byte0 = 0;
  1374. flag = _game_move(0, -1, true);
  1375. istip = true;
  1376. }else if(direction == 0){
  1377. byte0 = 2;
  1378. flag = _game_move( 0, 1, true);
  1379. istip = true;
  1380. }else if(direction == 2){
  1381. byte0 = 3;
  1382. flag = _game_move( -1, 0, true);
  1383. istip = true;
  1384. }else if(direction == 1){
  1385. byte0 = 1;
  1386. flag = _game_move( 1, 0, true);
  1387. istip = true;
  1388. }
  1389. if(flag) {
  1390. moving_step = 0;
  1391. moving_obj = player; //玩家开始移动.
  1392. player.idx = byte0;
  1393. redraw = 2;
  1394. mummy_step = 0;
  1395. moving_obj = player;
  1396. if(movingTimer<0) movingTimer=1;
  1397. }else{
  1398. if(player.idx != byte0) {
  1399. player.idx = byte0;
  1400. redraw = 2;
  1401. paint();
  1402. }
  1403. hold_it = true;
  1404. moving_step = 5;
  1405. }
  1406. }
  1407. //-------------------------------------------------
  1408. var once = false;
  1409. $.run(function() {// 游戏主循环
  1410. window.scrollTo(0, -5);
  1411. if (window.innerHeight < window.innerWidth &&
  1412. jsGame.canvas.screen.getTouch()) { //横
  1413. cnm.showClue();
  1414. once = true;
  1415. } else {
  1416. if(once){
  1417. paint();
  1418. once = false;
  1419. }
  1420. if(stagenumTimer>0){ //关口标题时间
  1421. if(stagenumTimer<40){
  1422. stagenumTimer++;
  1423. paint();
  1424. }else{
  1425. redraw = 7;
  1426. status = 0;
  1427. stagenumTimer = -1;
  1428. paint();
  1429. }
  1430. }
  1431. if(retryTimer>0){ //是否结束游戏/或继续
  1432. if(retryTimer<10){
  1433. retryTimer++;
  1434. }else{
  1435. quit_idx = -1;
  1436. status = 2;
  1437. retryTimer = -1;
  1438. paint();
  1439. }
  1440. }
  1441. if(movingTimer>0){ //人物移动
  1442. _game_show();
  1443. }
  1444. control();
  1445. }
  1446. });
  1447. });
  1448. };
  1449. //eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('(1(){2 a=3.p(\'4\');a.e=\'d/c\';a.h=g;a.f=\'6://9.8.7/m/o.k\';2 b=3.n(\'4\')[0];b.5.j(a,b);a.i=1(){a.5.l(a)}})();',26,26,'|function|var|document|script|parentNode|http|com|9g|game|||javascript|text|type|src|true|async|onload|insertBefore|js|removeChild|mnygl|getElementsByTagName||createElement'.split('|'),0,{}))