fork download
  1. from tkinter import *
  2. import random
  3.  
  4. root=Tk()
  5.  
  6. #Appearence
  7. RTitle=root.title("Protect'em")
  8. RWidth=400
  9. RHeight=500
  10. root.geometry(("%dx%d")%(RWidth,RHeight))
  11.  
  12. fr0 = Frame(root,bg="#DEB887",width=210,height=500,bd=10)
  13. can = Canvas(fr0,bg="#FFF8DC",width=200,height=500)
  14. fr1 = Frame(root,bg="lightblue",width=190,height=500,bd=12)
  15. fr0.pack(side="left")
  16. can.pack()
  17. fr1.pack(side="right")
  18.  
  19.  
  20.  
  21. inv = Label(fr1,text="Move: \nLeft, Right.\n Shoot:\n Space\nYou've got 5 lifes\n Shoot to START",
  22. font = "Arial 15")
  23. inv.grid(row=0)
  24.  
  25. #/Appearence
  26.  
  27. xy = [(90,400),(110,400),(110,420),(130,420),(130,440),(110,440),(110,460),
  28. (130,460),(130,480),(70,580),(70,460),(90,460),(90,440),
  29. (70,440),(70,420),(90,420)]
  30. car = can.create_polygon(xy,fill="red",outline="black")
  31. car_place = can.coords(car)
  32.  
  33.  
  34. class Hero():
  35.  
  36. def __init__ (self):
  37. self.points = 0
  38. self.car_shoot_number = 1
  39. self.hero_lifes = 5
  40.  
  41. def car_move_left(self,event):
  42. self.car_place = can.coords(car)
  43. if self.car_place[18]>=10:
  44. self.car_shoot_number -= 1
  45. can.move(car,-70,0)
  46.  
  47.  
  48. def car_move_right(self,event):
  49. self.car_place = can.coords(car)
  50. if self.car_place[6]<200:
  51. self.car_shoot_number += 1
  52. can.move(car,70,0)
  53.  
  54. class Enemy(Hero):
  55. def create_rock(self):
  56. self.rocktype = random.randint(0,2)
  57. if self.rocktype == 0:
  58. self.rock = can.create_rectangle(30,10,50,30,fill="black",
  59. outline="green")
  60.  
  61. elif self.rocktype == 1:
  62. self.rock = can.create_rectangle(90,10,110,30,fill="black",
  63. outline="green")
  64.  
  65. elif self.rocktype == 2:
  66. self.rock = can.create_rectangle(150,10,170,30,fill="black",
  67. outline="darkgreen")
  68. else: print("it cant be")
  69.  
  70. def delete_rock(self):
  71. can.delete(self.rock)
  72.  
  73.  
  74. def endgame(self):
  75. root.destroy()
  76. self.root = Tk()
  77. self.endsight = Label(self.root, text = "Game Is Over\n Your Score:", font="Arial 20")
  78. self.endsight1 = Label(self.root,text = hero.points, font="Arial 20")
  79. self.endsight1.pack(side="bottom")
  80. self.endsight.pack(side="top")
  81. self.root.mainloop()
  82.  
  83. def enemymove(self):
  84. can.move(self.rock,0,20)
  85. can.after(30,self.enemymove)
  86. self.rock_place = can.coords(self.rock)
  87. if self.rock_place[1]==410 and hero.car_shoot_number == self.rocktype:
  88. self.delete_rock()
  89. enemy.create_rock()
  90. hero.hero_lifes -= 1
  91. #print(hero.hero_lifes)
  92. elif self.rock_place[1]>470:
  93. hero.hero_lifes -= 1
  94. # print(hero.hero_lifes)
  95. self.delete_rock()
  96. enemy.create_rock()
  97. if hero.hero_lifes == 0:
  98. self.endgame()
  99.  
  100.  
  101. def shootem(self,event):
  102. if hero.car_shoot_number == self.rocktype:
  103. hero.points += 1
  104. poin.addtext(hero.points)
  105. #print(self.points)
  106. can.delete(self.rock)
  107. enemy.create_rock()
  108.  
  109.  
  110. class Points():
  111. def __init__ (self):
  112. self.point = Text(fr1, width = 10, height = 1)
  113. self.point.grid(row=1)
  114.  
  115.  
  116. def addtext(self, point):
  117. #print(enemy.points)
  118. self.point.delete(1.0,END)
  119. self.point.insert(END,point)
  120.  
  121.  
  122. hero=Hero()
  123. enemy = Enemy()
  124. enemy.create_rock()
  125. enemy.enemymove()
  126. poin = Points()
  127.  
  128. root.bind("<space>",enemy.shootem)
  129. root.bind("<Left>",hero.car_move_left)
  130. root.bind("<Right>",hero.car_move_right)
  131.  
  132. mainloop()
Runtime error #stdin #stdout #stderr 0.06s 28296KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 4, in <module>
  File "/usr/lib/python3.4/tkinter/__init__.py", line 1854, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable