Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pgzero
- import random
- WIDTH = 600
- HEIGHT = 450
- TITLE = "Космическое путешествие"
- FPS = 30
- # Объекты и переменные
- ship = Actor("ship", (300, 400))
- ship1 = Actor('ship1', (100,200))
- ship2 = Actor('ship2', (300,200))
- ship3 = Actor('ship3', (500,200))
- space = Actor("space")
- bullets = []
- enemies = []
- planets = [Actor("plan1", (random.randint(0, 600), -100)), Actor("plan2", (random.randint(0, 600), -100)), Actor("plan3", (random.randint(0, 600), -100))]
- meteors = []
- mode = 'menu'
- def new_bullet():
- global bullets
- bullet = Actor('missiles', ship.pos)
- bullet.speed = 10
- bullets.append(bullet)
- def bullet_move():
- global bullets
- for bul in bullets:
- if bul.top > 0:
- bul.top = bul.top - bul.speed
- else:
- bullets.remove(bul)
- # Заполнение списка врагов
- for i in range(5):
- x = random.randint(0, 600)
- y = random.randint(-450, -50)
- enemy = Actor("enemy", (x, y))
- enemy.speed = random.randint(2, 8)
- enemies.append(enemy)
- # Заполнение списка метеоритов
- for i in range(5):
- x = random.randint(0, 600)
- y = random.randint(-450, -50)
- meteor = Actor("meteor", (x, y))
- meteor.speed = random.randint(2, 10)
- meteors.append(meteor)
- # Отрисовка
- def draw():
- # Режим игры
- if mode == 'game':
- space.draw()
- planets[0].draw()
- # Отрисовка метеоритов
- for i in range(len(meteors)):
- meteors[i].draw()
- ship.draw()
- for bul in bullets:
- bul.draw()
- # Отрисовка врагов
- for i in range(len(enemies)):
- enemies[i].draw()
- # Окно проигрыша
- elif mode == 'end':
- space.draw()
- screen.draw.text("GAME OVER!", center = (300, 200), color = "white", fontsize = 36)
- elif mode == 'menu':
- space.draw()
- screen.draw.text("Выберите корабаль!", center = (300, 100), color = "white", fontsize = 24)
- ship1.draw()
- ship2.draw()
- ship3.draw()
- # Управление
- def on_mouse_move(pos):
- ship.pos = pos
- def on_mouse_down(button, pos):
- global mode
- if button == mouse.LEFT:
- if mode == 'menu':
- if ship1.collidepoint(pos):
- mode = 'game'
- ship.image = 'ship1'
- if ship2.collidepoint(pos):
- mode = 'game'
- ship.image = 'ship2'
- if ship3.collidepoint(pos):
- mode = 'game'
- ship.image = 'ship3'
- elif mode == 'game':
- new_bullet()
- # Добавление в список нового врага
- def new_enemy():
- x = random.randint(0, 400)
- y = -50
- enemy = Actor("enemy", (x, y))
- enemy.speed = random.randint(2, 8)
- enemies.append(enemy)
- # Движение врагов
- def enemy_ship():
- for i in range(len(enemies)):
- if enemies[i].y < 650:
- enemies[i].y = enemies[i].y + enemies[i].speed
- else:
- enemies.pop(i)
- new_enemy()
- # Движение планет
- def planet():
- if planets[0].y < 550:
- planets[0].y = planets[0].y + 1
- else:
- planets[0].y = -100
- planets[0].x = random.randint(0, 600)
- first = planets.pop(0)
- planets.append(first)
- # Движение метеоритов
- def meteorites():
- for i in range(len(meteors)):
- if meteors[i].y < 450:
- meteors[i].y = meteors[i].y + meteors[i].speed
- else:
- meteors[i].x = random.randint(0, 600)
- meteors[i].y = -20
- meteors[i].speed = random.randint(2, 10)
- # Столкновения
- def collisions():
- global mode, bullets, enemies
- for i in range(len(enemies)):
- if ship.colliderect(enemies[i]):
- mode = 'end'
- for bul in bullets:
- for enemy in enemies:
- if bul.colliderect(enemy):
- bullets.remove(bul)
- enemies.remove(enemy)
- new_enemy()
- break
- def update(dt):
- if mode == 'game':
- bullet_move()
- enemy_ship()
- collisions()
- planet()
- meteorites()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement