OtsoSilver

Untitled

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