Ho can I make it so the dirt goes up instad of diagonal - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Ho can I make it so the dirt goes up instad of diagonal (/thread-34255.html) |
Ho can I make it so the dirt goes up instad of diagonal - izmamonke - Jul-11-2021 I finished this code so in line 53-65 display the numbers of the code of images, but when I try to run it nothing goes as planned. how can I fix it? import pygame pygame.init() screen_width = 1001 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) # screen name pygame.display.set_caption("HANDSOME ADVENTURE") # variables tile_size = 50 # screen icon icon = pygame.image.load('handsome icon.png') pygame.display.set_icon(icon) # load images bg_img = pygame.image.load('bgp.png') def draw_grid(): for line in range(0, 100): pygame.draw.line(screen, (255, 255, 255), (0, line * tile_size), (screen_width, line * tile_size)) pygame.draw.line(screen, (255, 255, 255), (line * tile_size, 0), (line * tile_size, screen_height)) class World(): def __init__(self, data): self.tile_list = [] dirtimg = pygame.image.load('handsomedirt.png') row_count = 0 for row in data: col_count = 0 for tile in row: if tile == 1: img = pygame.transform.scale(dirtimg, (tile_size, tile_size)) img_rect = img.get_rect() img_rect.x = col_count * tile_size img_rect.y = col_count * tile_size tile = (img, img_rect) self.tile_list.append(tile) col_count += 1 row_count += 1 def draw(self): for tile in self.tile_list: screen.blit(tile[0], tile[1]) world_data = [ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], ] world = World(world_data) # gameloop run = True while run: screen.blit(bg_img, (0, 0)) world.draw() draw_grid() for event in pygame.event.get(): if event.type == pygame.QUIT: run = False pygame.display.update() pygame.quit() RE: Ho can I make it so the dirt goes up instad of diagonal - deanhystad - Jul-12-2021 "Nothing goes as planned" is not descriptive. What do you expect to happen? How does this differ from what actually happens RE: Ho can I make it so the dirt goes up instad of diagonal - BashBedlam - Jul-12-2021 There are three mistakes in the for loop in the World class. The first is tha you change img_rect.y to col_count instead of row_count .The second is using putting img_rect where you real need a tuple.The third is that you use tile as the variable in the for loop and the reassign it in line 44.Try this and see if it works for you. class World(): def __init__(self, data): self.tile_list = [] dirtimg = pygame.image.load('handsomedirt.png') img = pygame.transform.scale(dirtimg, (tile_size, tile_size)) img_rect = img.get_rect() row_count = 0 for row in data: col_count = 0 for tile in row: if tile == 1: img_rect.x = col_count * tile_size img_rect.y = row_count * tile_size dirt_tile = (img, tuple (img_rect)) self.tile_list.append(dirt_tile) col_count += 1 row_count += 1 def draw(self): for tile in self.tile_list: screen.blit(tile[0], tile[1]) world_data = [ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] ]Also you are one row short in your world_data .
RE: Ho can I make it so the dirt goes up instad of diagonal - izmamonke - Jul-12-2021 (Jul-12-2021, 01:25 AM)BashBedlam Wrote: There are three mistakes in theThank you so much! |