OtsoSilver

Untitled

Aug 22nd, 2021
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.89 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("ship", (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 == 'game':
  42.         space.draw()
  43.         planets[0].draw()
  44.         # Отрисовка метеоритов
  45.         for i in range(len(meteors)):
  46.             meteors[i].draw()
  47.         ship.draw()
  48.         # Отрисовка врагов
  49.         for i in range(len(enemies)):
  50.             enemies[i].draw()
  51.         for bul in bullets:
  52.             bul.draw()
  53.     # Окно проигрыша    
  54.     elif mode == 'end':
  55.         space.draw()
  56.         screen.draw.text("GAME OVER!", center = (300, 200), color = "white", fontsize = 36)
  57.     elif mode =='menu':
  58.         space.draw()
  59.         type1.draw()
  60.         type2.draw()
  61.         type3.draw()
  62.  
  63.  
  64. # Управление
  65. def on_mouse_move(pos):
  66.     ship.pos = pos
  67.  
  68. def on_mouse_down(button, pos):
  69.     global mode, ship, bullets
  70.     if mode == 'menu' and button == mouse.LEFT:
  71.         if type1.collidepoint(pos):
  72.             ship.image = 'ship1'
  73.             mode = 'game'
  74.         if type2.collidepoint(pos):
  75.             ship.image = 'ship2'
  76.             mode = 'game'
  77.         if type3.collidepoint(pos):
  78.             ship.image = 'ship3'
  79.             mode = 'game'
  80.     else:
  81.         bullet = Actor('missiles', pos)
  82.         bullet.speed = 15
  83.         bullets.append(bullet)
  84.  
  85.  
  86.  
  87. # Добавление в список нового врага
  88. def new_enemy():
  89.     x = random.randint(0, 400)
  90.     y = -50
  91.     enemy = Actor("enemy", (x, y))
  92.     enemy.speed = random.randint(2, 8)
  93.     enemies.append(enemy)
  94.  
  95. # Движение врагов
  96. def enemy_ship():
  97.     for i in range(len(enemies)):
  98.         if enemies[i].y < 650:
  99.             enemies[i].y = enemies[i].y + enemies[i].speed
  100.         else:
  101.             enemies.pop(i)
  102.             new_enemy()
  103.  
  104. # Движение планет
  105. def planet():
  106.     if planets[0].y < 550:
  107.             planets[0].y = planets[0].y + 1
  108.     else:
  109.         planets[0].y = -100
  110.         planets[0].x = random.randint(0, 600)
  111.         first = planets.pop(0)
  112.         planets.append(first)
  113.  
  114. # Движение метеоритов
  115. def meteorites():
  116.     for i in range(len(meteors)):
  117.         if meteors[i].y < 450:
  118.             meteors[i].y = meteors[i].y + meteors[i].speed
  119.         else:
  120.             meteors[i].x = random.randint(0, 600)
  121.             meteors[i].y = -20
  122.             meteors[i].speed = random.randint(2, 10)
  123.  
  124. def bullets_fire():
  125.     global bullets
  126.     for bul in bullets:
  127.         if bul.y > 0:
  128.             bul.y -= bul.speed
  129.         else:
  130.             bullets.remove(bul)
  131.             break
  132. # Столкновения
  133. def collisions():
  134.     global mode
  135.     for i in range(len(enemies)):
  136.         if ship.colliderect(enemies[i]):
  137.             mode = 'end'
  138.  
  139. def update(dt):
  140.     if mode == 'game':
  141.         enemy_ship()
  142.         collisions()
  143.         planet()
  144.         meteorites()
  145.         bullets_fire()
Advertisement
Add Comment
Please, Sign In to add comment