Code: Alles auswählen
from pg_start import *
from time import clock
class Ball(pygame.sprite.Sprite):
def __init__(self,x,y):
pygame.sprite.Sprite.__init__(self)
self.image=load_image("C:/Users/Username/Desktop/Spiele/Physiksimulation/Ball.png",-1)
self.rect=self.image.get_rect(center=(900,900))
self.screenrect=pygame.display.get_surface().get_rect()
self.keystate="NOTPRESSED"
self.T=0
self.Sx,self.Sy=0,0
self.x,self.y=x,y
def update(self,events):
if any(pygame.mouse.get_pressed()):
if self.rect.collidepoint(pygame.mouse.get_pos()):
self.keystate="PRESSED"
self.rect.center=pygame.mouse.get_pos()
self.T=clock()
self.Sx,self.Sy=pygame.mouse.get_pos()[0],pygame.mouse.get_pos()[1]
elif not self.rect.collidepoint(pygame.mouse.get_pos()):
if self.keystate=="PRESSED":
self.rect.center=pygame.mouse.get_pos()
else:
self.keystate="NOTPRESSED"
if self.Sx and self.Sy and self.T:
self.x=(pygame.mouse.get_pos()[0]-self.Sx)/(clock()-self.T)
self.y=(pygame.mouse.get_pos()[1]-self.Sy)/(clock()-self.T)
self.Sx,self.Sy,self.T=0,0,0
if not self.screenrect.contains(self.rect.move(self.x,0)):
self.x=-self.x
if not self.screenrect.contains(self.rect.move(0,self.y)):
self.y=-self.y
self.rect.move_ip(self.x,self.y)
def main():
screen,clock=init_general((0,0),FULLSCREEN,32)
b_g = pygame.sprite.GroupSingle()
ball=Ball(0,0)
b_g.add(ball)
while True:
clock.tick(10)
events=pygame.event.get()
pygame.key.set_repeat(100,100)
for event in events:
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
exit()
screen.fill((0,0,0))
b_g.update(events)
b_g.draw(screen)
pygame.display.flip()
main()
1. Der Ball wird nach einiger Zeit herumschleudern viel zu schnell. Man kann ihn kaum sehen. (Nur mit niedriger Framerate)
2. Der Ball prallt nich an den Ecken des Bldschirms ab, sondern schon davor, da die Bewegung von x,y zu groß wäre. Wie kann ich diese Probleme beheben
Danke im Vorraus (: