日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python写游戏的好选择: easygame

發布時間:2023/12/10 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:

import pygame as pg import sysdef destroy():pg.quit()sys.exit(0)pg.init() pg.font.init() screen = pg.display.set_mode((800, 800)) pg.display.set_caption('hello world') font = pg.font.Font(None, 50) clock = pg.time.Clock() fps = 60 while True:clock.tick(fps)text_surface = font.render('hello world', True, (0, 0, 0))screen.blit(text_surface, screen.get_rect().center)for event in pg.event.get():if event.type == pg.QUIT:destroy()elif event.type == pg.KEYDOWN:if event.key == pg.K_ESCAPE:destroy()pg.display.update()

而使用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有很好的兼容性。

import easygame as eg window = eg.window() surface = window.get_surface() # 通過get_surface方法獲得pygame.Surface的窗口對象

window有一個組件隊列window.widgets,在前面的Widget可能被后面的遮擋(Background類永遠置于底層)
在0項的組件置于底層,在最后一項的組件置于頂層。

import easygame as eg window = eg.window() widget = eg.Widget(window) widgets = window.widgets # 獲取組件隊列(list) widgets_deque = window.widget_queue # 獲取組件隊列(collections.deque) window.add_widget(widget) # 添加一個組件,必須為easygame.Widget類或其子類 window.delete_widget(widget) # 刪除一個組件,必須為easygame.Widget類或其子類,從底層開始匹配 window.random_widget() # 獲取隨機組件 window.move_widget_to(widget, 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可以實現滾動背景:

import easygame as eg def up_func(): # 更新回調background1.rolling(speed=3) # 滾動背景,速度為3background2.rolling(speed=3) # 需要2個背景對象 window = eg.window() background1 = eg.Background(window, 'back.png') background2 = eg.Background(window, 'back.png') background1.pack() background2.pack() window.mainloop(up_func=up_func)

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類的穩定性差,開發中不要使用。

import easygame as eg def handler(event: eg.EVENT_TYPE): print(input_btn.input(event)) # 獲取輸入值 window = eg.window(title='hello world', size=(200, 200),bgcolor=eg.orange) input_btn = eg.Input(window, 'up.png', 'down.png') window.mainloop(esc_quit=False, event_handler=handler)

Sprite

Sprite繼承至Widget類,與Widget無區別。

以下是它的增加的方法:

import easygame as eg window = eg.window() sprite = eg.Sprite(window, 'test.png') sprite.say('hello!') # 顯示一個提示框,內容為hello sprite.pack() window.mainloop()

在開發中建議使用Sprite而不是Widget。

Canvas

畫布類,畫筆只能在畫布上繪畫,繼承至Widget
類似tkinter中的Canvas。
通過pen = Canvas.init_pen()獲取一個畫筆對象。

import easygame as eg window = eg.window() canvas = eg.Canvas(window, position=(100, 100), size=(300, 300),bgcolor=eg.red) pen = canvas.init_pen(pen_position=(100, 100), pen_color=eg.banana) # 創建畫筆對象 pen.go_to(200, 200) # 移動至(200, 200) pen.clear() # 清空畫布 pen.go_to(200, 300) # 移動至(200, 300) canvas.pack() window.mainloop()

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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。