SaveText.Ru

Без имени
  1. import pygame, sys, random
  2.  
  3. W_W = 1000  # ширина окна (ось x)
  4. W_H = 500  # высота окна (ось y)
  5.  
  6. m = W_H // 20
  7. n = W_W // 20
  8. grid = [[0] * n for i in range(m)]
  9.  
  10. for i in range(m):
  11.     for j in range(n):
  12.         rand = random.randint(1, 10)
  13.         if rand < 3:
  14.             grid[i][j] = pygame.Rect(j * 20, i * 20, 20, 20)
  15. SPEED = 10
  16. SIZE = 20
  17. FPS = 10
  18. fpsClock = pygame.time.Clock()
  19.  
  20. UP = (0, -1)
  21. DOWN = (0, 1)
  22. LEFT = (-1, 0)
  23. RIGHT = (1, 0)
  24.  
  25.  
  26. def finish():
  27.     pygame.quit()
  28.     sys.exit(0)
  29.  
  30.  
  31. Display = pygame.display.set_mode((W_W, W_H))
  32.  
  33. # заранее прописываем цвета, которые используем в игре (если нужно)
  34. # данные о цветах берём в RGB формате (примеры основных цветов ниже)
  35.  
  36. BLACK = (0, 0, 0)
  37. WHITE = (255, 255, 255)
  38. RED = (255, 0, 0)
  39. GREEN = (0, 255, 0)
  40. BLUE = (0, 0, 255)
  41.  
  42. # переменная, куда мы сохранили/загрузили картинку для фона (картинка должна быть в
  43. # одной папке с программой) – проверяем правильно ли написали имя своей картинки и расширение
  44.  
  45. # переменная, куда мы сохранили/загрузили картинку для персонажа (картинка должна быть в
  46. # одной папке с программой) – проверяем правильно ли написали имя своей картинки и расширение
  47.  
  48. hero = pygame.image.load("kek.png")
  49. hero = pygame.transform.scale(hero, (20, 20))  # изменили размер картинки персонажа
  50.  
  51. hero_pos = hero.get_rect()
  52.  
  53. DISPLAY = pygame.display.set_mode((W_W, W_H))
  54. # добавили имя окна (будет видно в верхнем левом углу
  55. pygame.display.set_caption("PACMAN")
  56.  
  57. # количество кадров в секунду
  58. FPS = 10
  59. # отслеживаем время
  60. fpsClock = pygame.time.Clock()
  61.  
  62.  
  63. # мы сами задали/написали главную функцию с названием main (можно и другое название)
  64. def main():
  65.     # Последний шаг
  66.     last = (0, 0)
  67.     # цикл с условием – бесконечный, так как всегда равен Истине (True)
  68.     while True:
  69.         Display.fill((0, 0, 0))
  70.         for event in pygame.event.get():  # для каждого существующего действия извне
  71.             if event.type == pygame.QUIT:  # если игрок нажал на крестик
  72.                 finish()
  73.  
  74.             keys = pygame.key.get_pressed()
  75.             if keys[pygame.K_w]:
  76.                 hero_pos.move_ip(0, -20)
  77.                 last = (0, -20)
  78.             if keys[pygame.K_s]:
  79.                 hero_pos.move_ip(0, 20)
  80.                 last = (0, 20)
  81.             if keys[pygame.K_d]:
  82.                 hero_pos.move_ip(20, 0)
  83.                 last = (20, 0)
  84.             if keys[pygame.K_a]:
  85.                 hero_pos.move_ip(-20, 0)
  86.                 last = (-20, 0)
  87.         for i in range(m):
  88.             for j in range(n):
  89.                 if grid[i][j]:
  90.                     pygame.draw.rect(Display, (255, 0, 0), grid[i][j])
  91.                     if hero_pos.colliderect(grid[i][j]):
  92.                         hero_pos.move_ip(last[0] * -1, last[1] * -1)
  93.         DISPLAY.blit(hero, hero_pos)  # соединяем прямоугольник персонажа и картинку
  94.  
  95.  
  96.         # обновляем окно игры
  97.         pygame.display.update()
  98.         # возращаемся к нчалу цикла, после времени (выставили в FPS)
  99.         fpsClock.tick(FPS)
  100.  
  101.  
  102. pygame.display.update()
  103. fpsClock.tick(FPS)
  104.  
  105. # ОТСЮДА НАЧИНАЕТСЯ РАБОТА ПРОГРАММЫ
  106. main()  # вызвали функцию, которую ранее прописали, ждём пока не выйдем из цикла
  107.  
  108. pygame.quit()  # корректно завершаем работу с библиотекой pygame
  109. sys.exit()  # корректно завершаем работу программы, если всё ок, то 0 выдаст функция

Share with your friends:

Print