My player won't move and I don't understand why. I followed a tutorial on how to make it move. I did what the person did but it doesn't move for me.
Here is my code:
import pygamepygame.init()screen = pygame.display.set_mode((800,600))pygame.display.set_caption("use arows")class player: def __init__(self ,x, y): self.x = x self.y = y self.width = 32 self.height = 32 self.velocity = 0 self.falling = False self.onGround = False def detectCollisions(self,x1,y1,w1,h1,x2,y2,w2,h2): if (x2+w2>=x1>=x2 and y2+h2>=y1>=y2): return True elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1>=y2): return True elif (x2+w2>=x1>=x2 and y2+h2>=y1+h1>=y2): return True elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1+h1>=y2): return True else: return False def update(self, gravity, blockList): if (self.velocity < 0): self.falling = True collision = False blockX,blockY = 0,0 for block in blockList: collision = self.detectCollisions(self.x, self.y, self.width, self.height, block.x, block.y, block.width, block.height ) if collision == True: blockx = block.x blocky = block.y break if(collision == True): if (self.falling == True): self.falling == False self.onGround== True self.velocity = 0 self.y = blocky - self.height if (self.onGround == False): self.velocity += gravity self.y -= self.velocity def render(self,screen): pygame.draw.rect(screen,(0,0,0),(self.x, self.y, self.width, self.height))class Block: def __init__ (self, x, y): self.x = x self.y = y self.width = 32 self.height = 32 def render(self,screen): pygame.draw.rect(screen,(0,0,0),(self.x, self.y, self.width, self.height))gravity = -0.5black = (0,0,0)white = (255,255,255)blue = (50,60,200)clock = pygame.time.Clock()player = player(0,0)# 25 colums and 19 rowslevel1 = [ [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]blockList = []for y in range (0,len(level1)): for x in range (0,len(level1[y])): if (level1[y][x] == 1): blockList.append(Block(x*32, y*32))movex,movey=0,0gameloop = Truewhile gameloop: for event in pygame.event.get(): if event.type == pygame.QUIT: gameloop = False if(event.type == pygame.KEYDOWN): if (event.key == pygame.K_RIGHT): movex = 5 elif (event.key == pygame.K_LEFT): movex = -5 if(event.type == pygame.KEYUP): if (event.key == pygame.K_RIGHT): movex = 0 elif (event.key == pygame.K_LEFT): movex = 0 screen.fill(blue) for block in blockList: block.render(screen) player.update(gravity, blockList) player.render(screen) clock.tick(60) pygame.display.update()pygame.quit()