Проблема в том, что я объявил self.rect.x=x
, а в Марио функцию x=300
, но когда я пытаюсь получить доступ к mario.draw
, по какой-то причине Марио появляется в -35
в координатах x.
Может кто-то помочь мне с этим? Мои прошлые коды работали с методом, который я использую, но теперь он просто не работает. Координата y тоже не работает. Он просто появляется в середине экрана.
Небольшое примечание: у меня была функция с именем draw
, которая выводила на экран self.rect и self.image.
import pygame
from pygame.locals import *
import os
#Starting up the game
pygame.init()
clock=pygame.time.Clock()
#screen
SCREENWIDTH=800
SCREENHEIGHT=int(SCREENWIDTH*0.8)
screen=pygame.display.set_mode((SCREENWIDTH,SCREENHEIGHT))
pygame.display.set_caption("Mario")
#functions and classes
class Mario():
def __init__(self,x,y,speed):
"""making my variables"""
self.speed=speed
self.in_air=False
self.flip=False
self.vel_y=0
self.jump=False
self.direction=1
self.animation_list=[]
self.action=0
self.index=0
animation_types=["idle","run"]
temp_list=[]
for animation in animation_types:
temp_list=[]
num_frames=len(os.listdir(f"Mario/img/{animation}"))
for x in range(num_frames):
img=pygame.image.load(f"Mario/img/{animation}/{x}.png").convert_alpha()
img=pygame.transform.scale(img,(70,70))
temp_list.append(img)
self.animation_list.append(temp_list)
self.image=self.animation_list[self.action][self.index]
self.rect=self.image.get_rect()
""" i specifically here say self.rect.x=x"""
self.rect.x=x
self.rect.y=y
pygame.display.update()
for x in range(num_frames):
переопределяет переменную x, вы должны использовать другую переменную для циклаты имеешь в виду, что я должен использовать i вместо x?
Да, или даже что-то вроде "frame_num" или "frame_index" было бы красиво и описательно.