Python滑雪小游戏
以下是滑雪者类代码
定义一个雪人类
在这里插入代码片
import pygame
from settings import Settings
my_set = Settings()
skier_images = ['./skier_crash.png', './skier_down.png', './skier_left1.png', './skier_left2.png',
'./skier_right1.png', './skier_right2.png', ]
down_image = pygame.image.load(skier_images[1])
雪人初始位置
在这里插入代码片begin_top = 0
begin_left = my_set.screen_width / 2 - down_image.get_width() / 2
class Skier(pygame.sprite.Sprite):
def __init__(self,speed):
pygame.sprite.Sprite.__init__(self)
'''
:param image:指的是图片路径
:param rect:位置
:param down_speed:是往下的速度
'''
self.image = pygame.image.load(skier_images[1])
self.rect = self.image.get_rect()
self.rect.top = begin_top # 雪人初始位置
self.rect.left = begin_left
# 移动速度
self.speed = speed
#场景生成时间 也就是速度
self.time_set = 40
#根据按键事件来移动
def update(self, pressed_keys):
# 按键事件
if pressed_keys[pygame.K_LEFT] or pressed_keys[pygame.K_a]:
if self.rect.left > 0:
self.image = pygame.image.load(skier_images[2]).convert()
self.rect.left -= self.speed
elif pressed_keys[pygame.K_RIGHT] or pressed_keys[pygame.K_d]:
if self.rect.left < my_set.screen_width - self.image.get_width():
self.image = pygame.image.load(skier_images[4]).convert()
self.rect.left += self.speed
if pressed_keys[pygame.K_UP] or pressed_keys[pygame.K_w]:
if self.rect.top > 0 :
self.image = pygame.image.load(skier_images[1]).convert()
self.rect.top -= self.speed
elif pressed_keys[pygame.K_DOWN] or pressed_keys[pygame.K_s]:
if self.rect.top < my_set.screen_height - self.image.get_height():
self.image = pygame.image.load(skier_images[1]).convert()
self.rect.top += self.speed
if not (pressed_keys[pygame.K_LEFT] or pressed_keys[pygame.K_a] or pressed_keys[pygame.K_RIGHT] or
pressed_keys[pygame.K_d] or pressed_keys[pygame.K_UP] or pressed_keys[pygame.K_w] or
pressed_keys[pygame.K_DOWN] or pressed_keys[pygame.K_s]):
self.image = pygame.image.load(skier_images[1]).convert()
树和旗子类
import pygame
from random import randrange
from settings import Settings
my_set = Settings()
定义一个场景类
class TreeFlagClass(pygame.sprite.Sprite):
def __init__(self,speed,treeFlag): #传入两个参数,初始速度和bool值树或旗子
pygame.sprite.Sprite.__init__(self) #父类的初始化方法要调用
'''
:param image =图片
:param type 判断是树还是旗子
:param speed 速度
'''
if treeFlag:
self.image = pygame.image.load('./skier_tree.png')
self.type = 'tree'
else:
self.image = pygame.image.load('./skier_flag.png')
self.type = 'flag'
self.rect = self.image.get_rect()
self.rect.top = self.rect.height + my_set.screen_height
self.rect.centerx = randrange(my_set.screen_width - self.rect.width) + self.rect.width / 2
self.speed = speed
def update(self, *args):
self.rect.top -= self.speed
if self.rect.top < -self.rect.height:
self.kill()
设置类
class Settings(object):
def __init__(self):
#这是一个设置类,用来管理游戏的外观
self.screen_width = 600
self.screen_height = 800
self.bg_color = [255,255,255]
self.name = 'skier'
这是源代码附上
链接:https://pan.baidu.com/s/1gwBAv_XY4T0GqPLsDHQLNg?pwd=keg0
提取码:keg0