Skip to content

Commit 223b382

Browse files
committed
Add example enumeration
1 parent 6346b01 commit 223b382

File tree

3 files changed

+63
-20
lines changed

3 files changed

+63
-20
lines changed

‎py2d/examples/Math.py‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pygame
22
from pygame.locals import *
33

4-
from py2d.Math import *
4+
import py2d.Math
55
import py2d.examples.Main
66

77
class Decompose(py2d.examples.Main.Example):
@@ -31,7 +31,7 @@ def __init__(self, runner):
3131
self.runner = runner
3232
self.title = "Polygon Decomposition"
3333

34-
self.polys = [Polygon() for i in range(10)]
34+
self.polys = [py2d.Math.Polygon() for i in range(10)]
3535
self.active_poly = 0
3636

3737
self.decomp = []
@@ -96,7 +96,7 @@ def draw_poly(self, poly, color, fill):
9696
def mouse_down(self, pos, button):
9797
if button == 1:
9898

99-
self.polys[self.active_poly].add_point(Vector(pos[0], pos[1]))
99+
self.polys[self.active_poly].add_point(py2d.Math.Vector(pos[0], pos[1]))
100100

101101
self.update_decomp()
102102

@@ -109,7 +109,7 @@ def update_decomp(self):
109109
def debug_point(p,c,t):
110110
self.debug_points.append((p,c,t))
111111

112-
self.decomp = Polygon.convex_decompose(self.polys[0], holes, debug_callback=debug_point)
112+
self.decomp = py2d.Math.Polygon.convex_decompose(self.polys[0], holes, debug_callback=debug_point)
113113
else:
114114
self.decomp = []
115115

@@ -135,7 +135,7 @@ class Offset(py2d.examples.Main.Example):
135135
def __init__(self, runner):
136136
self.runner = runner
137137
self.title = "Polygon Offset"
138-
self.poly = Polygon()
138+
self.poly = py2d.Math.Polygon()
139139

140140
self.update_offset()
141141

@@ -212,7 +212,7 @@ def draw_poly(self, poly, color):
212212

213213
def mouse_down(self, pos, button):
214214
if button == 1:
215-
self.poly.add_point(Vector(pos[0], pos[1]))
215+
self.poly.add_point([py2d.Math.Vector(pos[0], pos[1])])
216216
self.update_offset()
217217

218218
def update_offset(self):
@@ -223,8 +223,8 @@ def debug_point(color):
223223
return lambda p, c, t: self.debug_points.append((p,color,t))
224224

225225
if len(self.poly) > 2:
226-
self.shrink = Polygon.offset([self.poly.clone_ccw()], -self.amount, self.tip_decorator, debug_callback=debug_point((255,0,0)))
227-
self.grow = Polygon.offset([self.poly.clone_ccw()], self.amount, self.tip_decorator, debug_callback=debug_point((0,255,0)))
226+
self.shrink = py2d.Math.Polygon.offset([self.poly.clone_ccw()], -self.amount, self.tip_decorator, debug_callback=debug_point((255,0,0)))
227+
self.grow = py2d.Math.Polygon.offset([self.poly.clone_ccw()], self.amount, self.tip_decorator, debug_callback=debug_point((0,255,0)))
228228
else:
229229
self.shrink = []
230230
self.grow = []
@@ -259,11 +259,11 @@ def __init__(self, runner):
259259
self.title = "Boolean Operations"
260260

261261

262-
#self.poly_a = Polygon.from_tuples([(0,0), (4,0), (4,4), (0, 4)])
263-
#self.poly_b = Polygon.from_tuples([(2,2), (3,6), (1,6)])
262+
#self.poly_a = py2d.Math.Polygon.from_tuples([(0,0), (4,0), (4,4), (0, 4)])
263+
#self.poly_b = py2d.Math.Polygon.from_tuples([(2,2), (3,6), (1,6)])
264264

265-
self.poly_a = Polygon()
266-
self.poly_b = Polygon()
265+
self.poly_a = py2d.Math.Polygon()
266+
self.poly_b = py2d.Math.Polygon()
267267

268268
self.active_poly = True
269269
self.bool = []
@@ -335,16 +335,16 @@ def draw_poly(self, poly, color):
335335
def mouse_down(self, pos, button):
336336
if button == 1:
337337
if self.active_poly:
338-
self.poly_a.add_point(Vector(pos[0], pos[1]))
338+
self.poly_a.add_point(py2d.Math.Vector(pos[0], pos[1]))
339339
else:
340-
self.poly_b.add_point(Vector(pos[0], pos[1]))
340+
self.poly_b.add_point(py2d.Math.Vector(pos[0], pos[1]))
341341

342342
self.update_bool()
343343

344344
def update_bool(self):
345345
if len(self.poly_a) > 2 and len(self.poly_b) > 2:
346346
try:
347-
self.bool = Polygon.boolean_operation(self.poly_a, self.poly_b, self.mode)
347+
self.bool = py2d.Math.Polygon.boolean_operation(self.poly_a, self.poly_b, self.mode)
348348
except IndexError:
349349
self.bool = []
350350
else:

‎py2d/examples/Navigation.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,15 @@ def update_nav(self):
154154

155155

156156
class Walker(py2d.examples.Main.Example):
157-
"""Navigation mesh generation sample
157+
"""Navigation walker sample
158158
159159
Draw a polygon and holes and observe the generated navigation mesh.
160160
The generated mesh will be colored light gray with the connectivity shown in cyan.
161161
162162
You can switch active polygons with the number keys 0-9.
163163
164+
Then, use B and E to set start and end positions for a walker object
165+
164166
The polygons are numbered as follows:
165167
0 The Main Polygon (color: green)
166168
1-9 Holes in the Main polygon (color: red)

‎run_examples.py‎

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,53 @@
33
from py2d.examples.Main import ExampleRunner
44
from optparse import OptionParser
55

6+
import os.path, pkgutil
7+
import py2d.examples
8+
import inspect
9+
import py2d.examples.Main
10+
11+
def list_examples(startpath):
12+
13+
pkgs = [name for _,name,_ in pkgutil.iter_modules([startpath])]
14+
15+
for pkg in pkgs:
16+
importpath = startpath.replace("/",".") + pkg
17+
package = __import__(importpath, globals(), locals(), [importpath], -1)
18+
19+
for name, obj in inspect.getmembers(package):
20+
if inspect.isclass(obj):
21+
if issubclass(obj, py2d.examples.Main.Example):
22+
desc = obj.__doc__
23+
if desc:
24+
desc = desc.split("\n")[0]
25+
print "%s.%s:\t%s" % (pkg, name, desc)
26+
27+
def example_from_string(self, example_name):
28+
import inspect
29+
30+
31+
package_name, class_name = example_name.rsplit('.', 1)
32+
package = __import__(package_name, globals(), locals(), [class_name], -1)
33+
34+
cls = next((c[1] for c in inspect.getmembers(package, inspect.isclass) if c[0] == class_name))
35+
36+
return cls(self)
37+
38+
39+
640
if __name__ == "__main__":
741

842
op = OptionParser()
9-
op.add_option("-e", "--example", dest="example", default="Logo.Logo", help="Start with example EXAMPLE", metavar="EXAMPLE")
43+
op.add_option("-e", "--example", dest="example", help="Start with example EXAMPLE", metavar="EXAMPLE")
1044
(opt, args) = op.parse_args()
1145

12-
er = ExampleRunner()
13-
er.example = er.example_from_string(opt.example)
14-
er.main_loop()
46+
47+
if opt.example:
48+
49+
er = ExampleRunner()
50+
er.example = er.example_from_string(opt.example)
51+
er.main_loop()
52+
53+
else:
54+
print "Please specify an example with the -e option!\nValid options:\n"
55+
list_examples("py2d/examples/")

0 commit comments

Comments
 (0)