# pgzero-mausjoystick.py (22.01.2023-13:00) import pgzrun, time, math, random from pgzhelper import * #WIDTH = 1920//2-150; HEIGHT = 1024//2-70 #WIDTH = 1920; HEIGHT = 1024 WIDTH = 800; HEIGHT = 600 mitte_pos = WIDTH//2, HEIGHT//2 alien = Actor('kugel-blau.png') mitte = Actor('mitte.png', center = mitte_pos) diamond = Actor('diamond.png') maus = Actor('gemorange-10x10.png') cnt=0; treffer = 0; fehler = 0; startzeit = 0; weg = 0 is_fullscreen=False def draw(): global cnt, treffer, fehler, startzeit, weg, is_fullscreen screen.clear() if start: cnt += 1 screen.fill((128, 128, 0)) zeit = time.time()-startzeit laufzeit = f'{zeit:5.1f} ms' screen.draw.text(laufzeit, (100,3), color='yellow', fontsize=30) #screen.draw.text(str(cnt)+" Frames", (200,3), color='yellow', fontsize=20) screen.draw.text(f'{weg:7.1f} Pixel', (200,3), color='yellow', fontsize=30) screen.draw.text(str(treffer)+" Treffer", (600,3), color='yellow', fontsize=30) screen.draw.text(str(fehler)+" Fehler", (400,3), color='yellow', fontsize=30) screen.draw.text("(c)ASigismund mit Pygame Zero", (770,3), color='yellow', fontsize=20) else: startzeit = time.time() alien.pos = WIDTH-100, HEIGHT-200 diamond.pos = 100, 100 maus.pos = 0,0 alien.pos = WIDTH-100, HEIGHT-200 cnt=0; treffer = 0; fehler = 0 screen.fill((128, 0, 0)) screen.draw.text("Maus-Joystick", (260,30), color='yellow', fontsize=40) screen.draw.text("Bewege den Mauszeiger in den Kreis hinein!", (220,70), color='yellow', fontsize=20) screen.draw.text("Dann startet die Challange!", (280,110), color='yellow', fontsize=20) screen.draw.text("Durch die Position des Mauszeigers zum Kreismittelpunkt wird die Bewegung der Kugel bestimmt.", (100,150), color='yellow', fontsize=20) screen.draw.text("Sammle die Diamanten ein ohne den Fensterrand zu berühren.", (220,290), color='yellow', fontsize=20) screen.draw.text("Mit Rechts-Klick wird das Spiel neu gestartet.", (270,330), color='yellow', fontsize=20) screen.draw.text("(c)ASigismund mit Pygame Zero", (299,370), color='yellow', fontsize=20) screen.draw.circle( mitte.pos, 30, 'white') alien.draw() if start: diamond.draw() if not is_fullscreen: toggle_fullscreen() is_fullscreen = True dx = 0; dy = 0 start = False def update(): global dx, dy, start, treffer, fehler, weg if start: abstand = maus.distance_to(mitte) winkel = maus.angle_to(mitte) if alien.distance_to(diamond)<25: treffer += 1 diamond.pos = random.randint(30,WIDTH-30), random.randint(30,HEIGHT-30) weg += math.sqrt((alien.pos[0]-diamond.pos[0])**2 + (alien.pos[1]-diamond.pos[1])**2) dy = 0.05 * abstand * math.sin(winkel/180*math.pi) dx = 0.05 * abstand * math.cos(winkel/180*math.pi) alien.left -= dx alien.top += dy if alien.right > WIDTH: dx = - dx fehler+=1 alien.right = WIDTH-5 if alien.left < 0: alien.left = 0+5 fehler+=1 dx = -dx if alien.bottom > HEIGHT: dy = - dy fehler+=1 alien.bottom = HEIGHT-5 if alien.top < 0: alien.top = 0+5 fehler+=1 dy = -dy if keyboard.x: print(start, start1,dx,dy) time.sleep(1.9) if keyboard.space: alien.pos = 400, 300 dx = 0 dy = 0 if keyboard.escape: exit() if keyboard.f: toggle_fullscreen() def on_mouse_move(pos): global start maus.pos = pos if not start and abs(maus.distance_to(mitte))<20: start = True print("Start") else: pass def on_mouse_down(pos,button): global start if button==mouse.LEFT: maus.pos = 100, 70 dx = dy = 0 elif button==mouse.RIGHT: start=False pgzrun.go()