import pygame # sys是python的标准库,提供Python运行时环境变量的操控
import os
import sys
from guongju.components import music
# 鼠标按下事件,记录初始位置
initial_position = None
ping={'x':None,'y':None,'w':None,'h':None}
class zao:
def __init__(self,state_dict,start_state):
self.screen = pygame.display.get_surface()
self.clock = pygame.time.Clock()
self.keys=pygame.key.get_pressed()
self.state_dict=state_dict
self.state=self.state_dict[start_state]
def update(self):
if self.state.finished:
next_state=self.state.next
self.state.finished=False
self.state=self.state_dict[next_state]
self.music = music.Music(next_state)
self.state.update(self.screen,self.keys)
def run(self):
global initial_position
sound_effect = pygame.mixer.Sound("music/anjianyinxiao/anjian.wav")
while True: # 无限循环,直到Python运行时退出结束
for event in pygame.event.get(): # 从Pygame的事件队列中取出事件,并从队列中删除该事件
if event.type == pygame.QUIT: # 获得事件类型,并逐类响应
pygame.display.quit()
pygame.quit() # "退出事件被触发!"
sys.exit()
elif event.type == pygame.KEYDOWN:
self.keys = pygame.key.get_pressed()
elif event.type == pygame.KEYUP:
self.keys = pygame.key.get_pressed()
elif event.type == pygame.MOUSEBUTTONDOWN: # 如果鼠标点击事件发生
# 播放音效
sound_effect.play()
# 鼠标按下事件,记录初始位置
initial_position = pygame.mouse.get_pos()
delta_x, delta_y = pygame.mouse.get_rel()
ping['x'] = pygame.mouse.get_pos()[0]
ping['y'] = pygame.mouse.get_pos()[1]
elif event.type == pygame.MOUSEMOTION:
# 鼠标移动事件,记录坐标变化
if initial_position:
delta_x, delta_y = pygame.mouse.get_rel()
ping['w'] = delta_x
ping['h'] = delta_y
elif event.type == pygame.MOUSEBUTTONUP: # 添加鼠标松开事件的处理
initial_position = None
ping['w'] = 0
ping['h'] = 0
self.update()
pygame.display.update() # 对显示窗口进行更新,默认窗口全部重绘
self.clock.tick(60)
def load_graphics(polllll, accept=('.jpg', '.png', '.bmp', '.gif')):
graphics = {}
for pic in os.listdir(polllll):
name, ext = os.path.splitext(pic)
if ext.lower() in accept:
img = pygame.image.load(os.path.join(polllll, pic))
if img.get_alpha():
img = img.convert_alpha()
else:
img = img.convert()
graphics[name] = img
return graphics
def get_image(sheet, x, y, width, height, scale):
image = pygame.Surface((width, height),pygame.SRCALPHA)
image.blit(sheet, (0, 0), (x, y, width, height)) # 0,0 代表画到哪个位置,×,y,w,h
image = pygame.transform.scale(image, (int(width * scale), int(height * scale)))
return image