Advertisement
Guest User

Untitled

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