Pygame - Получение черного экрана - PullRequest
0 голосов
/ 24 апреля 2018

У меня проблема с моим кодом. Когда я запускаю, он не выдает никаких ошибок, а только открывает черный экран. Я новичок в кодировании BTW. Наконец, что касается карт, я не создал и не нашел ни одной карты в Интернете, поэтому я поместил файлы шаблонов '.png', чтобы проверить, работает ли мой код. Вот файлы: https://drive.google.com/drive/folders/1t6EAG7cWSTDItHJnqNeHeJrnbT-2E_8B?usp=sharing

import pygame
import random
#import time

pygame.init()

display_width = 800
display_height = 600

gameDisplay = pygame.display.set_mode((display_width, 
display_height))

walkDown = [pygame.image.load('wdown1.png'), 
pygame.image.load('wdown2.png'), 
pygame.image.load('wdown3.png'), 
pygame.image.load('wdown4.png')]
walkLeft = [pygame.image.load('wleft1.png'), 
pygame.image.load('wleft2.png'), 
pygame.image.load('wleft3.png'), 
pygame.image.load('wleft4.png')]
walkRight = [pygame.image.load('wright1.png'), 
pygame.image.load('wright2.png'), 
pygame.image.load('wright3.png'), 
pygame.image.load('wright4.png')]
walkUp = [pygame.image.load('wup1.png'), 
pygame.image.load('wup2.png'), 
pygame.image.load('wup3.png'), 
pygame.image.load('wup4.png')]
lookDown = pygame.image.load('ldown.png')
lookLeft = pygame.image.load('lleft.png')
lookRight = pygame.image.load('lright.png')
lookUp = pygame.image.load('lup.png')

map1 = pygame.image.load("map1.png")
map2 = pygame.image.load("map2.png")
map3 = pygame.image.load("map3.png")
map4 = pygame.image.load("map4.png")
map5 = pygame.image.load("map5.png")

white = (255, 255, 255)
grey = (54, 54, 54)
black = (0, 0, 0)
bright_red = (255, 0, 0)
bright_green = (0, 255, 0)
bright_blue = (0, 0, 255)
red = (200, 0, 0)
green = (0, 200, 0)
blue = (0, 0, 200)
dark_red = (150, 0, 0)
dark_green = (0, 150, 0)
dark_blue = (0, 0, 150)

pygame.display.set_caption("Free Walker")
#gameIcon = pygame.image.load("gameIcon.png")
#pygame.display.set_caption(gameIcon)

clock = pygame.time.Clock()
pause = False

walkCount = 0
down = False
left = False
right = False
up = False

def map():
    mapList = ("map1", "map2", "map3", "map4", "map5")
    gamemap = random.choice(mapList)

def character(a, b, x, y):
    global walkCount
    gameDisplay.blit(game_map, (a - cameraX, b - cameraY))

    if walkCount + 1 >= 12:
        walkCount = 0
    if down:
        gameDisplay.blit(walkDown[walkCount // 3], (x - 
        cameraX, y - cameraY))
        walkCount += 1
    if left:
        gameDisplay.blit(walkLeft[walkCount // 3], (x - 
        cameraX, y - cameraY))
        walkCount += 1
    if right:
        gameDisplay.blit(walkRight[walkCount // 3], (x - 
        cameraX, y - cameraY))
        walkCount += 1
    if up:
        gameDisplay.blit(walkUp[walkCount // 3], (x - 
        cameraX, y - cameraY))
        walkCount += 1
    else:
        gameDisplay.blit(char, (x - cameraX, y - cameraY))


def quitgame():
    pygame.quit()
    quit()

def game_loop():
    gameExit = False

    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quitgame()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_w:
                    changeY = -10
                    down = False
                    left = False
                    right = False
                    up = True
                if event.key == pygame.K_a:
                    changeX = -10
                    down = False
                    left = True
                    right = False
                    up = False
                if event.key == pygame.K_s:
                    changeY = 10
                    down = True
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_d:
                    changeX = 10
                    down = False
                    left = False
                    right = True
                    up = False
        if event.type == pygame.KEYUP:
                if event.key == pygame.K_w:
                    changeY = 0
                    char = lookUp
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_a:
                    changeX = 0
                    char = lookLeft
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_s:
                    changeY = 0
                    char = lookDown
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_d:
                    changeX = 0
                    char = lookRight
                    down = False
                    left = False
                    right = False
                    up = False


    map()
    character(0, 0, 400, 300)
    pygame.display.update()
    clock.tick(12)
game_loop()
pygame.quit()
quit()

1 Ответ

0 голосов
/ 24 апреля 2018

Ваш отступ неправильный, код отрисовки должен быть в цикле.

def game_loop():
    gameExit = False

    while not gameExit:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quitgame()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_w:
                    changeY = -10
                    down = False
                    left = False
                    right = False
                    up = True
                if event.key == pygame.K_a:
                    changeX = -10
                    down = False
                    left = True
                    right = False
                    up = False
                if event.key == pygame.K_s:
                    changeY = 10
                    down = True
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_d:
                    changeX = 10
                    down = False
                    left = False
                    right = True
                    up = False
        if event.type == pygame.KEYUP:
                if event.key == pygame.K_w:
                    changeY = 0
                    char = lookUp
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_a:
                    changeX = 0
                    char = lookLeft
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_s:
                    changeY = 0
                    char = lookDown
                    down = False
                    left = False
                    right = False
                    up = False
                if event.key == pygame.K_d:
                    changeX = 0
                    char = lookRight
                    down = False
                    left = False
                    right = False
                    up = False


            map()
            character(0, 0, 400, 300)
            pygame.display.flip()
            clock.tick(12)

также используйте display.flip()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...