import pygame from random import uniform import numpy as np from numpy import sign from scipy.spatial import cKDTree def board(screen,xsc,sizey,bloblist,struc): #Funktion die das Board in jeder Iteration neu zeichnet i=0 k=0 pinc=0 while (i1: # Verhindert Modi groesser 1 mode=1 while i=(sizex-5): #rechtsseitiger Rand ball[2]=ball[2]*(-1) if ball[0]<=5: #linksseitiger Rand ball[2]=ball[2]*(-1) if mode!=0: #Modus Kontrolle (0= Board-Mode, 0!= Testbench) if ball[1]>=(sizey-5): #unterer Rand (nur in Testbench) ball[3]=ball[3]*(-1) if ball[1]<=(5): #oberer Rand (nur in Testbench) ball[3]=ball[3]*(-1) #----------------------Pin--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if mode ==0: #Modus Kontrolle (0= Board-Mode, 0!= Testbench) d,j= tree.query([ball[0],ball[1]]) #dursucht den Pin-Tree nach naechstem Pin if d =0: #check ob beide Impulse aufeinander zu zeigen if sign(coliimpy)*sign(impimpy) >=0: coliimpx = (((ball[2]-loballs[g[1]][2])*colisionX + (ball[3]-loballs[g[1]][3])*colisionY)*colisionX)/(colisionX**2+colisionY**2) # dezentrale Kollision coliimpy = (((ball[2]-loballs[g[1]][2])*colisionX + (ball[3]-loballs[g[1]][3])*colisionY)*colisionY)/(colisionX**2+colisionY**2) loballs[g[1]][2]=loballs[g[1]][2]+0.5*coliimpx #Impuls neu zuweisung loballs[g[1]][3]=loballs[g[1]][3]+0.5*coliimpy ball[2]=ball[2]-coliimpx #Impuls neu zuweisung ball[3]=ball[3]-coliimpy #----------------------Fach-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if mode ==0: #Modus Kontrolle (0= Board-Mode, 0!= Testbench) if ball[1]>=(sizey-40): #Zaehlung der Kugel im Fach c=int(ball[0]/(sizex/(struc+1)))-((struc)/2) zahlen=zahlen + " " + str(c) + " " #----------------------Endkriterien---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if mode ==0: #Modus Kontrolle (0= Board-Mode, 0!= Testbench) loballs = [ ball for ball in loballs if ball[1]