tiger.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /* jshintbrowser: true */
  2. var fingerMatch = {
  3. tiger: 2,
  4. fly: 1
  5. };
  6. var fingers, score;
  7. var nextSymbol, currentSymbol, running;
  8. var startEvent, endEvent;
  9. var timerStart, timerLength;
  10. var shareDesc;
  11. timerLength = 15000; // 15s
  12. function g( id ) {
  13. return document.getElementById( id );
  14. }
  15. g( 'start' ).onclick = start;
  16. function start() {
  17. g( 'teach' ).style.display = 'none';
  18. g( 'start' ).style.display = 'none';
  19. g( 'share' ).style.display = 'none';
  20. g( 'more' ).style.display = 'none';
  21. g( 'game' ).style.display = 'block';
  22. g( 'timer' ).style.display = 'block';
  23. g( 'score' ).innerHTML = '';
  24. g( 'timer' ).innerHTML = '开始点吧 -.-';
  25. score = 0;
  26. fingers = 0;
  27. timerStart = 0;
  28. nextSymbol = generate();
  29. next();
  30. running = true;
  31. }
  32. function stop() {
  33. running = false;
  34. if ( score < 5 ) {
  35. shareDesc = '“战斗力小于5的渣渣!”';
  36. } else if ( score < 30 ) {
  37. shareDesc = '“谢谢你为人类做出的贡献!”';
  38. } else if ( score < 50 ) {
  39. shareDesc = '“独孤求败,无人能敌!”';
  40. } else {
  41. shareDesc = '“我不是人类!”';
  42. }
  43. g( 'timer' ).innerHTML = shareDesc;
  44. shareDesc = '我打了' + score + '个老虎和苍蝇!——' + shareDesc;
  45. document.title = shareDesc;
  46. dataForWeixin.tTitle = shareDesc;
  47. g( 'start' ).style.display = 'block';
  48. g( 'share' ).style.display = 'block';
  49. g( 'more' ).style.display = 'block';
  50. g( 'start' ).innerHTML = '再来一盘';
  51. }
  52. function next() {
  53. currentSymbol = nextSymbol;
  54. nextSymbol = generate();
  55. update();
  56. }
  57. function generate() {
  58. return Math.random() > 0.5 ? 'tiger' : 'fly';
  59. }
  60. function update() {
  61. g( 'current' ).src = _config['isSite']+"vapp/49/"+currentSymbol + '2.png';
  62. g( 'next' ).src = _config['isSite']+"vapp/49/"+nextSymbol + '2.png';
  63. }
  64. function slash( color, duration ) {
  65. duration = duration || 100;
  66. g( 'slash' ).style.background = color;
  67. g( 'slash' ).style.webkitAnimationDuration = duration + 'ms';
  68. g( 'slash' ).classList.add( 'play' );
  69. setTimeout( function () {
  70. g( 'slash' ).classList.remove( 'play' );
  71. }, duration );
  72. }
  73. function clock() {
  74. var ellapsed = +new Date() - timerStart;
  75. var left = ( timerLength - ellapsed ) / 1000;
  76. if ( left <= 0 ) {
  77. stop();
  78. } else if ( running ) {
  79. g( 'timer' ).innerHTML = left.toFixed( 2 );
  80. setTimeout( clock );
  81. }
  82. }
  83. if ( 'ontouchstart' in document.body ) {
  84. startEvent = 'touchstart';
  85. endEvent = 'touchend';
  86. } else {
  87. startEvent = 'mousedown';
  88. endEvent = 'mouseup';
  89. }
  90. g( 'game' ).addEventListener( startEvent, function ( e ) {
  91. e.preventDefault();
  92. if ( !running ) return;
  93. fingers += e.touches ? e.touches.length : 1;
  94. //console.log(fingers);
  95. if ( !timerStart ) {
  96. timerStart = +new Date();
  97. clock();
  98. }
  99. } );
  100. g( 'game' ).addEventListener( endEvent, function ( e ) {
  101. e.preventDefault();
  102. if ( !running || !fingers ) return;
  103. if ( ( fingers > 1 && currentSymbol == 'tiger' ) ||
  104. ( fingers == 1 && currentSymbol == 'fly' ) ) {
  105. fingers = 0;
  106. next();
  107. g( 'score' ).innerHTML = '杀死:' + ( ++score );
  108. slash( 'red' );
  109. g( 'current' ).style.webkitTransform = ( score % 2 ) ? 'scale(-1, 1)' : '';
  110. } else {
  111. slash( 'red', 3000 );
  112. stop();
  113. }
  114. fingers = 0;
  115. } );
  116. g( 'game' ).addEventListener( 'contextmenu', function ( e ) {
  117. e.preventDefault();
  118. } );
  119. g( 'share' ).onclick = function () {
  120. g( 'share-mask' ).style.display = 'block';
  121. };
  122. if (endgame.env.ee) {
  123. g( 'share' ).style.display = 'none';
  124. }
  125. g( 'share-mask' ).addEventListener( startEvent, function () {
  126. g( 'share-mask' ).style.display = 'none';
  127. } );
  128. function more() {
  129. window.location.href = v;
  130. }