import sys
import pygame
class Settings():
def __init__(self):
self.screen_width=1600
self.screen_height=900
self.bg_color=(240,240,240)
def run_game():
#初始化游戏,建立屏幕对象
pygame.init()
#使用setting类
ai_settings=Settings()
screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption('Alien Invasion')
#开始主循环
while True:
for event in pygame.event.get():
'''一些操作'''
if event.type==pygame.QUIT:
sys.exit()
screen.fill(ai_settings.bg_color)
#刷新屏幕,让最近绘制清晰可见
pygame.display.flip()
run_game()
我学的新东西有:
关于pygame库:
pygame.init()
pygame.display.set_mode(元组)
pygame.display.set_caption('Alien Invasion')
pygame.event.get():
pygame.QUIT#注意没有括号
pygame.display.flip()
关于screen:
screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
screen.fill(ai_settings.bg_color)
关于event(这里是我自定义用于循环pygame.event.get()的结果)
event.type#注意没有括号
在 Python 中,特别是在使用 pygame
库时,screen
通常是一个变量,它指代创建的游戏窗口或屏幕的显示区域。
详细版:
方法 | 作用 |
pygame.init() | 游戏初始化 |
pygame.display.set_mode(元组) | 窗口大小 |
pygame.display.set_caption('Alien Invasion') | 窗口名称 |
pygame.event.get(): | 键鼠事件 |
pygame.QUIT#注意没有括号 | 点击退出 |
pygame.display.flip() | 屏幕刷新 |
screen.fill() | 屏幕填色 |
screen=... | 窗口大小 |
event.type#注意没有括号 | 事件抓取 |
我们继续写一个流程:
煞笔CSDN连mermaid都不支持,真是狗都不用...
- 初始化pygame,使其正常运行
- 建立Settings类,统一设置代码
- 开启程序主循环:
- 循环检测键鼠动作
- event检测到pygame.QUIT直接sys.exit()
- 刷新屏幕
重写了一下,忘了很多东西:
import sys
import pygame
class Settings():
def __init__(self) -> None:
self.screen_width=1600
self.screen_height=900
'''forgot this'''
self.bg_color=(240,240,240)#0~255
def run_game():
pygame.init()
ai_settings=Settings()
'''forgot this'''
screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
'''forgot this'''
pygame.display.set_caption('Alien Invasion')
while True:
for event in pygame.event.get():
'''这里总是把event.type写成别的'''
if event.type==pygame.QUIT:
sys.exit()
'''forgot this'''
screen.fill(ai_settings.bg_color)
pygame.display.flip()#为什么在while外面就无法访问pygame?
run_game()
忘记了:
- setting里添加color元组
- run_game里初始化screen大小,标题
- event.type写成event或event.type()
- pygame.display.flip忘记pygame.display