Advertisement
OtsoSilver

Untitled

Oct 29th, 2021
1,378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.41 KB | None | 0 0
  1. #pgzero
  2. import random
  3.  
  4. WIDTH = 600
  5. HEIGHT = 450
  6.  
  7. TITLE = "Космическое путешествие"
  8. FPS = 30
  9.  
  10. # Объекты и переменные
  11. ship = Actor("ship1", (300, 400))
  12. space = Actor("space")
  13. enemies = []
  14. planets = [Actor("plan1", (random.randint(0, 600), -100)), Actor("plan2", (random.randint(0, 600), -100)), Actor("plan3", (random.randint(0, 600), -100))]
  15. meteors = []
  16. bullets = []
  17. mode = 'menu'
  18. type1 = Actor("ship1", (100, 200))
  19. type2 = Actor("ship2", (300, 200))
  20. type3 = Actor("ship3", (500, 200))
  21.  
  22. # Заполнение списка врагов
  23. for i in range(5):
  24.     x = random.randint(0, 600)
  25.     y = random.randint(-450, -50)
  26.     enemy = Actor("enemy", (x, y))
  27.     enemy.speed = random.randint(2, 8)
  28.     enemies.append(enemy)
  29.    
  30. # Заполнение списка метеоритов
  31. for i in range(5):
  32.     x = random.randint(0, 600)
  33.     y = random.randint(-450, -50)
  34.     meteor = Actor("meteor", (x, y))
  35.     meteor.speed = random.randint(2, 10)
  36.     meteors.append(meteor)
  37.  
  38. # Отрисовка
  39. def draw():
  40.     # Режим меню
  41.     if mode == 'menu':
  42.         space.draw()
  43.         screen.draw.text('Выберите корабль', center = (300, 100), color = "white", fontsize = 36)
  44.         type1.draw()
  45.         type2.draw()
  46.         type3.draw()
  47.     # Режим игры
  48.     if mode == 'game':
  49.         space.draw()
  50.         planets[0].draw()
  51.         # Отрисовка метеоритов
  52.         for i in range(len(meteors)):
  53.             meteors[i].draw()
  54.         ship.draw()
  55.         # Отрисовка врагов
  56.         for i in range(len(enemies)):
  57.             enemies[i].draw()
  58.         # Отрисовка пуль    
  59.         for i in range(len(bullets)):
  60.             bullets[i].draw()
  61.     # Окно проигрыша    
  62.     elif mode == 'end':
  63.         space.draw()
  64.         screen.draw.text("GAME OVER!", center = (300, 200), color = "white", fontsize = 36)
  65.    
  66. # Управление
  67. def on_mouse_move(pos):
  68.     ship.pos = pos
  69.  
  70. # Добавление в список нового врага
  71. def new_enemy():
  72.     x = random.randint(0, 400)
  73.     y = -50
  74.     enemy = Actor("enemy", (x, y))
  75.     enemy.speed = random.randint(2, 8)
  76.     enemies.append(enemy)
  77.  
  78. # Движение врагов
  79. def enemy_ship():
  80.     for i in range(len(enemies)):
  81.         if enemies[i].y < 650:
  82.             enemies[i].y = enemies[i].y + enemies[i].speed
  83.         else:
  84.             enemies.pop(i)
  85.             new_enemy()
  86.  
  87. # Движение планет
  88. def planet():
  89.     if planets[0].y < 550:
  90.             planets[0].y = planets[0].y + 1
  91.     else:
  92.         planets[0].y = -100
  93.         planets[0].x = random.randint(0, 600)
  94.         first = planets.pop(0)
  95.         planets.append(first)
  96.  
  97. # Движение метеоритов
  98. def meteorites():
  99.     for i in range(len(meteors)):
  100.         if meteors[i].y < 450:
  101.             meteors[i].y = meteors[i].y + meteors[i].speed
  102.         else:
  103.             meteors[i].x = random.randint(0, 600)
  104.             meteors[i].y = -20
  105.             meteors[i].speed = random.randint(2, 10)
  106.  
  107. # Столкновения
  108. def collisions():
  109.     global mode
  110.     for i in range(len(enemies)):
  111.         if ship.colliderect(enemies[i]):
  112.             mode = 'end'
  113.         # Столкновение пуль с врагами
  114.         for j in range(len(bullets)):
  115.             if bullets[j].colliderect(enemies[i]):
  116.                 enemies.pop(i)
  117.                 bullets.pop(j)
  118.                 new_enemy()
  119.                 break
  120.  
  121. def update(dt):
  122.     if mode == 'game':
  123.         enemy_ship()
  124.         collisions()
  125.         planet()
  126.         meteorites()
  127.         # Движение пуль
  128.         for i in range(len(bullets)):
  129.             if bullets[i].y < 0:
  130.                 bullets.pop(i)
  131.                 break
  132.             else:
  133.                 bullets[i].y = bullets[i].y - 10
  134.        
  135. def on_mouse_down(button, pos):
  136.     global mode, ship
  137.     if mode == 'menu' and type1.collidepoint(pos):
  138.         ship.image = "ship1"
  139.         mode = 'game'
  140.     elif mode == 'menu' and type2.collidepoint(pos):
  141.         ship.image = "ship2"
  142.         mode = 'game'
  143.     elif mode == 'menu' and type3.collidepoint(pos):
  144.         ship.image = "ship3"
  145.         mode = 'game'
  146.     # Стрельба    
  147.     elif mode == 'game' and button == mouse.LEFT:
  148.         bullet = Actor("missiles")
  149.         bullet.pos = ship.pos
  150.         bullets.append(bullet)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement