Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter, math, random
- canvas = tkinter.Canvas(width=600, height=600, bg='white')
- canvas.pack()
- class lopta:
- """class for lopta"""
- def __init__(self,x=100,y=100,r=20,color='blue',rot=45,speed=5,objType='ball'):
- self.x=x
- self.y=y
- self.smerx=0
- self.smery=0
- self.r=r
- self.color=color
- self.objType=objType
- if self.objType == 'ball':
- self.ball = canvas.create_oval(x-r, y-r, x+r, y+r, fill=self.color)
- elif self.objType == 'sqr':
- self.ball = canvas.create_rectangle(x-r, y-r, x+r, y+r, fill=self.color)
- self.rot=rot
- self.speed=speed
- def __del__(self):
- canvas.delete(self.ball)
- def move(self):
- self.smerx=math.sin(math.radians(self.rot))*self.speed
- self.smery=math.cos(math.radians(self.rot))*self.speed
- self.x+=self.smerx
- self.y+=self.smery
- if self.x > 600-self.r or self.x < 0+self.r:
- self.rot=-self.rot
- if self.y > 600-self.r or self.y < 0+self.r:
- print(self.rot)
- self.rot=-self.rot+180
- print('B'+str(self.rot))
- canvas.move(self.ball,self.smerx,self.smery)
- def changeSpeed(self,speed):
- self.speed+=speed
- def changeDirection(self,rot):
- self.rot+=rot
- def checkBall(self,other):
- if math.sqrt(math.pow(self.x-other.x,2)+math.pow(self.y-other.y,2)) < self.r+other.r:
- return True
- else:
- return False
- def checkSqr(self,other):
- if self.x > other.x-other.r and self.x < other.x+other.r and self.y > other.y-other.r and self.y < other.y+other.r:
- return True
- else:
- return False
- def checkBallSqr(self,other):
- if math.sqrt(math.pow(self.x-other.x,2)+math.pow(self.y-other.y,2)) < self.r + math.sqrt(math.pow(other.r,2)*2):
- return True
- else:
- return False
- def press(tuk):
- #print(tuk.keysym)
- if tuk.keysym == 'Up':
- jano.changeSpeed(5)
- elif tuk.keysym == 'Down':
- jano.changeSpeed(-5)
- if tuk.keysym == 'Left':
- jano.changeDirection(+15)
- elif tuk.keysym == 'Right':
- jano.changeDirection(-15)
- jano = lopta()
- palo = lopta(250,100,50,'green', 70, 10,'ball')
- myList = []
- for i in range(10):
- x = lopta(random.randint(100,500), random.randint(100,500), random.randint(5,100), random.choice(['red','blue','green']), random.randint(0,360), random.randint(1,10),'ball')
- myList.append(x)
- canvas.bind_all('<Key>',press)
- def loop():
- jano.move()
- palo.move()
- canvas.update()
- for i in range(len(myList)):
- if jano.checkBall(adam) or jano.checkBall(adam):
- canvas.after(500,loop)
- else:
- canvas.after(5,loop)
- loop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement