Advertisement
Guest User

Line 123 = 125

a guest
Oct 23rd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.64 KB | None | 0 0
  1. # turtle import
  2.  
  3. import turtle
  4. import tkinter
  5. import os
  6. import math
  7. import random
  8. import time
  9.  
  10. #Tips when u click p
  11. tip = random.randint(1, 3)
  12.  
  13.  
  14.  
  15.  
  16.  
  17. test = 10
  18.  
  19.  
  20. # GUI
  21.  
  22. screen = turtle.Screen()
  23. screen.bgcolor("white")
  24. screen.title("GUI TEST")
  25. screen.bgpic("space.gif")
  26.  
  27. # Title screen
  28.  
  29.  
  30. title = "SPACE INVADERS"
  31. title_pen = turtle.Turtle()
  32. title_pen.speed(0)
  33. title_pen.color("white")
  34. title_pen.penup()
  35. title_pen.setposition(0, 180)
  36. title_pen.write(title, False, align="center", font=("Orbitron", 50, "normal"))
  37. title_pen.hideturtle()
  38.  
  39. #Click to play text in title screen
  40. playgame = "Click P to Play!"
  41. play_pen = turtle.Turtle()
  42. play_pen.speed(0)
  43. play_pen.color("grey")
  44. play_pen.penup()
  45. play_pen.setposition(-60, 100)
  46. play_pen.write(playgame, False, align="left", font=("Arial", 20, "normal"))
  47. play_pen.hideturtle()
  48.  
  49. #Click for options text in title screen
  50. options = "Click O for Options"
  51. option_pen = turtle.Turtle()
  52. option_pen.speed(0)
  53. option_pen.color("grey")
  54. option_pen.penup()
  55. option_pen.setposition(-60, 30)
  56. option_pen.write(options, False, align="left", font=("Arial", 20, "normal"))
  57. option_pen.hideturtle()
  58.  
  59.  
  60. #Click to quit text in title screen
  61. quit = "Click Q to Quit"
  62. quit_pen = turtle.Turtle()
  63. quit_pen.speed(0)
  64. quit_pen.color("grey")
  65. quit_pen.penup()
  66. quit_pen.setposition(-60, -40)
  67. quit_pen.write(quit, False, align="left", font=("Arial", 20, "normal"))
  68. quit_pen.hideturtle()
  69.  
  70.  
  71.  
  72.  
  73. #What is done when u click "O"
  74. def optionsscreen():
  75.     os.system("afplay bottlepop.wav&")
  76.     screen.bgcolor("black")
  77.     screen.title("Options")
  78.     screen.bgpic("")
  79.     title_pen.clear()
  80.     option_pen.clear()
  81.     play_pen.clear()
  82.     quit_pen.clear()
  83.     title = "OPTIONS"
  84.     title_pen.speed(0)
  85.     title_pen.color("white")
  86.     title_pen.penup()
  87.     title_pen.setposition(0, 180)
  88.     title_pen.write(title, False, align="center", font=("Orbitron", 50, "normal"))
  89.     title_pen.hideturtle()
  90.  
  91. #What is done when u click "Q"
  92. def quitscreen():
  93.     exit()
  94.  
  95.  
  96. #What is done when u click "P"
  97. def playscreen():
  98.     os.system("afplay bottlepop.wav&")
  99.     title_pen.clear()
  100.     option_pen.clear()
  101.     play_pen.clear()
  102.     quit_pen.clear()
  103.     global tip
  104.     if tip == 1:
  105.         title = "Try shooting earlier if an enemy is on top since it takes time for the bullet to reach!"
  106.     elif tip == 2:
  107.         title = "You can change gameplay options if you click O in the title screen!"
  108.     elif tip == 3:
  109.         title = "Hold down arrow keys to move your player faster"
  110.     title_pen.speed(0)
  111.     title_pen.color("#C0C0C0")
  112.     title_pen.penup()
  113.     title_pen.setposition(0, 0)
  114.     title_pen.write(title, False, align="center", font=("Arial", 15, "normal"))
  115.     title_pen.hideturtle()
  116.     time.sleep(3)
  117.     title_pen.clear()
  118.     global test
  119.     test = 11
  120.  
  121.  
  122.     if test == 11:
  123.         scorestring.clear()
  124.         global score
  125.         score = 0
  126.  
  127.         screen = turtle.Screen()
  128.         screen.bgcolor("black")
  129.         screen.title("Space Invaders remake")
  130.         screen.bgpic("space_invaders_background.gif")
  131.  
  132.         # Register the shapes
  133.         turtle.register_shape("invader.gif")
  134.         turtle.register_shape("player.gif")
  135.  
  136.         # Border
  137.         border = turtle.Turtle()
  138.         border.speed(0)
  139.         border.color("white")
  140.         border.penup()
  141.         border.setposition(-300, -300)
  142.         border.pendown()
  143.         border.pensize(3)
  144.         for side in range(4):
  145.             border.fd(600)
  146.             border.lt(90)
  147.             border.hideturtle()
  148.  
  149.             # Set the score to 0
  150.             score = 0
  151.  
  152.             # Draw the score
  153.         score_pen = turtle.Turtle()
  154.         score_pen.speed(0)
  155.         score_pen.color("white")
  156.         score_pen.penup()
  157.         score_pen.setposition(-290, 280)
  158.         scorestring = "Score: %s" % score
  159.         score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
  160.         score_pen.hideturtle()
  161.  
  162.         # create player
  163.         player = turtle.Turtle()
  164.         player.color("green")
  165.         player.shape("player.gif")
  166.         player.penup()
  167.         player.speed(0)
  168.         player.setposition(0, -250)
  169.         player.setheading(90)
  170.  
  171.         playerspeed = 15
  172.  
  173.         # Choose a number of enemies
  174.         number_of_enemies = 6
  175.         # Create an empty list of enemies
  176.         enemies = []
  177.  
  178.         # Add enemies to list
  179.         for i in range(number_of_enemies):
  180.             # Create the enemy
  181.             enemies.append(turtle.Turtle())
  182.  
  183.         # The enemy / invader
  184.         for enemy in enemies:
  185.             enemy.color("red")
  186.             enemy.shape("invader.gif")
  187.             enemy.penup()
  188.             enemy.speed(0)
  189.             x = random.randint(-200, 200)
  190.             y = random.randint(100, 260)
  191.             enemy.setposition(x, y)
  192.  
  193.         enemyspeed = 7
  194.  
  195.         # Bullets for user
  196.         bullet = turtle.Turtle()
  197.         bullet.color("yellow")
  198.         bullet.shape("triangle")
  199.         bullet.penup()
  200.         bullet.speed(0)
  201.         bullet.setheading(90)
  202.         bullet.shapesize(0.5, 0.5)
  203.         bullet.hideturtle()
  204.  
  205.         bulletspeed = 25
  206.  
  207.         # Define bullet state
  208.  
  209.         # Ready to fire
  210.         # fire - bullet is firing
  211.         global bulletstate
  212.         bulletstate = "ready"
  213.  
  214.         # Moving the player left and right
  215.  
  216.         def move_left():
  217.             x = player.xcor()
  218.             x -= playerspeed
  219.             if x < -280:
  220.                 x = -280
  221.             player.setx(x)
  222.  
  223.         def move_right():
  224.             x = player.xcor()
  225.             x += playerspeed
  226.             if x > 280:
  227.                 x = 280
  228.             player.setx(x)
  229.  
  230.         def fire_bullet():
  231.             # Declare bulletstate constantly changes so use global
  232.             global bulletstate
  233.             if bulletstate == "ready":
  234.                 os.system("afplay laser.wav&")
  235.                 bulletstate = "fire"
  236.                 # Move the bullet above the player
  237.                 x = player.xcor()
  238.                 y = player.ycor() + 10
  239.                 bullet.setposition(x, y)
  240.                 bullet.showturtle()
  241.  
  242.         # Collision of bullets with enemy pythagorean therom
  243.         def isCollision(t1, t2):
  244.             distance = math.sqrt(math.pow(t1.xcor() - t2.xcor(), 2) + math.pow(t1.ycor() - t2.ycor(), 2))
  245.             if distance < 15:
  246.                 return True
  247.             else:
  248.                 return False
  249.  
  250.             # Keybinds
  251.  
  252.         turtle.listen()
  253.         turtle.onkey(move_left, "Left")
  254.         turtle.onkey(move_right, "Right")
  255.         turtle.onkey(fire_bullet, "space")
  256.  
  257.         # Main game loop
  258.  
  259.         while True:
  260.  
  261.             for enemy in enemies:
  262.                 # move the enemy
  263.                 x = enemy.xcor()
  264.                 x += enemyspeed
  265.                 enemy.setx(x)
  266.  
  267.                 #Boundaries for enemy
  268.                 if enemy.ycor() < -280:
  269.                     player.hideturtle()
  270.                     enemy.hideturtle()
  271.                     print("Game Over")
  272.                     screen.bgcolor("black")
  273.                     screen.title("Game Over")
  274.                     screen.bgpic("gameover.gif")
  275.                     break
  276.  
  277.  
  278.  
  279.  
  280.                 # Boundaries for enemy
  281.                 if enemy.xcor() > 280:
  282.                     # Move all enemies down
  283.                     for e in enemies:
  284.                         y = e.ycor()
  285.                         y -= 40
  286.                         e.sety(y)
  287.                         # Change enemy direction [reverse]
  288.                     enemyspeed *= -1
  289.  
  290.                 if enemy.xcor() < -280:
  291.                     # Move all enemies down
  292.                     for e in enemies:
  293.                         y = e.ycor()
  294.                         y -= 40
  295.                         e.sety(y)
  296.                         # Change enemy direction [reverse]
  297.                     enemyspeed *= -1
  298.  
  299.                     # Check for collision between bullet and enemy
  300.                 if isCollision(bullet, enemy):
  301.                     os.system("afplay explosion.wav&")
  302.                     # Reset the bullet
  303.                     bullet.hideturtle()
  304.                     bulletstate = "ready"
  305.                     bullet.setposition(0, -400)
  306.                     # reset the enemy
  307.                     x = random.randint(-200, 200)
  308.                     y = random.randint(100, 260)
  309.                     enemy.setposition(x, y)
  310.                     # Update the score
  311.                     score += 1
  312.                     scorestring = "Score: %s" % score
  313.                     score_pen.clear()
  314.                     score_pen.write(scorestring, False, align="left", font=("Arial", 14, "normal"))
  315.  
  316.                     # check for collision between player and enemy
  317.                 if isCollision(player, enemy):
  318.                     os.system("afplay two-pop.wav&")
  319.                     player.hideturtle()
  320.                     enemy.hideturtle()
  321.                     print("Game Over")
  322.                     screen.bgcolor("black")
  323.                     screen.title("Game Over")
  324.                     screen.bgpic("gameover.gif")
  325.                     break
  326.  
  327.                 # Moving the bullet
  328.             if bulletstate == "fire":
  329.                 y = bullet.ycor()
  330.                 y += bulletspeed
  331.                 bullet.sety(y)
  332.  
  333.             # Check to see if the bullet has reached top
  334.             if bullet.ycor() > 275:
  335.                 bullet.hideturtle()
  336.                 bulletstate = "ready"
  337.  
  338.  
  339.  
  340. turtle.listen()
  341. turtle.onkey(optionsscreen, "o")
  342. turtle.onkey(quitscreen, "q")
  343. turtle.onkey(playscreen, "p")
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373. turtle.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement