Chrome小恐龍前端修改代碼代碼總結


Chrome小恐龍前端修改代碼代碼總結

偶然間發現谷歌瀏覽器的離線小恐龍游戲,上網查找的攻略總結。

Chrome小恐龍是什么?

在Chrome(谷歌瀏覽器)斷網之后訪問在線頁面,如a.com會出現以下界面,叫做Chrome小恐龍游戲.這是一個隱藏的彩蛋。
除了斷網以外,直接在Chrome里訪問網站chrome://dino/也可以看到的。

這時按空格就可以開始游戲了。

怎么控制游戲?

按鍵 名稱 用途
UpKey 箭頭上 跳躍
DownKey 箭頭下 下蹲/快速降落
Space 空格 開始游戲/重新開始游戲/跳躍

修改代碼使用說明

提供的以下所有修改代碼都可以這樣使用!

第一步 打開Chrome瀏覽器打開這個網站
第二步 按F12 調出開發者工具
第三步 點擊下面圖中的 Console
第四步 然后會彈出這個界面
第五步 然后復制代碼(這里選用下面的修改代碼1中的壓縮代碼即可
第六步 然后按一下回車,就可以運行代碼了。

修改代碼1 (復制壓縮版即可)

將下面的代碼貼到控制台(console)中,即可完成小恐龍自動奔跑的神操作。
原版代碼:

function TrexRunnerBot() {
  const makeKeyArgs = (keyCode) => {
    const preventDefault = () => void 0;
    return {keyCode, preventDefault};
  };
  const upKeyArgs = makeKeyArgs(38);
  const downKeyArgs = makeKeyArgs(40);
  const startArgs = makeKeyArgs(32);
  if (!Runner().playing) {
    Runner().onKeyDown(startArgs);
    setTimeout(() => {
      Runner().onKeyUp(startArgs);
    }, 500);
  }
  function conquerTheGame() {
    if (!Runner || !Runner().horizon.obstacles[0]) return;
    const obstacle = Runner().horizon.obstacles[0];
    if (obstacle.typeConfig && obstacle.typeConfig.type === 'SNACK') return;
    if (needsToTackle(obstacle) && closeEnoughToTackle(obstacle)) tackle(obstacle);
  }
  function needsToTackle(obstacle) {
    return obstacle.yPos !== 50;
  }
  function closeEnoughToTackle(obstacle) {
    return obstacle.xPos <= Runner().currentSpeed * 18;
  }
  function tackle(obstacle) {
    if (isDuckable(obstacle)) {
      duck();
    } else {
      jumpOver(obstacle);
    }
  }
  function isDuckable(obstacle) {
    return obstacle.yPos === 50;
  }
  function duck() {
    Runner().onKeyDown(downKeyArgs);
    setTimeout(() => {
      Runner().onKeyUp(downKeyArgs);
    }, 500);
  }
  function jumpOver(obstacle) {
    if (isNextObstacleCloseTo(obstacle))
      jumpFast();
    else
      Runner().onKeyDown(upKeyArgs);
  }
  function isNextObstacleCloseTo(currentObstacle) {
    const nextObstacle = Runner().horizon.obstacles[1];
 
    return nextObstacle && nextObstacle.xPos - currentObstacle.xPos <= Runner().currentSpeed * 42;
  }
  function jumpFast() {
    Runner().onKeyDown(upKeyArgs);
    Runner().onKeyUp(upKeyArgs);
  }
  return {conquerTheGame: conquerTheGame};
}
let bot = TrexRunnerBot();
let botInterval = setInterval(bot.conquerTheGame, 2);

壓縮版代碼:

function TrexRunnerBot(){function f(){Runner().onKeyDown(d);setTimeout(function(){Runner().onKeyUp(d)},500)}var b=function(a){return{keyCode:a,preventDefault:function(){}}},c=b(38),d=b(40),e=b(32);Runner().playing||(Runner().onKeyDown(e),setTimeout(function(){Runner().onKeyUp(e)},500));return{conquerTheGame:function(){if(Runner&&Runner().horizon.obstacles[0]){var a=Runner().horizon.obstacles[0];if((!a.typeConfig||"SNACK"!==a.typeConfig.type)&&50!==a.yPos&&a.xPos<=18*Runner().currentSpeed)if(50=== a.yPos)f();else{var b=Runner().horizon.obstacles[1];if(b&&b.xPos-a.xPos<=42*Runner().currentSpeed)Runner().onKeyDown(c),Runner().onKeyUp(c);else Runner().onKeyDown(c)}}}}}var bot=TrexRunnerBot(),botInterval=setInterval(bot.conquerTheGame,2);

原理:檢測物體,自動按鍵模擬。這里還為了觀看做了一點優化。

修改代碼2

將下面的代碼貼到控制台中,即可無視任何傷害。(同理操作即可)

Runner.instance_.gameOver=function(){}

原理:把gameOver函數置空。(好簡單emmm)

修改代碼3:(復制壓縮版即可)

*積分提升速度修改為1000倍…(數值可以自己定義 1000)
原版代碼:

let hackScore = 0;
 
Object.defineProperty(Runner.instance_, 'distanceRan', {
  get: () => hackScore,
  set: (value) => hackScore = value + Math.floor(Math.random() * 1000),
  configurable: true,
  enumerable: true,
});

壓縮版代碼:

var hackScore=0;Object.defineProperty(Runner.instance_,"distanceRan",{get:function(){return hackScore},set:function(a){return hackScore=a+Math.floor(1E3*Math.random())},configurable:!0,enumerable:!0});

原理:
借助Object.defineProperty(),我們能夠輕易的修改現有對象上的屬性,配合重新定義對象具體內容的 gettersetter 描述符,可以做到對於屬性的劫持操作。

修改代碼4

刷分BUG,輸進控制台按回車后再開始游戲即可

Runner.instance_.setSpeed(99999);

恢復正常請輸入:

Runner.instance_.setSpeed(10);

倒退模式(沒有什么用)請輸入:

Runner.instance_.setSpeed(-10);

最后特別提示:

這些代碼可以疊加使用。
在輸入完一個代碼后按回車,然后輸入另一個代碼再按回車即可實現疊加。

總結

游戲還得自己慢慢玩才有意思,當修改之后,這個游戲就失去原有的味道了…..

總之,想有意思地玩的話,建議還是不修改以上代碼,自己慢慢地好好玩,靠自己玩得的分數才有意義。

以上修改相關代碼,僅供參考。最后,祝大家愉快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM