parent
3c89380f3a
commit
7aaadabbdb
@ -0,0 +1,88 @@
|
||||
'''
|
||||
定义场景元素(地板, 云等)
|
||||
'''
|
||||
import pygame
|
||||
|
||||
|
||||
'''地板'''
|
||||
class Ground(pygame.sprite.Sprite):
|
||||
def __init__(self, imagepath, position, **kwargs):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
# 导入图片
|
||||
self.image_0 = pygame.image.load(imagepath)
|
||||
self.rect_0 = self.image_0.get_rect()
|
||||
self.rect_0.left, self.rect_0.bottom = position
|
||||
self.image_1 = pygame.image.load(imagepath)
|
||||
self.rect_1 = self.image_1.get_rect()
|
||||
self.rect_1.left, self.rect_1.bottom = self.rect_0.right, self.rect_0.bottom
|
||||
# 定义一些必要的参数
|
||||
self.speed = -10
|
||||
'''更新地板'''
|
||||
def update(self):
|
||||
self.rect_0.left += self.speed
|
||||
self.rect_1.left += self.speed
|
||||
if self.rect_0.right < 0:
|
||||
self.rect_0.left = self.rect_1.right
|
||||
if self.rect_1.right < 0:
|
||||
self.rect_1.left = self.rect_0.right
|
||||
'''将地板画到屏幕'''
|
||||
def draw(self, screen):
|
||||
screen.blit(self.image_0, self.rect_0)
|
||||
screen.blit(self.image_1, self.rect_1)
|
||||
|
||||
|
||||
'''云'''
|
||||
class Cloud(pygame.sprite.Sprite):
|
||||
def __init__(self, imagepath, position, **kwargs):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
# 导入图片
|
||||
self.image = pygame.image.load(imagepath)
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.left, self.rect.top = position
|
||||
# 定义一些必要的参数
|
||||
self.speed = -1
|
||||
'''将云画到屏幕上'''
|
||||
def draw(self, screen):
|
||||
screen.blit(self.image, self.rect)
|
||||
'''更新云'''
|
||||
def update(self):
|
||||
self.rect = self.rect.move([self.speed, 0])
|
||||
if self.rect.right < 0:
|
||||
self.kill()
|
||||
|
||||
|
||||
'''记分板'''
|
||||
class Scoreboard(pygame.sprite.Sprite):
|
||||
def __init__(self, imagepath, position, size=(11, 13), is_highest=False, bg_color=None, **kwargs):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
# 导入图片
|
||||
self.images = []
|
||||
image = pygame.image.load(imagepath)
|
||||
for i in range(12):
|
||||
self.images.append(pygame.transform.scale(image.subsurface((i*20, 0), (20, 24)), size))
|
||||
if is_highest:
|
||||
self.image = pygame.Surface((size[0]*8, size[1]))
|
||||
else:
|
||||
self.image = pygame.Surface((size[0]*5, size[1]))
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.left, self.rect.top = position
|
||||
# 一些必要的变量
|
||||
self.is_highest = is_highest
|
||||
self.bg_color = bg_color
|
||||
self.score = '00000'
|
||||
'''设置得分'''
|
||||
def set(self, score):
|
||||
self.score = str(score).zfill(5)
|
||||
'''画到屏幕上'''
|
||||
def draw(self, screen):
|
||||
self.image.fill(self.bg_color)
|
||||
for idx, digital in enumerate(list(self.score)):
|
||||
digital_image = self.images[int(digital)]
|
||||
if self.is_highest:
|
||||
self.image.blit(digital_image, ((idx+3)*digital_image.get_rect().width, 0))
|
||||
else:
|
||||
self.image.blit(digital_image, (idx*digital_image.get_rect().width, 0))
|
||||
if self.is_highest:
|
||||
self.image.blit(self.images[-2], (0, 0))
|
||||
self.image.blit(self.images[-1], (digital_image.get_rect().width, 0))
|
||||
screen.blit(self.image, self.rect)
|
Loading…
Reference in new issue