Python Forum

Full Version: pygame screem size
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Im making my first pygame and Im having toruble with screen size whenever i Hit run I cant see my player hes like hidden underneath the map Here is an image of the screen [attachment=2054]

import pygame

from pygame.locals import *

pygame.init()

screen_width = 1000
screen_height = 1000

screen = pygame.display.set_mode((screen_width,screen_height), pygame.RESIZABLE)
pygame.display.set_caption('Platformer')

#define game variables
tile_size = 50

#load images

bg_img = pygame.image.load("sky.png")
sun_img = pygame.image.load("sun.png")






class Player():
    def __init__(self, x, y):
        img = pygame.image.load("guy1.png")
        self.image = pygame.transform.scale(img, (50, 90))
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.vel_y = 0
        self.jumped = False

    def update(self):
        dx = 0        
        dy = 0

        #draw player onto the screen
        key = pygame.key.get_pressed()
        if key[pygame.K_SPACE] and self.jumped == False:
            self.vel_y = -15
            self.jumped = True
        if key[pygame.K_SPACE] == False: 
             self.jumped = False
        if key[pygame.K_LEFT]:
            dx -= 5
        if key[pygame.K_RIGHT]:
            dx += 5

        #add gravity
        self.vel_y += 1
        if self.vel_y > 10:
            self.vel_y = 10
        dy += self.vel_y
        #check for collision
        
        #update player coordinates
        self.rect.x += dx
        self.rect.y += dy
        if self.rect.bottom > screen_height:
            self.rect.bottom = screen_height
            dy = 0
        
            
        screen.blit(self.image, self.rect)
class World():
   def __init__(self, data):
        self.tile_list = []

        #load images
        dirt_img = pygame.image.load("dirt.png")
        grass_img = pygame.image.load("grass.png")
        
        row_count = 0
        for row in data: 
            col_count = 0
            for tile in row:
                if tile == 1:
                    img = pygame.transform.scale(dirt_img, (tile_size, tile_size)) 
                    img_rect = img.get_rect()
                    img_rect.x = col_count * tile_size
                    img_rect.y = row_count * tile_size
                    tile = (img, img_rect) 
                    self.tile_list.append(tile)              
                if tile == 2:
                    img = pygame.transform.scale(grass_img, (tile_size, tile_size)) 
                    img_rect = img.get_rect()
                    img_rect.x = col_count * tile_size
                    img_rect.y = row_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 = world_data = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1], 
[1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 2, 2, 1], 
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 7, 0, 5, 0, 0, 0, 1], 
[1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 1], 
[1, 7, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], 
[1, 2, 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, 7, 0, 0, 7, 0, 0, 0, 0, 1], 
[1, 0, 2, 0, 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], 
[1, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 1], 
[1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 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, 7, 0, 7, 0, 0, 0, 0, 2, 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, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1], 
[1, 0, 0, 0, 0, 0, 2, 2, 2, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1], 
[1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
[1, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
[1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]



player = Player(100, screen_height - 130)
world = World(world_data)



run = True
while run:
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False


    screen.blit(bg_img, (0,0))
    screen.blit(sun_img, (100,100))
 
    world.draw()
    player.update()
    

    pygame.display.update()

pygame.quit()
What is the size of your display? It doesn't look 1000x1000. I ran your game and your screenshot looks like it is missing several dirt/grass blocks at the bottom of the screen.
(Oct-21-2022, 04:13 AM)deanhystad Wrote: [ -> ]What is the size of your display? It doesn't look 1000x1000. I ran your game and your screenshot looks like it is missing several dirt/grass blocks at the bottom of the screen.
The size display screen is (1920 x 1000) Yeah Idk why Im missing those blocks
If your screen is 1000 high, the largest pygame window is less because of the window frame.
(Oct-22-2022, 06:24 AM)deanhystad Wrote: [ -> ]If your screen is 1000 high, the largest pygame window is less because of the window frame.

Ok so how do I Change my world Data List too fit my screen
What have you tried?
(Oct-22-2022, 10:09 PM)deanhystad Wrote: [ -> ]What have you tried?
I have tried using Pygame.RESIZABLE and ive tried to watch videos on it couldnt find anything. And ive tried too take away rows from the list but nothing has worked yet
It is probably easiest to make it fixed size and smaller.
(Oct-23-2022, 01:46 AM)deanhystad Wrote: [ -> ]It is probably easiest to make it fixed size and smaller.
How do I do that
Set the screen height smaller? That's probably not what you are asking.

If the screen is smaller, you'll have to do something with the world. Either have fewer rows (and maybe fewer columns if you want to maintain the aspect ratio), or make the tiles smaller. I think fewer rows is easiest to try. Just delete one or two. Probably not the first or the last.
Pages: 1 2