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 = 60
  59. # отслеживаем время
  60. fpsClock = pygame.time.Clock()
  61.  
  62.  
  63. # мы сами задали/написали главную функцию с названием main (можно и другое название)
  64. def main():
  65.     # цикл с условием – бесконечный, так как всегда равен Истине (True)
  66.     while True:
  67.         # Положение персонажа в координатах таблицы
  68.         y, x = hero_pos.x // 20, hero_pos.y // 20
  69.         Display.fill((0, 0, 0))
  70.         for i in range(m):
  71.             for j in range(n):
  72.                 if grid[i][j]:
  73.                     pygame.draw.rect(Display, (255, 0, 0), grid[i][j])
  74.         for event in pygame.event.get():  # для каждого существующего действия извне
  75.             if event.type == pygame.QUIT:  # если игрок нажал на крестик
  76.                 finish()
  77.             keys = pygame.key.get_pressed()
  78.             if x > 0:
  79.                 if keys[pygame.K_w] and grid[x-1][y] == 0:
  80.                     hero_pos.move_ip(0, -20)
  81.             if x < m - 1:
  82.                 if keys[pygame.K_s] and grid[x+1][y] == 0:
  83.                     hero_pos.move_ip(0, 20)
  84.             if y > 0:
  85.                 if keys[pygame.K_a] and grid[x][y - 1] == 0:
  86.                     hero_pos.move_ip(-20, 0)
  87.             if y < n - 1:
  88.                 if keys[pygame.K_d] and grid[x][y+1] == 0:
  89.                     hero_pos.move_ip(20, 0)
  90.  
  91.  
  92.         DISPLAY.blit(hero, hero_pos)  # соединяем прямоугольник персонажа и картинку
  93.  
  94.  
  95.         # обновляем окно игры
  96.         pygame.display.update()
  97.         # возращаемся к нчалу цикла, после времени (выставили в FPS)
  98.         fpsClock.tick(FPS)
  99.  
  100.  
  101. pygame.display.update()
  102. fpsClock.tick(FPS)
  103.  
  104. # ОТСЮДА НАЧИНАЕТСЯ РАБОТА ПРОГРАММЫ
  105. main()  # вызвали функцию, которую ранее прописали, ждём пока не выйдем из цикла
  106.  
  107. pygame.quit()  # корректно завершаем работу с библиотекой pygame
  108. sys.exit()  # корректно завершаем работу программы, если всё ок, то 0 выдаст функция

Share with your friends:

Print