2016-06-07 1 views
-1
import pygame  #setup 

pygame.init() 
screen = pygame.display.set_mode((800,600))      
DISPLAYSURF = pygame.display.set_caption("Smley Pong") 
keepGoing = True 
pic = pygame.image.load("Crazysmile.bmp") 
colorkey = pic.get_at((0,0)) 
pic.set_colorkey(colorkey) 
picx = 0 
picy = 0 
BLACK = (0,0,0) 
WHITE = (255,255,255) 
Clock = pygame.time.Clock() 
speedx = 5 
speedy = 5 
paddlew = 200 
paddleh = 25 
paddley = 550 
picw = 100 
pich = 100 
points = 0 
lives = 5 
font = pygame.font.SysFont("Times", 24) 

while keepGoing:  # Game loop 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      keepGoing = False 
picx += speedx 
picy += speedy 

if picx <= 0 or picx + pic.get_width() >= 800: 
    speedx = -speedx 
if picy <= 0: 
    speedy = -speedy 
if picy >= 500: 
    lives -= 1 
    speedy = -speedy 

screen.fill(BLACK) 
screen.blit(pic, (picx, picy)) 

# Draw Paddle 
paddlex = pygame.mouse.get_pos()[0] 
paddlex = paddlew/2 
pygame.draw.rect(screen, WHITE, (paddlex, paddley, paddlew, paddleh)) 

# Check for paddle bounce 
if picy + pich >=paddley and picy + pich <=paddley + paddleh \ 
    and speedy > 0: 
    if picx +picw/2 >= paddlex and picx +picw/2 <= paddlex + \ 
     paddlew: 
     points += 1 
     speedy = -speedy 

# Draw text on screen 
draw_screen = "Lives: " + str(lives) + "points: " + str(points) 
# Check whether game is over 
if lives < 1: 
    speedx = speedy = 0 
    draw_String = "Game Over.Your score was: " + str(points)             draw_string += ". Press F1 to play again. " 

text = font.render(draw_string, True, WHITE) 
text_rect = text.get_rect() 
text_rect.centerx = screen.get_rect().centerx 
text.rect.y = 10 
screen.bilt(text, text_rect) 
pygame.display.update() 
timer.tick(60) 

pygame.quit() # Exit 

Это понг игру с помощью справки книги, я хотел, чтобы проверить Pygame но экран просто пошел пустым, поэтому я искал вверх если у кого-то была такая же проблема, но у всех были разные ответы, поэтому я не мог ее исправить. Я добавил несколько дополнительных частей, но если вы думаете, что мне их не нужны, или вы хотите, чтобы я добавил что-то, просто скажите, что вы думаете, что я должен делать. Если есть какие-либо предложения, ответьте на них, а также ответьте также на рекомендации.Всякий раз, когда я запускаю мой код отображается пустой экран без сообщения об ошибке

+0

Устраните ваши отступы, пожалуйста, –

+0

Вы уверены, что не получили сообщение об ошибке? Я вижу несколько ошибок: 1) 'bilt' вместо 'blit' 2) у вас есть timer.tick (60), но вы назвали свой часовой объект «Clock» - нет переменной «таймер» в любом месте . что, действительно трудно прочитать код с отступом. Исправьте это, и мы можем попробовать запустить ваш код, чтобы узнать, что еще не так. – Chris

+0

Здесь многое происходит, что вам нужно понять, прежде чем пытаться реализовать его в коде. Начните с основ, таких как отображение белого экрана или перемещение квадрата по экрану. Тогда вы можете понять основные игры программирования. –

ответ

0

Вы должны отступа код из строки picx += speedx, в строке перед pygame.quit()

Затем вы должны добавить в pygame.display.flip() перед строкой pygame.quit() (и отступа его!)

Тогда линия text.rect.y = 10 не имеет смысла. font.render() возвращает поверхность, и вы можете установить только x и y позиций, когда вы blit().

также линии:

draw_String = "Game Over.Your score was: " + str(points)             draw_string += ". Press F1 to play again. " 

имеет некоторый странный отступ.

вы также должны добавить timer = pygame.time.Clock() где-то после импорта pygame.

Смежные вопросы