Всем доброго времени суток. Ближе к делу, перепечатал код программы из книги "Учим Python, делая крутые игры" (стр. 371) и она не работает. На сайте что прикреплён к книге я тоже прогонял код и ошибок он не выдал. Менял изображения но ничего не дало результата. Пытался импровизировать и менять код, подгонять под возможные ошибки но результата тоже 0. Я совсем новичок и мог бы забить на это, но мне шибко интересно в чем же моя (или нет?) ошибка. Поэтому кому интересно, прошу помочь решить задачку.
В этой программе спрайт игрока будет "есть" спрайты вишен, и по мере того, как он их "ест", он будет увеличиваться.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
import pygame, sys, time, random from pygame.locals import * #установка pygame. pygame.init() mainClock = pygame.time.Clock() #настройка окна. WINDOWWIDTH = 400 WINDOWHEIGHT = 400 windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32) pygame.display.set_caption('Спрайты и звуки') #настройка цветов. WHITE = (255, 255, 255) #создание структуры данных блока. player = pygame.Rect(300, 100, 40, 40) playerImage = pygame.image.load('player.png') playerStretchedImage = pygame.transform.scale(playerImage, (40, 40)) foodImage = pygame.image.load('cherry.png') foods = [] for i in range(20): foods.append(pygame.Rect(random.randint(0, WINDOWWIDTH - 20), random.randint(0, WINDOWHEIGHT - 20), 20, 20)) foodCounter = 0 NEWFOOD = 40 #создание переменных клавиатуры. moveLeft = False moveRight = False moveUp = False moveDown = False MOVESPEED = 6 #настройка музыки. pickUpSound = pygame.mixer.Sound('pickup.wav') pygame.mixer.music.load('background.mid') pygame.mixer.music.play(-1, 0.0) musicPlaying = True #запуск игрового цикла. while True: #проверка событий. for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: #изменение переменных клавиатуры. if event.key == K_LEFT or event.key == K_a: moveRight = False moveLeft = True if event.key == K_RIGHT or event.key == K_d: moveLeft = False moveRight = True if event.key == K_UP or event.key == K_w: moveDown = False moveUp = True if event.key == K_DOWN or event.key == K_s: moveUp = False moveDown = True if event.type == KEYUP: if event.key == K_ESCAPE: pygame.quit() sys.exit() if event.key == K_LEFT or event.key == K_a: moveLeft = False if event.key == K_RIGHT or event.key == K_d: moveRight = False if event.key == K_UP or event.key == K_w: moveUp = False if event.key == K_DOWN or event.key == K_s: moveDown = False if event.key == K_x: player.top = random.randint(0, WINDOWHEIGHT - player.height) player.left = random.randint(0, WINDOWWIDTH - player.width) if event.key == K_m: if musicPlaying: pygame.mixer.music.stop() else: pygame.mixer.music.play(-1, 0.0) musicPlaying = not musicPlaying if event.type == MOUSE****ONUP: foods.append(pygame.Rect(event.pos[0] - 10, event.pos[1] - 10, 20, 20)) foodCounter += 1 if foodCounter >= NEWFOOD: #добавление новой "еды". foodCounter = 0 foods.append(pygame.Rect(random.randint(0, WINDOWWIDTH - 20), random.randint(0, WINDOWHEIGHT - 20), 20, 20)) #создание на поверхности белого фона. windowSurface.fill(WHITE) #перемещение игрока. if moveDown and player.bottom < WINDOWHEIGHT: player.top += MOVESPEED if moveUp and player.top > 0: player.top -= MOVESPEED if moveLeft and player.left > 0: player.left -= MOVESPEED if moveRight and player.right < WINDOWWIDTH: player.right += MOVESPEED #отображение блока на поверхности. windowSurface.blit(playerStretchedImage, player) #проверка, не пере****я ли игрок с каким-либо блоками "еды". for food in foods[:]: if player.colliderect(food): foods.remove(food) player = pygame.Rect(player.left, player.top, player.width + 2, player.height + 2) playerStretchedImage = pygame.transform.scale(playerImage, (player.width, player.height)) if musicPlaying: pickUpSound.play() #отображение "еды". for food in foods: windowSurface.blit(foodImage, food) #вывод окна на экран. pygame.display.update() mainClock.tick(40 ) |