自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

這個丹麥小哥的項目火了!他用Python寫了個游戲機

新聞 前端
最近有一個叫PyBoy的開源項目火了,原因是它使用了Python 2.7重新將那些在GameBoy上的上古游戲的整個模擬器實現(xiàn)了出來。

最近有一個叫PyBoy的開源項目火了,原因是它使用了Python 2.7重新將那些在GameBoy上的上古游戲的整個模擬器實現(xiàn)了出來。

这个丹麦小哥的项目火了!他用Python写了个游戏机

利用現(xiàn)代技術重新實現(xiàn)上古游戲一直是一件相當有意思的事情,大家都知道,Game Boy是任天堂公司在1989年發(fā)售的第一代便攜式游戲機,對于一群80/90后來說,Gameboy是他們童年里不可或缺的一部分,有的人可能忘記了,但是提起《口袋妖怪》,很多人應該就能想起來了。

除此之外,PyBoy支持通過API編寫腳本,還添加了類型定義,使其可以使用Cython編譯軟件,從而獲得與用C和C++編寫的模擬器相媲美的性能。

目前,PyBoy在Github上標星2.6K,累計Fork有 239 個(Github地址:https://github.com/Baekalfen/PyBoy/wiki/Scripts,-AI-and-Bots)

特性

PyBoy 被設計成通過 Python 訪問,因此支持并鼓勵人們做實驗研究,對機器人和AI感興趣的人都可以嘗試一下。創(chuàng)建者正在構建特定于游戲的包裝器,目前,這些包裝器可讓程序員與俄羅斯方塊和超級瑪麗進行交互,而不需要對 Game Boy 有深入的了解。

具體你可以參考該文檔:https://docs.pyboy.dk。

說到這里,不得不提的是,創(chuàng)建這個項目的是一個丹麥小哥,早在2015年,PyBoy就已經(jīng)是一個大學項目,目前,創(chuàng)建者還想學習和嘗試更多奇特的功能,根據(jù)大學項目的研究,他們向模擬器添加了倒回功能,也就是說,你可以在任何游戲中倒回時間。

PyBoy可作為Python中的對象加載。這意味著它可以從另一個腳本初始化,并可以由該腳本控制和探測??匆幌耮amewrapper_tetris.py與游戲互動的原始“機器人”。

所有外部組件都可以在PyBoy文檔中找到,以下是從屏幕讀取數(shù)據(jù)的簡短演示。該代碼也可以在gamewrapper_mario.py以下位置找到:

  1. import os 
  2. import sys 
  3.  
  4. from pyboy import PyBoy, WindowEvent 
  5.  
  6. # Makes us able to import PyBoy from the directory below 
  7. file_path = os.path.dirname(os.path.realpath(__file__)) 
  8. sys.path.insert(0, file_path + "/.."
  9.  
  10. # Check if the ROM is given through argv 
  11. if len(sys.argv) > 1
  12.     filename = sys.argv[1
  13. else
  14.     print("Usage: python mario_boiler_plate.py [ROM file]"
  15.     exit(1
  16.  
  17. quiet = "--quiet" in sys.argv 
  18. pyboy = PyBoy(filename, window_type="headless" if quiet else "SDL2", window_scale=3, debug=not quiet, game_wrapper=True) 
  19. pyboy.set_emulation_speed(0
  20. assert pyboy.cartridge_title() == "SUPER MARIOLAN" 
  21.  
  22. mario = pyboy.game_wrapper() 
  23. mario.start_game() 
  24.  
  25. assert mario.score == 0 
  26. assert mario.lives_left == 2 
  27. assert mario.time_left == 400 
  28. assert mario.world == (11
  29. assert mario.fitness == 0 # A built-in fitness score for AI development 
  30. last_fitness = 0 
  31.  
  32. print(mario) 
  33.  
  34. pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT) 
  35. for _ in range(1000): 
  36.     assert mario.fitness >= last_fitness 
  37.     last_fitness = mario.fitness 
  38.  
  39.     pyboy.tick() 
  40.     if mario.lives_left == 1
  41.         assert last_fitness == 27700 
  42.         assert mario.fitness == 17700 # Loosing a live, means 10.000 points in this fitness scoring 
  43.         print(mario) 
  44.         break 
  45. else
  46.     print("Mario didn't die?"
  47.     exit(2
  48.  
  49. mario.reset_game() 
  50. assert mario.lives_left == 2 
  51.  
  52. pyboy.stop() 

如果在加載了Super Mario Land ROM的情況下運行上述代碼,則將在下面獲得類似圖片和終端的打印輸出。請注意,Mario的形狀顯示為索引0、1、16和17。

这个丹麦小哥的项目火了!他用Python写了个游戏机

 

  1. Super Mario Land: World 1-1 
  2. Coins: 0 
  3. lives_left: 2 
  4. Score: 0 
  5. Time left: 400 
  6. Level progress: 251 
  7. Fitness: 0 
  8. Sprites on screen: 
  9. Sprite [3]: Position: (35112), Shape: (88), Tiles: (Tile: 0), On screen: True 
  10. Sprite [4]: Position: (43112), Shape: (88), Tiles: (Tile: 1), On screen: True 
  11. Sprite [5]: Position: (35120), Shape: (88), Tiles: (Tile: 16), On screen: True 
  12. Sprite [6]: Position: (43120), Shape: (88), Tiles: (Tile: 17), On screen: True 
  13. Tiles on screen: 
  14.      0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19 
  15. ____________________________________________________________________________________ 
  16. 0  | 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 339 
  17. 1  | 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 320 
  18. 2  | 300 300 300 300 300 300 300 300 300 300 300 300 321 322 321 322 323 300 300 300 
  19. 3  | 300 300 300 300 300 300 300 300 300 300 300 324 325 326 325 326 327 300 300 300 
  20. 4  | 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 
  21. 5  | 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 
  22. 6  | 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 
  23. 7  | 300 300 300 300 300 300 300 300 310 350 300 300 300 300 300 300 300 300 300 300 
  24. 8  | 300 300 300 300 300 300 300 310 300 300 350 300 300 300 300 300 300 300 300 300 
  25. 9  | 300 300 300 300 300 129 310 300 300 300 300 350 300 300 300 300 300 300 300 300 
  26. 10 | 300 300 300 300 300 310 300 300 300 300 300 300 350 300 300 300 300 300 300 300 
  27. 11 | 300 300 310 350 310 300 300 300 300 306 307 300 300 350 300 300 300 300 300 300 
  28. 12 | 300 368 369 300 0   1   300 306 307 305 300 300 300 300 350 300 300 300 300 300 
  29. 13 | 310 370 371 300 16  17  300 305 300 305 300 300 300 300 300 350 300 300 300 300 
  30. 14 | 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 352 
  31. 15 | 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 353 

 

責任編輯:張燕妮 來源: 開源最前線
相關推薦

2020-04-20 15:13:36

Python 模擬器AI模型

2009-04-07 15:30:09

LinuxEVO游戲機

2013-06-28 10:55:29

Google游戲機

2011-10-06 15:48:36

戴爾臺式機

2022-03-24 07:57:58

Python水果忍者游戲

2011-09-15 17:22:29

投影儀用戶體驗

2013-07-05 11:16:19

2022-03-29 14:54:13

數(shù)據(jù)科學編程開發(fā)

2014-03-21 10:16:17

2012-03-11 19:03:54

iPad

2021-04-14 14:46:32

開源技術 軟件

2013-05-30 09:21:03

游戲云計算時代云游戲機游戲

2011-06-06 14:04:29

臺式機行情

2021-10-28 16:50:23

OCRNLP開源

2024-11-06 16:45:39

Python游戲開發(fā)代碼

2022-08-08 09:29:19

AIDeepMind

2022-10-11 11:18:41

漏洞CTurt

2017-07-12 08:33:04

機房數(shù)據(jù)中心服務器

2019-07-05 15:42:58

GitHub代碼開發(fā)者

2015-04-28 09:21:28

JSJS俄羅斯方塊游戲帝國
點贊
收藏

51CTO技術棧公眾號