Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. import math
  2. import turtle
  3. import random
  4.  
  5. window = turtle.Screen()
  6. window.screensize(1200, 800)
  7. window.setup(1200 + 25, 800 + 25)
  8. window.bgpic('images/background.png')
  9. window.tracer(2)
  10.  
  11. BASE_X, BASE_Y = 0, -300
  12.  
  13.  
  14. def calc_heading(x1, y1, x2, y2):
  15.     dx = x2 - x1
  16.     dy = y2 - y1
  17.     lenght = (dx ** 2 + dy ** 2) ** 0.5
  18.     cos_alpha = dx / lenght
  19.     alpha = math.acos(cos_alpha)
  20.     alpha = math.degrees(alpha)
  21.     if dy < 0:
  22.         alpha = -alpha
  23.     return alpha
  24.  
  25.  
  26. def fire_missile(x, y):
  27.     missile = turtle.Turtle(visible=False)
  28.     missile.speed(0)
  29.     missile.color('white')
  30.     missile.penup()
  31.     missile.setpos(x=BASE_X, y=BASE_Y)
  32.     missile.pendown()
  33.     heading = calc_heading(x1=BASE_X, y1=BASE_Y, x2=x, y2=y)
  34.     missile.setheading(heading)
  35.     missile.showturtle()
  36.     # missile.forward(500)
  37.     # missile.shape("circle")
  38.     # missile.shapesize(2)
  39.     # missile.shapesize(3)
  40.     # missile.shapesize(4)
  41.     # missile.shapesize(5)
  42.     # missile.clear()
  43.     # missile.hideturtle()
  44.     info = {'missile': missile, 'target': [x, y], 'state': 'launched', 'radius': 0}
  45.     missiles.append(info)
  46.  
  47. def enemy_fire_missile():
  48.     enemy_missile = turtle.Turtle(visible=False)
  49.     enemy_missile.speed(0)
  50.     enemy_missile.color('red')
  51.     enemy_missile.penup()
  52.     x1 = random.randint(-550, 550)
  53.     y1 = 300
  54.     x2 = random.randint(-550, 550)
  55.     y2 = -330
  56.     enemy_missile.setpos(x=x1, y=y1)
  57.     enemy_missile.pendown()
  58.     heading = calc_heading(x1=x1, y1=y1, x2=x2, y2=y2)
  59.     enemy_missile.setheading(heading)
  60.     enemy_missile.showturtle()
  61.     info = {'missile': enemy_missile, 'target': [x2, y2], 'state': 'launched', 'radius': 0}
  62.     missiles.append(info)
  63.  
  64. window.onclick(fire_missile)
  65.  
  66. missiles = []
  67.  
  68. while True:
  69.     window.update()
  70.  
  71.     en_fire = random.randint(1, 60)
  72.     if en_fire ==1:
  73.         enemy_fire_missile()
  74.  
  75.     for info in missiles:
  76.         state = info['state']
  77.         missile = info['missile']
  78.         if state == 'launched':
  79.             missile.forward(4)
  80.             target = info['target']
  81.             if missile.distance(x=target[0], y=target[1]) < 20:
  82.                 info['state'] = 'explode'
  83.                 missile.shape("circle")
  84.         elif state == 'explode':
  85.             info['radius'] += 1
  86.             if info['radius'] > 4:
  87.                 info['state'] = 'dead'
  88.                 missile.clear()
  89.                 missile.hideturtle()
  90.             else:
  91.                 missile.shapesize(info['radius'])
  92.  
  93.     dead_missiles = [info for info in missiles if info['state'] == 'dead']
  94.     for dead in dead_missiles:
  95.         missiles.remove(dead)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement