python写游戏的好选择: easygame
環境
- easygame需要python3.6及以上的python版本,最好的使用版本為python3.8。
- easygame不需要聯網。
- easygame需要pygame2.0.1及以上的pygame版本,最好的使用版本為pygame2.0.1。
- easygame適用于Windows、MacOS、Linux。不同的操作系統,窗口樣式會不同。非Windows系統下剪貼板功能可能有誤。
下載
使用pip下載:
pip install easygame -i https://pypi.org/project使用easy-install下載:
easy-install easygame -i https://pypi.org/project示例
easygame使用pygame為基礎類。
 對比:
 在pygame中顯示hello world:
而使用easygame:
import easygame as eg window = eg.window() text = eg.Text(window, 'Hello World!', size=50,position=window.rectangle.center) text.pack() window.mainloop()easygame的另一個優點是與tkinter很相似。
 easygame對于學習過Scratch的小朋友很適用。
文檔
素材安裝
使用如下命令安裝mblock的圖片素材(需要在WIFI環境下,并要等待):
python -m easygame.installer install使用如下命令卸載mblock的圖片素材:
python -m easygame.installer uninstall安裝后使用如下代碼獲取一個資源:
import easygame as eg path = eg.get_downloaded_image('Airplane15.svg') # path = "downloads/Airplane15.svg"窗口
使用easygame.window創建一個窗口對象:
import easygame as eg window = eg.window()eg.window的參數:
window(title='easygame.screen', # 窗口標題, strsize=(800, 800), # 窗口大小, Tuple[int, int]full_screen=False, # 是否全屏, boolfps=70, # 每秒幀率, intdepth=0, # 位深, intdisplay=0, # 媒體, intvsync=0, # 同步, inticon=None, # 窗口圖標路徑,支持png、jpg等等,stricon_title='game', # 圖標標題, strbgcolor=(255, 255, 255) # 背景色, Tuple[int, int, int] )(easygame是白色主題的)
 由于easygame使用pygame編寫,它對pygame有很好的兼容性。
window有一個組件隊列window.widgets,在前面的Widget可能被后面的遮擋(Background類永遠置于底層)
 在0項的組件置于底層,在最后一項的組件置于頂層。
window有如下標題方法:
import easygame as eg window = eg.window() title = window.get_title() # 獲取窗口標題 window.set_title('new title', 'new icon-title') # 重設窗口標題window有如下pygame方法:
import easygame as eg window = eg.window() window.init() # 初始化pygame,多次調用安全。在環境變量中"EASY_GAME_INIT"不為空的情況下將自動初始化 window.quit(0) # 退出pygame和python程序,0為退出狀態碼。window有如下Getter屬性:
import easygame as eg window = eg.window() rect = window.rectangle # 獲取窗口的pygame.Rect對象 center = rect.center # 獲取窗口中心 pos = window.mouse_position # 獲取鼠標位置使用stop關閉window:
import easygame as eg window = eg.window() window.stop(a=1) # 關閉window,調用over_function,傳入的是over_function的參數。使用mainloop顯示窗口:
import easygame as eg window = eg.window() window.mainloop(status=0, # 退出狀態碼esc_quit=True, # 按下ESC鍵是否退出event_handler=eg.do_something, # 處理pygame事件的函數,要有一個入參。up_func=eg.do_something, # 事件處理前調用的函數,用于繪制組件。down_func=eg.do_something, # 事件處理后調用的函數,用于判斷并反饋。over_function=eg.do_something, # 退出后調用的函數 )Tips: window.mainloop方法會返回Game Over的字符。
異常
在easygame中可能拋出EasyGameError:
import easygame as eg try:window = eg.window() except eg.EasyGameError:pass顏色
easygame收錄了一些顏色的RGB元組:
import easygame as eg eg.red = (255, 0, 0) eg.green = (0, 255, 0) eg.blue = (0, 0, 255) eg.black = (0, 0, 0) eg.white = (255, 255, 255) eg.brown = (142, 88, 60) eg.yellow = (255, 255, 0) eg.pink = (255, 174, 201) eg.purple = (128, 0, 255) eg.orange = (255, 128, 0) eg.grey = (128, 128, 128) eg.rose = (255, 0, 128) eg.banana = (255, 255, 50) eg.sea = (0, 255, 255)組件
secret-key
get_secret_key可以保證安全性。
import easygame as eg if eg.get_secret_key() != eg.SECRET_KEY:raise SystemExit('secret-key is wrong')Widget
Widget為組件基類,參數:
Widget(screen, # easygame.window對象*images, # 造型圖片size=(40, 40), # 圖片大小position=(0, 0), # 初始位置 )使用pack方法添加到組件隊列:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') widget.pack() # 等同于 window.add_widget(widget) window.mainloop()widget對象具有__call__方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') widget = widget(window, 'test2.png') # 重設widget widget = widget.reset(window, 'test3.png') # 使用此方法與上面的相同 widget.pack() # 等同于 window.add_widget(widget) window.mainloop()使用update繪制widget:
import easygame as eg def up_func(): # 回調函數widget.update() window = eg.window() widget = eg.Widget(window, 'test.png') window.mainloop(up_func=up_func)widget有如下造型方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png', 'test2.png') widget.add_modelling() # 增加一個造型編號 widget.set_modelling(0) # 設置造型編號 number = widget.modelling # 獲取造型編號 widget.pack() # 等同于 window.add_widget(widget) window.mainloop()widget有如下pygame方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') rect = widget.rectangle # 組件的pygame.Rect對象 surface = widget.get_screen() # 窗口對象 widget.pack() # 等同于 window.add_widget(widget) window.mainloop()widget有如下圖層方法:
import easygame as eg window = eg.window() widget1 = eg.Widget(window, 'test.png') widget2 = eg.Widget(window, 'test2.png') widget1.pack() widget2.pack() # pack之后才能對圖層操作 widget1.set_layer(0) # 設置圖層為0層(底層) widget1.set_layer_down() # 移動至底層 widget2.set_layer_up() # 移動至頂層 window.mainloop()widget有如下移動方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') widget.move_to(100, 100) # 移動至(100, 100) widget.move_x(50) # 增加x坐標50 widget.move_y(100) # 增加y坐標100 widget.move_to_mouse() # 移動至鼠標指針 widget.pack() window.mainloop()我們可以寫一個當鼠標點擊就移動過去的程序:
import easygame as eg def handler(event):if event.type == eg.MOUSEBUTTONDOWN:widget.move_to_mouse() window = eg.window() widget = eg.Widget(window, 'test.png') widget.pack() window.mainloop(event_handler=handler)widget有如下檢測方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') widget2 = eg.Widget(window, 'test2.png') widget.pack() near_x_side, near_y_side = widget.near_edge() # widget.near_edge方法返回兩個值,第一個值為碰到上/下邊緣,第二個值為碰到左/右邊緣 is_collide = widget.collide_other(widget2) # 判斷組件矩形對象是否相撞 window.mainloop(esc_quit=False)widget有如下轉換方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png', 'test2.png') widget.set_angel(0, 45) # 將造型0設為45度 widget.set_size(1, (60, 60)) # 將造型1設為60×60 widget.pack() window.mainloop()widget有如下音樂方法:
import easygame as eg window = eg.window() widget = eg.Widget(window, 'test.png') widget.play_sound('test.wav', async_play=True) # 異步播放音頻,不支持MP3 widget.play_sound('test.mp3', async_play=False) # 同步播放音頻,支持音頻與操作系統有關 widget.pause_sound() # 暫停異步播放音頻 widget.unpause_sound() # 繼續異步播放音頻 widget.stop_sound() # 停止異步播放音頻 widget.pack() window.mainloop()Background
Background是一個背景類,默認置于底層。繼承Widget類。
import easygame as eg window = eg.window() background = eg.Background(window, 'back.png') background.pack() window.mainloop()Background會自動適應窗口大小。
 Background可以實現滾動背景:
Button
Button是一個按鈕類,繼承Widget類。
import easygame as eg window = eg.window() # 按鈕類需要兩個造型,為鼠標離開時的造型和鼠標碰到時的造型 button = eg.Button(window, 'up.png', 'down.png') button.pack() window.mainloop()Button提供了如下鼠標方法:
import easygame as eg def handler(event: eg.EVENT_TYPE): # 事件處理回調if button.near_mouse(): # 鼠標指針碰到print('near mouse')if button.click(event): # 按鈕被點擊button.play_sound('pop.wav', async_play=False) # 播放點擊音效 window = eg.window() # 按鈕類需要兩個造型,為鼠標離開時的造型和鼠標碰到時的造型 button = eg.Button(window, 'up.png', 'down.png') button.pack() window.mainloop(event_handler=handler)Text
Text是一個文字類,繼承Widget類,無法執行大多數組件方法。
import easygame as eg window = eg.window(title='hello world', size=(200, 200),bgcolor=eg.orange) text = eg.Text(window, 'hello world', font='test.ttf',color=eg.black, size=40) # 設置文字類 text.set_text('hello easy-game') # 重設文字 text.pack() window.mainloop(esc_quit=False)Input
Input類繼承至Button類,按鈕按下時輸入才有效。
 Input類的穩定性差,開發中不要使用。
Sprite
Sprite繼承至Widget類,與Widget無區別。
 以下是它的增加的方法:
在開發中建議使用Sprite而不是Widget。
Canvas
畫布類,畫筆只能在畫布上繪畫,繼承至Widget
 類似tkinter中的Canvas。
 通過pen = Canvas.init_pen()獲取一個畫筆對象。
CMD
使用如下命令測試easygame的安裝:
python -m easygame debug使用如下命令測試easygame中Pen的安裝:
python -m easygame pen更新日志
- 0.9.3版本: 實現基礎功能
- 1.0.0版本: 增加mblock資源下載功能
- 1.0.1版本: 增加EVENT_TYPE類型
- 1.0.2版本: 完善文檔和setup
總結
以上是生活随笔為你收集整理的python写游戏的好选择: easygame的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 三个不等_2道真题,讲透「基本不等式」的
- 下一篇: st庞大股票股吧_黄金变石头!6倍大牛股
