Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / simulator / pgu-0.18 / docs / tilevid4.html
1 <html>
2 <head>
3 <title>tutorial on how to add in tile hit handlers, set up groups and agroups</title>
4 <style type='text/css'><!--
5 .sections { 
6         border: 1px solid black;
7         background: #fef790;
8         margin-left: 8px;
9         }
10         
11 .sections th {
12         background: #fde42d; 
13         }
14         
15 .sections .h1 {
16         padding: 2px;
17         padding-left: 0px;
18         }
19 .sections .h2 {
20         padding: 2px;
21         padding-left: 16px;
22         }
23 .sections .h3 {
24         padding: 2px;
25         padding-left: 32px;
26         }
27 .sections .h4 {
28         padding: 2px;
29         padding-left: 48px;
30         }
31         
32 .sections .h5 {
33         padding: 2px;
34         padding-left: 64px;
35         }
36 .sections .h6 {
37         padding: 2px;
38         padding-left: 72px;
39         }
40
41 .wiki h1, .wiki h2, .wiki h3, .wiki h4, .wiki h5, .wiki h6 {
42         border: 0px;
43         padding: 0px;
44         background: none;
45         border-bottom: 1px solid #bbbbbb;
46
47         }
48         
49 .wiki div.h1 {
50     }
51 .wiki div.h2 {
52     }
53     
54 .wiki dt {
55     font-style: italic;
56     }
57     
58 .wiki dd,dd,p.dd {
59     font-style: normal;
60     margin-left: 48px;
61     margin-top: 0px;
62     margin-bottom: 8px;
63     display: block;
64     }
65     
66 .wiki h3 {
67     margin-left: 48px; 
68     }
69 .wiki div.h3 {
70     margin-left: 48px;
71     }
72         
73 .wiki code, .wiki pre {
74     background: #eeeeee;
75     padding: 4px;
76     border: 1px dashed #888888;
77     }
78     
79     
80 .wiki table {
81     border-top: 1px solid #888888;
82     border-left: 1px solid #888888;
83     border-spacing: 0px; border-collapse: collapse;
84     }
85 .wiki td {
86     border-bottom: 1px solid #888888;
87     border-right: 1px solid #888888;
88     padding: 3px;
89     }
90 .wiki th {
91     background: #eeeeee;
92     border-bottom: 1px solid #888888;
93     border-right: 1px solid #888888;
94     padding: 3px;
95     }
96
97 -->
98 </style>
99
100 </head>
101 <body>
102 <div align='center'>
103
104 <table cellpadding=8><tr><td>
105 <a href='http://www.imitationpickles.org/pgu/'><img src='skin/logo.gif' alt="Phil's pyGame Utilities" border=0></a>
106 <td style='font-size:48px'>Documentation
107 </table>
108
109 </div>
110
111 <hr width=500 align=center>
112
113 <table width='100%'><tr><td valign=top width=120 style='padding-right:6px;border-right: 1px solid black;'>
114 <a href='index.html'>Overview</a><br><br>
115 <strong>Scripts</strong><br>
116 <a href="tileedit.html">tileedit</a>
117  | <a href="leveledit.html">leveledit</a>
118  | <a href="tganew.html">tganew</a>
119  | <a href="levelfancy.html">levelfancy</a>
120 <br><br>
121 <strong>Reference</strong><br>
122 <a href="algo.html">algo</a>
123  | <a href="ani.html">ani</a>
124  | <a href="engine.html">engine</a>
125  | <a href="fonts.html">fonts</a>
126  | <a href="high.html">high</a>
127  | <a href="html.html">html</a>
128  | <a href="layout.html">layout</a>
129  | <a href="text.html">text</a>
130  | <a href="timer.html">timer</a>
131  | <a href="vid.html">vid</a>
132 <br><br>
133 <strong>Tutorials</strong><br>
134 <a href="tilevid1.html">1</a>
135  | <a href="tilevid2.html">2</a>
136  | <a href="tilevid3.html">3</a>
137  | <a href="tilevid4.html">4</a>
138  | <a href="tilevid5.html">5</a>
139 <br><br>
140 <strong>GUI&nbsp;Ref.</strong><br>
141 <a href="gui.theme.html">theme</a>
142  | <a href="gui.style.html">style</a>
143  | <a href="gui.widget.html">widget</a>
144  | <a href="gui.surface.html">surface</a>
145  | <a href="gui.const.html">const</a>
146 <br><br>
147 <strong>Containers</strong><br>
148 <a href="gui.container.html">container</a>
149  | <a href="gui.app.html">app</a>
150  | <a href="gui.table.html">table</a>
151  | <a href="gui.document.html">document</a>
152  | <a href="gui.area.html">area</a>
153 <br><br>
154 <strong>Forms</strong><br>
155 <a href="gui.form.html">form</a>
156  | <a href="gui.group.html">group</a>
157 <br><br>
158 <strong>Widgets</strong><br>
159 <a href="gui.basic.html">basic</a>
160  | <a href="gui.button.html">button</a>
161  | <a href="gui.input.html">input</a>
162  | <a href="gui.keysym.html">keysym</a>
163  | <a href="gui.slider.html">slider</a>
164  | <a href="gui.select.html">select</a>
165  | <a href="gui.misc.html">misc</a>
166 <br><br>
167 <strong>Other</strong><br>
168 <a href="gui.menus.html">menus</a>
169  | <a href="gui.dialog.html">dialog</a>
170 <br><br>
171 <strong>Tutorials</strong><br>
172 <a href="gui1.html">1</a>
173  | <a href="gui2.html">2</a>
174  | <a href="gui3.html">3</a>
175  | <a href="gui4.html">4</a>
176  | <a href="gui5.html">5</a>
177  | <a href="gui6.html">6</a>
178  | <a href="gui7.html">7</a>
179  | <a href="gui8.html">8</a>
180  | <a href="gui9.html">9</a>
181  | <a href="gui10.html">10</a>
182 <br><br>
183
184 <td valign=top style='padding-left:6px;'>
185
186 <h1>tutorial on how to add in tile hit handlers, set up groups and agroups</h1>
187
188 <div class='wiki'>
189 <a name="">
190 <div class="h1">
191
192 </div>
193 In player_new() I add the player to the 'player' group, and set the score to 0. I also set the game's player to this Sprite.
194 <pre>
195   23:    s.groups = g.string2groups('player')
196   24:    s.score = 0
197   25:    g.player = s
198 </pre>
199 In player_loop(), I now check if the player has gone off screen (due to blocks
200 in the players way.  If that happens, the game quits.
201 <pre>
202   32:    if s.rect.right < g.view.left: g.quit = 1
203 </pre>
204 A few functions are added to handle player/tile hits
205 <pre>
206   59:def tile_block(g,t,a):
207   60:    c = t.config
208   61:    if (c['top'] == 1 and a._rect.bottom <= t._rect.top and a.rect.bottom > t.rect.top):
209   62:        a.rect.bottom = t.rect.top
210   63:    if (c['left'] == 1 and a._rect.right <= t._rect.left and a.rect.right > t.rect.left):
211   64:        a.rect.right = t.rect.left
212   65:    if (c['right'] == 1 and a._rect.left >= t._rect.right and a.rect.left < t.rect.right):
213   66:        a.rect.left = t.rect.right
214   67:    if (c['bottom'] == 1 and a._rect.top >= t._rect.bottom and a.rect.top < t.rect.bottom):
215   68:        a.rect.top = t.rect.bottom
216   69:
217   70:def tile_coin(g,t,a):
218   71:    a.score += 100
219   72:    g.set((t.tx,t.ty),0)
220   73:
221   74:def tile_fire(g,t,a):
222   75:    g.quit = 1
223 </pre>
224 Here I initialize the tile data.  The columns are (groups,function,config)
225 <pre>
226   93:tdata = {
227   94:    0x01:('player',tile_block,{'top':1,'bottom':1,'left':1,'right':1}),
228   95:    0x02:('player',tile_block,{'top':1,'bottom':1,'left':1,'right':1}),
229   96:    0x20:('player',tile_coin,None),
230   97:    0x30:('player',tile_fire,None),
231   98:    }
232 </pre>
233 In init(), this line has been changed to load the tiles with their properties (groups, functions, and config.
234 <pre>
235  109:    g.tga_load_tiles('tiles.tga',(TW,TH),tdata)
236 </pre>
237 In run(), I have changed the update function to paint, so that
238 I can display the player's score on the screen at all times.
239 <pre>
240  141:        g.paint(g.screen)
241  142:        img = g.font.render('%05d'%g.player.score,1,(0,0,0))
242  143:        g.screen.blit(img,(0+1,SH-img.get_height()+1))
243  144:        img = g.font.render('%05d'%g.player.score,1,(255,255,255))
244  145:        g.screen.blit(img,(0,SH-img.get_height()))
245  146:        pygame.display.flip()
246 </pre>
247
248 </div>
249
250 </table>
251
252 <hr width=500 align=center>
253 <div align='center'>all content (c) 2006 Phil Hassey - <a href='http://www.imitationpickles.org/pgu/'>Phil's pyGame Utilities</a></div>
254 </body>
255 </html>

UCC git Repository :: git.ucc.asn.au