Merge pull request #1334 from PySimpleGUI/Dev-latest

Dev latest
This commit is contained in:
MikeTheWatchGuy 2019-04-22 19:24:55 -04:00 committed by GitHub
commit a57d995717
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,60 @@
import PySimpleGUI as sg
import pymunk
import random
"""
Demo that shows integrating PySimpleGUI with the pymunk library. This combination
of PySimpleGUI and pymynk could be used to build games.
Note this exact same demo runs with PySimpleGUIWeb by changing the import statement
"""
class Ball():
def __init__(self, x, y, r, *args, **kwargs):
mass = 10
self.body = pymunk.Body(mass,
pymunk.moment_for_circle(mass, 0, r, (0, 0))) # Create a Body with mass and moment
self.body.position = x, y
self.shape = pymunk.Circle(self.body, r, offset=(0, 0)) # Create a box shape and attach to body
self.shape.elasticity = 0.95
self.shape.friction = 0.9
self.gui_circle_figure = None
graph_elem = sg.Graph((400, 400), (0, 400), (400, 0), enable_events=True, key='_GRAPH_', background_color='lightblue')
layout = [[sg.Text('Ball Test', tooltip='Tips')],
[graph_elem],
[sg.Button('Exit')]]
window = sg.Window('Window Title', layout, ).Finalize()
space = pymunk.Space()
space.gravity = 0, 1000
# ground
ground_body = pymunk.Body(body_type=pymunk.Body.STATIC)
ground_shape = pymunk.Segment(ground_body, (0, 400), (400, 400), 0.0)
ground_shape.friction = 0.9
ground_shape.elasticity = 0.95
space.add(ground_shape)
arena_balls = []
for i in range(1, 300):
x = random.randint(100, 300)
y = random.randint(100, 300)
r = random.randint(5, 10)
ball = Ball(x, y, r)
ball.gui_circle_figure = graph_elem.DrawCircle((x, y), r, fill_color='black', line_color='red')
arena_balls.append(ball)
space.add(ball.body, ball.shape)
while True: # Event Loop
event, values = window.Read(timeout=0)
# print(event, values)
if event in (None, 'Exit'):
break
space.step(0.01)
for ball in arena_balls:
graph_elem.RelocateFigure(ball.gui_circle_figure, ball.body.position[0], ball.body.position[1])
window.Close()

View File

@ -0,0 +1,60 @@
import PySimpleGUIWeb as sg
import pymunk
import random
"""
Demo that shows integrating PySimpleGUI with the pymunk library. This combination
of PySimpleGUI and pymynk could be used to build games.
Note this exact same demo runs with PySimpleGUI (tkinter) by changing the import statement
"""
class Ball():
def __init__(self, x, y, r, *args, **kwargs):
mass = 10
self.body = pymunk.Body(mass,
pymunk.moment_for_circle(mass, 0, r, (0, 0))) # Create a Body with mass and moment
self.body.position = x, y
self.shape = pymunk.Circle(self.body, r, offset=(0, 0)) # Create a box shape and attach to body
self.shape.elasticity = 0.95
self.shape.friction = 0.9
self.gui_circle_figure = None
graph_elem = sg.Graph((400, 400), (0, 400), (400, 0), enable_events=True, key='_GRAPH_', background_color='lightblue')
layout = [[sg.Text('Ball Test', tooltip='Tips')],
[graph_elem],
[sg.Button('Exit')]]
window = sg.Window('Window Title', layout, ).Finalize()
space = pymunk.Space()
space.gravity = 0, 1000
# ground
ground_body = pymunk.Body(body_type=pymunk.Body.STATIC)
ground_shape = pymunk.Segment(ground_body, (0, 400), (400, 400), 0.0)
ground_shape.friction = 0.9
ground_shape.elasticity = 0.95
space.add(ground_shape)
arena_balls = []
for i in range(1, 300):
x = random.randint(100, 300)
y = random.randint(100, 300)
r = random.randint(5, 10)
ball = Ball(x, y, r)
ball.gui_circle_figure = graph_elem.DrawCircle((x, y), r, fill_color='black', line_color='red')
arena_balls.append(ball)
space.add(ball.body, ball.shape)
while True: # Event Loop
event, values = window.Read(timeout=0)
# print(event, values)
if event in (None, 'Exit'):
break
space.step(0.01)
for ball in arena_balls:
graph_elem.RelocateFigure(ball.gui_circle_figure, ball.body.position[0], ball.body.position[1])
window.Close()