Не получить нигде с помощью спрайт-листа. Я смотрел много уроков и читал здесь - PullRequest
0 голосов
/ 29 марта 2020

Мой текущий код, который персонаж может передвигать, и он смотрит в том направлении, в котором ему полагается. Я знаю, что мне нужно заставить его переключаться между изображениями во время движения. У меня есть вся таблица спрайтов, и я тоже пытался ее разбить. Мне действительно трудно понять, как l oop просмотреть список. Я посмотрел много уроков, но он немного отличается от кода, и он взломает sh. Я такой нуб. Трудно разобрать мой собственный синтаксис, не говоря уже о попытках внедрить кого-то другого в мой. У меня есть main.py, functions.py warrior.py и settings.py

import sys
import pygame
from settings import Settings
import functions as gf
from warrior import Player


def rungame():
    pygame.init()
    pygame.display.set_caption('warrior Arcade')
    screen_settings = Settings()
    screen = pygame.display.set_mode((screen_settings.screen_width,screen_settings.screen_height))
    mycharacter = Player(screen)




    while True:

               gf.check_events(mycharacter)
               gf.update_screen(screen_settings,screen,mycharacter)
               mycharacter.update()



               pygame.display.flip()


 rungame()

файл functions.py следует

import pygame
import sys
clock = pygame.time.Clock()
movement_right = ['standright.png','stepright1.png','stepright2.png','stepright3.png','stepright4.png','stepright5.png','stepright6.png','stepright7.png','stepright8.png','stepright 9.png']
current_frame = 0
num_frames = 9





def check_events(mycharacter):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                 sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                     sys.exit()
                if event.key == pygame.K_RIGHT:
                    mycharacter.moving_right = True
                    mycharacter.image = pygame.image.load(movement_right[current_frame])

                if event.key == pygame.K_LEFT:
                    mycharacter.moving_left = True
                    mycharacter.image = pygame.image.load('faceleft.png')
                if event.key == pygame.K_DOWN:
                    mycharacter.moving_down = True
                    mycharacter.image = pygame.image.load('idle.png')

                if event.key == pygame.K_UP:
                    mycharacter.moving_up = True
                    mycharacter.image = pygame.image.load('faceup.png')
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_RIGHT:
                    mycharacter.moving_right = False
                    mycharacter.image = pygame.image.load('idle.png')
                if event.key == pygame.K_LEFT:
                    mycharacter.moving_left = False
                    mycharacter.image = pygame.image.load('idle.png')
                if event.key == pygame.K_DOWN:
                    mycharacter.moving_down = False
                    mycharacter.image = pygame.image.load('idle.png')
                if event.key == pygame.K_UP:
                    mycharacter.moving_up = False
                    mycharacter.image = pygame.image.load('idle.png')



def update_screen(screen_settings,screen,mycharacter):
    screen.blit(screen_settings.background, [0, 0])
    mycharacter.blit()

settings.py следует

import pygame


class Settings():
    def __init__(self):
        self.screen_width = 1200
        self.screen_height = 800
        self.background = pygame.image.load('grass.png')

warrior.py следует

import pygame
from itertools import cycle
movement_right = ['standright.png','stepright1.png','stepright2.png','stepright3.png','stepright4.png','stepright5.png','stepright6.png','stepright7.png','stepright8.png','stepright 9.png']


class Player():
    def __init__(self,screen):
        self.screen = screen
        self.image = pygame.image.load(movement_right[0])
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()
        self.rect.centerx = self.screen_rect.centerx
        self.rect.centery = self.screen_rect.centery
        self.moving_right = False
        self.moving_left = False
        self.moving_down = False
        self.moving_up = False
    def update(self):
        if self.moving_right:
            self.rect.centerx += 1
        if self.moving_left:
            self.rect.centerx -= 1
        if self.moving_down:
            self.rect.centery += 1
        if self.moving_up:
            self.rect.centery -= 1


    def blit(self):
        self.screen.blit(self.image,self.rect)
...