Python小游戏_滑雪(附带原码)

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

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值