Advertisement
OtsoSilver

Untitled

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