une façon que vous pouvez obtenir les coordonnées est assez facilement ceci:
y = int(math.cos(x/70) * 30 + surface.get_height()/2)
en supposant que vous utilisez une résolution de 640x480, il environ décrire votre chemin
une autre façon serait de faire un code pygame pour dessiner le chemin, et le stocker comme une liste que nous pouvons appeler 'chemin' par exemple. alors vous pouvez obtenir des coordonnées x y correspondant coordonnées en disant
path[x]
le code que vous voulez pourrait ressembler à ceci:
path = list(0 for x in range(screen.get_width())) #make every y to 0 originally
while not <exit condition>:
if pygame.mouse.get_pressed()[0]: #if lmb is pressed
mpos = pygame.mouse.get_pos()
x, y = mpos[0], mpos[1] #redundant, but for demonstrating
path[x] = y #so this will map y coordinates to x coordinates
draw_path(screen, path) #some function to draw you path, so its easier to make
bien sûr theres quelques questions que vous devez répondre, comme si coordonnée n'a pas été mappé, il sera 0 et votre balle ne bougera pas très lisse
Vous pouvez générer la liste 'chemin' en utilisant cette fonction 'cos' aussi, comme cela;
path = []
for x in range(len(screen.get_width())):
y = int(math.cos(x/70) * 30 + surface.get_height()/2)
path.append(y)
aussi comme mizipzor dit que vous aurez ne pas ajuster la balle il ressemble à son roulement sur le dessus de la courbe au lieu de travers elle
=)
C'est le problème. Je ne connais pas les coordonnées de chaque point du chemin. Y a-t-il un moyen d'automatiser cela? – Marconi
Je vois, bien la voie évidente maintenant est de mettre à jour votre réponse avec comment le chemin est généré. Comment dessinez-vous une ligne qui pointe que vous ne connaissez pas? Utilisez-vous une bibliothèque? – Mizipzor
pygame est la seule dépendance mais voici ce que j'ai fait: j'ai éditer l'image et dessiner tracer le chemin que je veux avec une ligne rouge puis dans pygame j'ai scanné les pixels de gauche à droite puis de haut en bas. chaque fois que je frappe un pixel rouge, j'enregistre ses coordonnées. – Marconi