2016-07-07 10 views
0

So bin ich neu in Pygame und ich machte ein Programm, das einen Ball nach der Schwerkraft springen wird, und es funktioniert perfekt, aber jetzt möchte ich in der Lage sein, unendlich von ihnen zu machen, indem man einen erstellt wo auch immer ich klicke. Ich weiß, wie man die Koordinaten des Klicks erhält, aber ich weiß nicht, wie man mehrere Kreise erzeugt. Würde ich irgendwie eine Funktion oder eine Klasse benutzen? Hier ist mein Code, tut mir leid, wenn es ein bisschen unordentlich ist.Erstellen mehrerer Instanzen von springenden Ball pygame

import pygame,random,time 
pygame.init() 
infoObject = pygame.display.Info() 
side = pygame.display.Info().current_h 
side = side - ((1.0/12)*(pygame.display.Info().current_h)) 
side = int(side) 
screen = pygame.display.set_mode([side, side]) 
pygame.display.set_caption("") 
clock = pygame.time.Clock() 
done = False 
BLACK = (0,0,0) 
WHITE = (255,255,255) 
RED = (250,30,25) 
GREEN = (25, 240, 25) 
YELLOW = (250,240,25) 
FPS = 60 
x=100 
y=100 
t=0 
r=10 
direction=0 
count = 0 
def faller(x,y,color,size): 
    pygame.draw.circle(screen,color,(x,y),size,0) 
def reverse(): 
    global t,direction 
    if direction == 0: 
     direction = 1 
     t=t*4/5 
    elif direction == 1: 
     direction = 0 
     t=1 
while not done: 
     clock.tick(FPS) 
     events = pygame.event.get() 
     screen.fill(BLACK) 
     for event in events: 
      if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): 
       done = True 
     if direction==0: 
      t+=1 
      y+=int((9.8/FPS)*t) 
     elif direction==1: 
      t-=1 
      y-=int((9.8/FPS)*t) 
     if t==0: 
      reverse() 
     if y+r>side: 
      y=side-r 
      faller(x,y,RED,r) 
      reverse() 
     else: 
      faller(x,y,RED,r) 
     if y==side-r: 
      count+=1 
     else: 
      count=0 
     if count>=3: 
      done = True 
     pygame.display.flip() 
pygame.quit() 
+0

Ja, machen Sie sich bereit, viel zu lernen! : P – rtmh

+0

[hier] (http://www.tutorialspoint.com/python/python_functions.htm) und [hier] (http://www.learnpython.org/en/Functions) und [hier] (https://docs.python.org/3/tutorial/controlflow.html#defining-functions) sind Ressourcen über Funktionen – rtmh

+0

[hier] (https://docs.python.org/2/tutorial/classes.html) und [hier] (http://www.tutorialspoint.com/python/python_classes_objects.htm) und [hier] (https://www.codecademy.com/courses/python-intermediate-en-WL8e4/0/1?curriculum_id=4f89dab3d788890003000096) sind Websites über Klassen. Ich habe diese in ein paar Minuten googeln. Es ist eine gute Fähigkeit, die Sie in erster Linie nutzen sollten, wenn Sie programmieren lernen. Die meisten Informationen sind bereits da draußen; Die Fähigkeit lernt zu lernen. Viel Glück. – rtmh

Antwort

1

Ich würde Sie ermutigen, mit Klassen und Methoden zu experimentieren. Sobald Sie eine Klasse Ball haben, können Sie eine Liste der Ball-Objekte erstellen und sie alle auf einmal verarbeiten. Sie können dann die Listenmethode .append() verwenden, um einen neuen Ball per Mausklick hinzuzufügen.

Ich würde vorschlagen, Sie Variablen verwenden, wie zum Beispiel: pos_x, pos_y, vel_x, vel_y,

Das wird die Dinge viel einfacher zu verstehen, wenn Sie Kollisionen umsetzen wollen. Vergessen Sie nicht, Ihren Code zu kommentieren :)

Verwandte Themen