tag:blogger.com,1999:blog-16421414936579073272024-03-05T16:02:06.761-08:00daftpythonDavy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-1642141493657907327.post-66974176116979208322019-05-16T11:07:00.000-07:002019-05-16T11:07:52.729-07:00Monitoring Earthquakes Curses<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi12GR11LaPW6Nc6LKjyyRHhNALGDipZUOwE4PIt_up7McunRZ9nVKBOFHzH0uNaZBjRy84vE1Xp8hYBsadscBmLWg62H1z9nKdacDdydvZCdAKqe1QdP7cG9N3a6geIcgo3He_YWM8X14/s1600/screenshot.png" imageanchor="1"><img border="0" data-original-height="426" data-original-width="719" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi12GR11LaPW6Nc6LKjyyRHhNALGDipZUOwE4PIt_up7McunRZ9nVKBOFHzH0uNaZBjRy84vE1Xp8hYBsadscBmLWg62H1z9nKdacDdydvZCdAKqe1QdP7cG9N3a6geIcgo3He_YWM8X14/s400/screenshot.png" width="400" /></a></div>
<br />
<br />
<div>
<a href="https://github.com/daftspaniel/geojsonwatcher">Github Repository Link</a></div>
<br />
<br />
<div>
The <a href="https://www.usgs.gov/">USGS</a> publishes a plethora of data on their website. Of interest to me are a bunch of frequently updated <a href="https://en.wikipedia.org/wiki/GeoJSON">GeoJSON</a> feeds which can be parsed with standard JSON libraries. I was keen to dabble in a bit of Curses programming (hey - it's a change from HTML & CSS!). So GeoJSONWatcher was born and is at its early v0.1 stage. The app shows when run the latest update and then a running report of the largest quakes measured.</div>
<br />
<br />
<div>
Of course, there are lots of possibilities with such a rich and frequently updated data source. Whilst working with curses has been good, I miss an event driven GUI so the next iteration is likely to be a Tkinter or PyQT version. Currently it records the features to a SQL Lite database which is begging to be queried for some more insightful reports. I have a particular interest in anything volcano related and Hawaii. Development is a little slow for me as it is fun just to sit back and watch what is going on! If anyone knows of other interesting GeoJSON feeds please leave a comment!</div>
<br />
<br />
<div>
We have a very active planet - hope you enjoy keeping a closer eye on it from your terminal!</div>
Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com1tag:blogger.com,1999:blog-1642141493657907327.post-20408474604051650402015-10-20T05:04:00.000-07:002015-10-20T05:04:12.494-07:00Reflections On IronPython : Still In Production<p>A recent <a href="https://www.reddit.com/r/Python/comments/3orhzw/whats_happened_to_ironpython/">reddit thread</a> on IronPython brought back some memories so I thought I would record them in a quick blog post.</p>
<p>I really liked Python when I discovered it 10+ years ago and was delighted when I first heard Microsoft had hired talent to bring Python to dotNet. At the time, I was stuck in VB6 (really) and had recently discovered traditional Python. I joined the mailing list, tried out early builds, reported bugs to Codeplex and the team at Microsoft were a great bunch to interactive with. Microsoft are somewhat Open Source today - at the time this was <i>very</i> unusual. I ended up writing a few GUI programs, even an IronPython editor for some time.</p>
<p>Then Microsoft went through changes, IronPython was dropped along with other interesting products like Mesh. The Open Source version is still around but the mailing list is very quiet. I went back to regular Python and messed around with PyGame. I still use IronPython in production (handy for configuration to have .Net scripting with zero-install for installers) and can't help think Microsoft missed a trick here. It is a much more friendly language than Powershell and theres not really a good .Net scripting language even years later. All is not entirely lost though, they still produce <a href="http://microsoft.github.io/PTVS/">Python Tools for Visual Studio</a> and it is very good.</p>
<p>So IronPython for me was interesting, fun and useful. It was great being involved early on in the development, which probably why I got so caught up <a href="http://divingintodart.blogspot.co.uk/">diving into the relatively new Dart language</a> from Google.</p>
Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com3tag:blogger.com,1999:blog-1642141493657907327.post-91002258744073613002012-08-10T02:50:00.001-07:002012-08-12T05:41:26.890-07:00Screenshot Viewer For Minecraft - Now Released<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">The screenshot viewer is now available! Only tested on Windows for now so Linux/Mac users (who make a good proportion of visitors to this site) be warned. I have created a Google code project for all the code on this blog at <a href="http://code.google.com/p/daftpython/">http://code.google.com/p/daftpython/</a> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">You can get the latest Screenshot viewer <a href="http://code.google.com/p/daftpython/source/browse/#svn%2Ftrunk%2FMinecraftScreenshotViewer">here</a>. It is a single .PY file tested on Python 2.6.6 and wxPython 2.8. We have been trying out a CXFreeze version with a Windows Installer and it is looking good. I'd like to look at maintaining aspect ratio for the thumbnails and display.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">If you run it on a non-Windows platform I would appreciate a screenshot. Any other thoughts, please leave a comment!</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgExU43D6t9G3SwjqxI0OuDOSaWkUrdZvIag4WaUxHyqq5Yn9u9OyYipucEzb0YmHjZSzX_nNhVto8GVG70OEbOaBUnJ1YPVdim_PaCb4nkl_16w2KsdMCKkXDZaxaqrtjz-54BvzirVAw/s1600/Screenshot+Viewer+for+Minecraft+08082012+152627.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgExU43D6t9G3SwjqxI0OuDOSaWkUrdZvIag4WaUxHyqq5Yn9u9OyYipucEzb0YmHjZSzX_nNhVto8GVG70OEbOaBUnJ1YPVdim_PaCb4nkl_16w2KsdMCKkXDZaxaqrtjz-54BvzirVAw/s320/Screenshot+Viewer+for+Minecraft+08082012+152627.bmp.jpg" width="320" /></a></div>
<br />Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com3tag:blogger.com,1999:blog-1642141493657907327.post-32716433210410158252012-08-07T12:36:00.000-07:002012-08-07T12:36:58.382-07:00Minecraft Screenshot Viewer in wxPython - A Preview<span style="font-family: Arial, Helvetica, sans-serif;">There's a lot of Minecraft going on in this house! The boys all love it and come up with some creative designs for houses, statues, machines and roller-coasters. Minecraft has a built in feature for taking screenshots 'F2' and I encourage them to do this if they have made something. Eventually we will make a slideshow video of them.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">But there is no easy way to view the screenshots in the game and it is a bit 'hidden' under .minecraft so what a great excuse for a wxPython program. Not quite ready for the prime-time (needs Linux tested at least) but my eldest was impressed by the demo of it and is keen to get it installed on the main family PC.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Here's a screenshot until I get some SVN sorted out:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMRoBQuGPunkucL9SJ1Z7oVd-6ZBgZZN9JaOAwwr0BOctGYGie8aAUZAnG-bQC6BapYsxvkpcD6x5bMcNT2dQRdSbVv2yRBtAPXWlpoFBdOODXq4TwujLBgOA68dYC89uE-nMA6ZMPbA/s1600/Screenshot+Viewer+for+Minecraft+07082012+203247.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMRoBQuGPunkucL9SJ1Z7oVd-6ZBgZZN9JaOAwwr0BOctGYGie8aAUZAnG-bQC6BapYsxvkpcD6x5bMcNT2dQRdSbVv2yRBtAPXWlpoFBdOODXq4TwujLBgOA68dYC89uE-nMA6ZMPbA/s320/Screenshot+Viewer+for+Minecraft+07082012+203247.bmp.jpg" title="Early look at the Screenshot Viewer" width="320" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Ideas for features welcome - leave a comment!</span>Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com6tag:blogger.com,1999:blog-1642141493657907327.post-57093109487634407342012-07-27T12:10:00.000-07:002012-07-27T12:10:34.863-07:00Simple Starfield In PyGameGames are very often highly interactive with even some text adventures operating in real time. I thought it would be fun to go in the opposite direction and create a game with minimal interaction. So I settled on an outer space theme and had a text experiment of a probe travelling through the emptiness of space.<br />
<br />
The next step was to create a graphical display and, of course, stars were the first order of business! I looked around at a few star field examples and ended up coding one for myself. Straightforward 2D scrolling is all I want - needs to be calm for the display. The class is nice and simple whilst the demo shows it off fairly well.<br />
<br />
Exercise for the reader - can you make a layered demo? I'll share the code on a follow up post. Happy stargazing!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPLBd7Nj5asBeQoyBa5sM8eDuXfsAxNZh8NvENPBqfH9XDtuPz15f-wh0S0PiP-x9k2a6sF19vlniGgJ7W8Lmur0Zrc17pH2lUgOXnvyaFMzRwnlkyYZvZhpqx3wKWkwC3420Xqh_MWic/s1600/pygame+window+27072012+200513.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPLBd7Nj5asBeQoyBa5sM8eDuXfsAxNZh8NvENPBqfH9XDtuPz15f-wh0S0PiP-x9k2a6sF19vlniGgJ7W8Lmur0Zrc17pH2lUgOXnvyaFMzRwnlkyYZvZhpqx3wKWkwC3420Xqh_MWic/s320/pygame+window+27072012+200513.bmp.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<pre style="background-color: white; border: 3px double silver;"><font face="Lucida,Courier New"><font color="#C00000">import</font> <font color="#000000">random</font>
<font color="#C00000">import</font> <font color="#000000">pygame</font>
<font color="#C00000">import</font> <font color="#000000">sys</font>
<font color="#C00000">from</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">locals</font> <font color="#C00000">import</font> <font color="#0000C0">*</font>
<font color="#C00000">class</font> <font color="#000000">starfield</font><font color="#0000C0">(</font><font color="#000000">object</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#C00000">def</font> <font color="#000000">__init__</font><font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">,</font> <font color="#000000">pos</font> <font color="#0000C0">,</font> <font color="#000000">size</font><font color="#0000C0">,</font> <font color="#000000">max</font><font color="#0000C0">,</font> <font color="#000000">speed</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font> <font color="#0000C0">=</font> <font color="#0000C0">[</font><font color="#0000C0">]</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font> <font color="#0000C0">=</font> <font color="#000000">pos</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font> <font color="#0000C0">=</font> <font color="#000000">size</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">max</font> <font color="#0000C0">=</font> <font color="#000000">max</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">speed</font> <font color="#0000C0">=</font> <font color="#000000">speed</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">box</font> <font color="#0000C0">=</font> <font color="#000000">True</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">color</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">)</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">bordercolor</font> <font color="#0000C0">=</font> <font color="#000000">Color</font><font color="#0000C0">(</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">)</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">backgroundcolor</font> <font color="#0000C0">=</font> <font color="#000000">Color</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">)</font>
<font color="#C00000">for</font> <font color="#000000">loop</font> <font color="#C00000">in</font> <font color="#000000">range</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">max</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#000000">star</font> <font color="#0000C0">=</font> <font color="#0000C0">[</font><font color="#000000">random</font><font color="#0000C0">.</font><font color="#000000">randrange</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font> <font color="#0000C0">-</font> <font color="#0080C0">1</font><font color="#0000C0">)</font><font color="#0000C0">,</font>
<font color="#000000">random</font><font color="#0000C0">.</font><font color="#000000">randrange</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font> <font color="#0000C0">-</font> <font color="#0080C0">1</font><font color="#0000C0">)</font><font color="#0000C0">]</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">.</font><font color="#000000">append</font><font color="#0000C0">(</font><font color="#000000">star</font><font color="#0000C0">)</font><font color="#0000C0">;</font>
<font color="#C00000">def</font> <font color="#000000">draw</font><font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">,</font> <font color="#000000">screen</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#C00000">if</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">box</font><font color="#0000C0">:</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">draw</font><font color="#0000C0">.</font><font color="#000000">rect</font><font color="#0000C0">(</font><font color="#000000">screen</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">backgroundcolor</font><font color="#0000C0">,</font> <font color="#000000">Rect</font><font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">,</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">0</font><font color="#0000C0">)</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">draw</font><font color="#0000C0">.</font><font color="#000000">rect</font><font color="#0000C0">(</font><font color="#000000">screen</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">bordercolor</font><font color="#0000C0">,</font> <font color="#000000">Rect</font><font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">,</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">1</font><font color="#0000C0">)</font>
<font color="#C00000">for</font> <font color="#000000">loop</font> <font color="#C00000">in</font> <font color="#000000">range</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">max</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#000000">p</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font> <font color="#0000C0">+</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font> <font color="#0000C0">+</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font> <font color="#0000C0">)</font>
<font color="#000000">screen</font><font color="#0000C0">.</font><font color="#000000">set_at</font><font color="#0000C0">(</font><font color="#000000">p</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">color</font><font color="#0000C0">)</font>
<font color="#C00000">def</font> <font color="#000000">update</font><font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#C00000">for</font> <font color="#000000">loop</font> <font color="#C00000">in</font> <font color="#000000">range</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">max</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font> <font color="#0000C0">+</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">speed</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">)</font>
<font color="#C00000">if</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">></font><font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">size</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font><font color="#0000C0">:</font>
<font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#000000">self</font><font color="#0000C0">.</font><font color="#000000">stars</font><font color="#0000C0">[</font><font color="#000000">loop</font><font color="#0000C0">]</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">)</font>
<font color="#008000"># DEMO</font>
<font color="#000000">sf</font> <font color="#0000C0">=</font> <font color="#0000C0">[</font><font color="#000000">starfield</font><font color="#0000C0">(</font> <font color="#0000C0">(</font><font color="#0080C0">50</font><font color="#0000C0">,</font><font color="#0080C0">50</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0000C0">(</font><font color="#0080C0">550</font><font color="#0000C0">,</font><font color="#0080C0">410</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">80</font><font color="#0000C0">,</font> <font color="#0080C0">1</font> <font color="#0000C0">)</font><font color="#0000C0">,</font>
<font color="#000000">starfield</font><font color="#0000C0">(</font> <font color="#0000C0">(</font><font color="#0080C0">80</font><font color="#0000C0">,</font><font color="#0080C0">150</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0000C0">(</font><font color="#0080C0">200</font><font color="#0000C0">,</font><font color="#0080C0">200</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">33</font><font color="#0000C0">,</font> <font color="#0080C0">2</font> <font color="#0000C0">)</font><font color="#0000C0">,</font>
<font color="#000000">starfield</font><font color="#0000C0">(</font> <font color="#0000C0">(</font><font color="#0080C0">380</font><font color="#0000C0">,</font><font color="#0080C0">150</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0000C0">(</font><font color="#0080C0">200</font><font color="#0000C0">,</font><font color="#0080C0">200</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">33</font><font color="#0000C0">,</font> <font color="#0080C0">3</font> <font color="#0000C0">)</font><font color="#0000C0">,</font>
<font color="#000000">starfield</font><font color="#0000C0">(</font> <font color="#0000C0">(</font><font color="#0080C0">5</font><font color="#0000C0">,</font><font color="#0080C0">5</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0000C0">(</font><font color="#0080C0">80</font><font color="#0000C0">,</font><font color="#0080C0">80</font><font color="#0000C0">)</font><font color="#0000C0">,</font> <font color="#0080C0">12</font><font color="#0000C0">,</font> <font color="#0080C0">4</font> <font color="#0000C0">)</font>
<font color="#0000C0">]</font>
<font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">color</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">)</font>
<font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">2</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">color</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">)</font>
<font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">3</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">color</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">255</font><font color="#0000C0">)</font>
<font color="#000000">TIMEREVENT</font> <font color="#0000C0">=</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">USEREVENT</font>
<font color="#000000">UPDATEEVENT</font> <font color="#0000C0">=</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">USEREVENT</font><font color="#0000C0">+</font><font color="#0080C0">1</font>
<font color="#000000">FPS</font> <font color="#0000C0">=</font> <font color="#0080C0">50</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">init</font><font color="#0000C0">(</font><font color="#0000C0">)</font>
<font color="#000000">window</font> <font color="#0000C0">=</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">display</font><font color="#0000C0">.</font><font color="#000000">set_mode</font><font color="#0000C0">(</font><font color="#0000C0">(</font><font color="#0080C0">640</font><font color="#0000C0">,</font> <font color="#0080C0">480</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#000000">background</font> <font color="#0000C0">=</font> <font color="#000000">None</font>
<font color="#000000">background</font> <font color="#0000C0">=</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">Surface</font><font color="#0000C0">(</font><font color="#000000">window</font><font color="#0000C0">.</font><font color="#000000">get_size</font><font color="#0000C0">(</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#000000">background</font><font color="#0000C0">.</font><font color="#000000">fill</font><font color="#0000C0">(</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#0080C0">0</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">time</font><font color="#0000C0">.</font><font color="#000000">set_timer</font><font color="#0000C0">(</font><font color="#000000">TIMEREVENT</font><font color="#0000C0">,</font> <font color="#000000">int</font><font color="#0000C0">(</font><font color="#0080C0">1000</font> <font color="#0000C0">/</font> <font color="#000000">FPS</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">time</font><font color="#0000C0">.</font><font color="#000000">set_timer</font><font color="#0000C0">(</font><font color="#000000">UPDATEEVENT</font><font color="#0000C0">,</font> <font color="#0080C0">50</font><font color="#0000C0">)</font>
<font color="#C00000">while</font> <font color="#000000">True</font><font color="#0000C0">:</font>
<font color="#C00000">for</font> <font color="#000000">event</font> <font color="#C00000">in</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">event</font><font color="#0000C0">.</font><font color="#000000">get</font><font color="#0000C0">(</font><font color="#0000C0">)</font><font color="#0000C0">:</font>
<font color="#C00000">if</font> <font color="#000000">event</font><font color="#0000C0">.</font><font color="#000000">type</font> <font color="#0000C0">==</font> <font color="#000000">TIMEREVENT</font><font color="#0000C0">:</font>
<font color="#000000">background</font><font color="#0000C0">.</font><font color="#000000">fill</font><font color="#0000C0">(</font><font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">,</font><font color="#0080C0">0</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#C00000">for</font> <font color="#000000">s</font> <font color="#C00000">in</font> <font color="#000000">sf</font><font color="#0000C0">:</font>
<font color="#000000">s</font><font color="#0000C0">.</font><font color="#000000">draw</font><font color="#0000C0">(</font><font color="#000000">background</font><font color="#0000C0">)</font>
<font color="#000000">window</font><font color="#0000C0">.</font><font color="#000000">blit</font><font color="#0000C0">(</font><font color="#000000">background</font><font color="#0000C0">,</font> <font color="#0000C0">(</font><font color="#0080C0">0</font><font color="#0000C0">,</font> <font color="#0080C0">0</font><font color="#0000C0">)</font><font color="#0000C0">)</font>
<font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">display</font><font color="#0000C0">.</font><font color="#000000">flip</font><font color="#0000C0">(</font><font color="#0000C0">)</font>
<font color="#C00000">elif</font> <font color="#000000">event</font><font color="#0000C0">.</font><font color="#000000">type</font> <font color="#0000C0">==</font> <font color="#000000">UPDATEEVENT</font><font color="#0000C0">:</font>
<font color="#C00000">for</font> <font color="#000000">s</font> <font color="#C00000">in</font> <font color="#000000">sf</font><font color="#0000C0">:</font>
<font color="#000000">s</font><font color="#0000C0">.</font><font color="#000000">update</font><font color="#0000C0">(</font><font color="#0000C0">)</font>
<font color="#008000"># Move starfield</font>
<font color="#000000">x</font> <font color="#0000C0">=</font> <font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">3</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">0</font><font color="#0000C0">]</font> <font color="#0000C0">+</font> <font color="#0080C0">2</font>
<font color="#000000">y</font> <font color="#0000C0">=</font> <font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">3</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">pos</font><font color="#0000C0">[</font><font color="#0080C0">1</font><font color="#0000C0">]</font> <font color="#0000C0">+</font> <font color="#0080C0">2</font>
<font color="#C00000">if</font> <font color="#000000">x</font><font color="#0000C0">></font><font color="#0080C0">640</font><font color="#0000C0">:</font> <font color="#000000">x</font><font color="#0000C0">=</font><font color="#0000C0">-</font><font color="#0080C0">50</font>
<font color="#C00000">if</font> <font color="#000000">y</font><font color="#0000C0">></font><font color="#0080C0">480</font><font color="#0000C0">:</font> <font color="#000000">y</font><font color="#0000C0">=</font><font color="#0000C0">-</font><font color="#0080C0">40</font>
<font color="#000000">sf</font><font color="#0000C0">[</font><font color="#0080C0">3</font><font color="#0000C0">]</font><font color="#0000C0">.</font><font color="#000000">pos</font> <font color="#0000C0">=</font> <font color="#0000C0">(</font><font color="#000000">x</font><font color="#0000C0">,</font><font color="#000000">y</font><font color="#0000C0">)</font>
<font color="#C00000">elif</font> <font color="#000000">event</font><font color="#0000C0">.</font><font color="#000000">type</font> <font color="#0000C0">==</font> <font color="#000000">pygame</font><font color="#0000C0">.</font><font color="#000000">QUIT</font><font color="#0000C0">:</font>
<font color="#000000">sys</font><font color="#0000C0">.</font><font color="#000000">exit</font><font color="#0000C0">(</font><font color="#0000C0">)</font><font color="#000000"></font></font></pre>Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com5tag:blogger.com,1999:blog-1642141493657907327.post-5049199000074809172012-07-12T13:11:00.001-07:002012-07-12T13:11:51.984-07:00Particles Of BlueSomething I have not used in a PyGame game yet is particles of any sort. Thinking over a few ideas for a mining game, it seemed like a fun idea to have some sort of soil. This lead to a quick half-hour of coding and here is the result:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzY76bA7owY-bWYplIzI6S-OhgXCAeptbL8g8HLJPl6cK3iLJnsAzDj7WOtypQTnfO1_Tv78zOjChcjYDttaV057oRhf5A0dPrrPDFRony2TxLDFuZvNCOhS4kJHfC84H6r6dEzKotQRY/s1600/pygame+window+12072012+202959.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzY76bA7owY-bWYplIzI6S-OhgXCAeptbL8g8HLJPl6cK3iLJnsAzDj7WOtypQTnfO1_Tv78zOjChcjYDttaV057oRhf5A0dPrrPDFRony2TxLDFuZvNCOhS4kJHfC84H6r6dEzKotQRY/s320/pygame+window+12072012+202959.bmp.jpg" width="320" /></a></div>
<br />
It is not terribly efficient or a good colour for soil but has potential.<br />
<br />
Here's the code:<br />
<pre style="background-color: white; border: 3px double silver;"><span style="font-family: Lucida, 'Courier New'; font-size: 8pt;"><span style="color: #c00000;">import</span> <span style="color: black;">pygame</span>
<span style="color: #c00000;">import</span> <span style="color: black;">sys</span>
<span style="color: #c00000;">import</span> <span style="color: black;">random</span>
<span style="color: #c00000;">from</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">event</span> <span style="color: #c00000;">import</span> <span style="color: #0000c0;">*</span>
<span style="color: #c00000;">from</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">locals</span> <span style="color: #c00000;">import</span> <span style="color: #0000c0;">*</span>
<span style="color: black;">TIMEREVENT</span> <span style="color: #0000c0;">=</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">USEREVENT</span>
<span style="color: black;">FPS</span> <span style="color: #0000c0;">=</span> <span style="color: #0080c0;">50</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">init</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span>
<span style="color: black;">window</span> <span style="color: #0000c0;">=</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">display</span><span style="color: #0000c0;">.</span><span style="color: black;">set_mode</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">640</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">480</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">background</span> <span style="color: #0000c0;">=</span> <span style="color: black;">None</span>
<span style="color: black;">background</span> <span style="color: #0000c0;">=</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">Surface</span><span style="color: #0000c0;">(</span><span style="color: black;">window</span><span style="color: #0000c0;">.</span><span style="color: black;">get_size</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">background</span><span style="color: #0000c0;">.</span><span style="color: black;">fill</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">time</span><span style="color: #0000c0;">.</span><span style="color: black;">set_timer</span><span style="color: #0000c0;">(</span><span style="color: black;">TIMEREVENT</span><span style="color: #0000c0;">,</span> <span style="color: black;">int</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">1000</span> <span style="color: #0000c0;">/</span> <span style="color: black;">FPS</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">colour3</span> <span style="color: #0000c0;">=</span> <span style="color: black;">Color</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">255</span><span style="color: #0000c0;">)</span>
<span style="color: black;">ground</span> <span style="color: #0000c0;">=</span> <span style="color: black;">Color</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">255</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span>
<span style="color: black;">y</span> <span style="color: #0000c0;">=</span> <span style="color: #0080c0;">100</span>
<span style="color: #c00000;">def</span> <span style="color: black;">DrawText</span><span style="color: #0000c0;">(</span><span style="color: black;">bg</span><span style="color: #0000c0;">,</span> <span style="color: black;">x</span><span style="color: #0000c0;">,</span> <span style="color: black;">y</span><span style="color: #0000c0;">,</span> <span style="color: black;">text</span><span style="color: #0000c0;">,</span> <span style="color: black;">size</span><span style="color: #0000c0;">=</span><span style="color: #0080c0;">24</span><span style="color: #0000c0;">,</span> <span style="color: black;">color</span><span style="color: #0000c0;">=</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">255</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">255</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">255</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: black;">inst1_font</span> <span style="color: #0000c0;">=</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">font</span><span style="color: #0000c0;">.</span><span style="color: black;">Font</span><span style="color: #0000c0;">(</span><span style="color: black;">None</span><span style="color: #0000c0;">,</span> <span style="color: black;">size</span><span style="color: #0000c0;">)</span>
<span style="color: black;">inst1_surf</span> <span style="color: #0000c0;">=</span> <span style="color: black;">inst1_font</span><span style="color: #0000c0;">.</span><span style="color: black;">render</span><span style="color: #0000c0;">(</span><span style="color: black;">text</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">1</span><span style="color: #0000c0;">,</span> <span style="color: black;">color</span><span style="color: #0000c0;">)</span>
<span style="color: black;">bg</span><span style="color: #0000c0;">.</span><span style="color: black;">blit</span><span style="color: #0000c0;">(</span><span style="color: black;">inst1_surf</span><span style="color: #0000c0;">,</span> <span style="color: #0000c0;">[</span><span style="color: black;">x</span><span style="color: #0000c0;">,</span> <span style="color: black;">y</span><span style="color: #0000c0;">]</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">class</span> <span style="color: black;">grit</span><span style="color: #0000c0;">(</span><span style="color: black;">object</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: #c00000;">def</span> <span style="color: black;">__init__</span><span style="color: #0000c0;">(</span><span style="color: black;">self</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">x</span> <span style="color: #0000c0;">=</span> <span style="color: black;">random</span><span style="color: #0000c0;">.</span><span style="color: black;">randint</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">639</span><span style="color: #0000c0;">)</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span> <span style="color: #0000c0;">=</span> <span style="color: black;">random</span><span style="color: #0000c0;">.</span><span style="color: black;">randint</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">125</span><span style="color: #0000c0;">)</span> <span style="color: #0000c0;">-</span> <span style="color: #0080c0;">50</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">width</span> <span style="color: #0000c0;">=</span> <span style="color: black;">random</span><span style="color: #0000c0;">.</span><span style="color: black;">randint</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">1</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">6</span><span style="color: #0000c0;">)</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">height</span> <span style="color: #0000c0;">=</span> <span style="color: black;">random</span><span style="color: #0000c0;">.</span><span style="color: black;">randint</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">1</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">6</span><span style="color: #0000c0;">)</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">color</span> <span style="color: #0000c0;">=</span> <span style="color: black;">Color</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: black;">random</span><span style="color: #0000c0;">.</span><span style="color: black;">randint</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">119</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">255</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">self</span><span style="color: #0000c0;">.</span><span style="color: black;">active</span> <span style="color: #0000c0;">=</span> <span style="color: black;">True</span>
<span style="color: #c00000;">def</span> <span style="color: black;">init</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: black;">gritsL</span> <span style="color: #0000c0;">=</span> <span style="color: #0080c0;">1000</span>
<span style="color: black;">agrits</span> <span style="color: #0000c0;">=</span> <span style="color: #0000c0;">[</span><span style="color: #0000c0;">]</span>
<span style="color: #c00000;">while</span> <span style="color: black;">len</span><span style="color: #0000c0;">(</span><span style="color: black;">agrits</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;"><</span><span style="color: black;">gritsL</span><span style="color: #0000c0;">:</span>
<span style="color: black;">agrits</span><span style="color: #0000c0;">.</span><span style="color: black;">append</span><span style="color: #0000c0;">(</span><span style="color: black;">grit</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">return</span> <span style="color: black;">agrits</span>
<span style="color: black;">grits</span> <span style="color: #0000c0;">=</span> <span style="color: black;">init</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">while</span> <span style="color: black;">True</span><span style="color: #0000c0;">:</span>
<span style="color: #c00000;">for</span> <span style="color: black;">event</span> <span style="color: #c00000;">in</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">event</span><span style="color: #0000c0;">.</span><span style="color: black;">get</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: #c00000;">if</span> <span style="color: black;">event</span><span style="color: #0000c0;">.</span><span style="color: black;">type</span> <span style="color: #0000c0;">==</span> <span style="color: black;">TIMEREVENT</span><span style="color: #0000c0;">:</span>
<span style="color: black;">background</span><span style="color: #0000c0;">.</span><span style="color: black;">fill</span><span style="color: #0000c0;">(</span><span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">Color</span><span style="color: #0000c0;">(</span><span style="color: #004080;">"black"</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">DrawText</span><span style="color: #0000c0;">(</span><span style="color: black;">background</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">25</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">120</span><span style="color: #0000c0;">,</span> <span style="color: #004080;">"Daftspaniel"</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">126</span><span style="color: #0000c0;">)</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">draw</span><span style="color: #0000c0;">.</span><span style="color: black;">rect</span><span style="color: #0000c0;">(</span><span style="color: black;">background</span><span style="color: #0000c0;">,</span> <span style="color: black;">ground</span><span style="color: #0000c0;">,</span> <span style="color: black;">Rect</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">450</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">640</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">280</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">draw</span><span style="color: #0000c0;">.</span><span style="color: black;">rect</span><span style="color: #0000c0;">(</span><span style="color: black;">background</span><span style="color: #0000c0;">,</span> <span style="color: black;">ground</span><span style="color: #0000c0;">,</span> <span style="color: black;">Rect</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">300</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">250</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">340</span><span style="color: #0000c0;">,</span><span style="color: #0080c0;">180</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">for</span> <span style="color: black;">g</span> <span style="color: #c00000;">in</span> <span style="color: black;">grits</span><span style="color: #0000c0;">:</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">draw</span><span style="color: #0000c0;">.</span><span style="color: black;">rect</span><span style="color: #0000c0;">(</span><span style="color: black;">background</span><span style="color: #0000c0;">,</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">color</span><span style="color: #0000c0;">,</span> <span style="color: black;">Rect</span><span style="color: #0000c0;">(</span><span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">x</span><span style="color: #0000c0;">,</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span><span style="color: #0000c0;">,</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">width</span><span style="color: #0000c0;">,</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">height</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">if</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">active</span><span style="color: #0000c0;">:</span>
<span style="color: #c00000;">if</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span><span style="color: #0000c0;">></span><span style="color: #0000c0;">-</span><span style="color: #0080c0;">1</span> <span style="color: #c00000;">and</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span><span style="color: #0000c0;"><</span><span style="color: #0000c0;">(</span><span style="color: #0080c0;">480</span><span style="color: #0000c0;">-</span><span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">height</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">:</span>
<span style="color: black;">c</span> <span style="color: #0000c0;">=</span> <span style="color: black;">background</span><span style="color: #0000c0;">.</span><span style="color: black;">get_at</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">(</span><span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">x</span><span style="color: #0000c0;">,</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span><span style="color: #0000c0;">+</span><span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">height</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">;</span>
<span style="color: #c00000;">if</span> <span style="color: black;">c</span><span style="color: #0000c0;">.</span><span style="color: black;">r</span><span style="color: #0000c0;">==</span><span style="color: #0080c0;">0</span> <span style="color: #c00000;">and</span> <span style="color: black;">c</span><span style="color: #0000c0;">.</span><span style="color: black;">g</span><span style="color: #0000c0;">==</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">:</span>
<span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span> <span style="color: #0000c0;">=</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span> <span style="color: #0000c0;">+</span> <span style="color: #0080c0;">5</span>
<span style="color: #c00000;">else</span><span style="color: #0000c0;">:</span>
<span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">active</span> <span style="color: #0000c0;">=</span> <span style="color: black;">False</span>
<span style="color: #c00000;">if</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span><span style="color: #0000c0;"><</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">:</span>
<span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span> <span style="color: #0000c0;">=</span> <span style="color: black;">g</span><span style="color: #0000c0;">.</span><span style="color: black;">y</span> <span style="color: #0000c0;">+</span> <span style="color: #0080c0;">5</span>
<span style="color: black;">window</span><span style="color: #0000c0;">.</span><span style="color: black;">blit</span><span style="color: #0000c0;">(</span><span style="color: black;">background</span><span style="color: #0000c0;">,</span> <span style="color: #0000c0;">(</span><span style="color: #0080c0;">0</span><span style="color: #0000c0;">,</span> <span style="color: #0080c0;">0</span><span style="color: #0000c0;">)</span><span style="color: #0000c0;">)</span>
<span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">display</span><span style="color: #0000c0;">.</span><span style="color: black;">flip</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">elif</span> <span style="color: black;">event</span><span style="color: #0000c0;">.</span><span style="color: black;">type</span> <span style="color: #0000c0;">==</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">KEYDOWN</span><span style="color: #0000c0;">:</span>
<span style="color: black;">keystate</span> <span style="color: #0000c0;">=</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">key</span><span style="color: #0000c0;">.</span><span style="color: black;">get_pressed</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">if</span> <span style="color: #c00000;">not</span> <span style="color: black;">keystate</span><span style="color: #0000c0;">[</span><span style="color: black;">K_w</span><span style="color: #0000c0;">]</span><span style="color: #0000c0;">==</span><span style="color: #0080c0;">1</span><span style="color: #0000c0;">:</span>
<span style="color: black;">grits</span> <span style="color: #0000c0;">=</span> <span style="color: black;">init</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span>
<span style="color: #c00000;">elif</span> <span style="color: black;">event</span><span style="color: #0000c0;">.</span><span style="color: black;">type</span> <span style="color: #0000c0;">==</span> <span style="color: black;">pygame</span><span style="color: #0000c0;">.</span><span style="color: black;">QUIT</span><span style="color: #0000c0;">:</span>
<span style="color: black;">sys</span><span style="color: #0000c0;">.</span><span style="color: black;">exit</span><span style="color: #0000c0;">(</span><span style="color: #0000c0;">)</span><span style="color: black;"></span></span></pre>
<br />
Any suggested improvements? I would like to use this for a treaure hunt game. Two players digging for gold. Soil lumps might have to be bigger for a game.Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com0tag:blogger.com,1999:blog-1642141493657907327.post-2845732854850399272012-07-08T00:27:00.000-07:002012-07-08T00:27:34.418-07:00Python Tools For Visual Studio<div style="text-align: justify;">
Day to day I use Visual Studio for ASP.net and CSharp. It is okay-ish. I used to like Visual Studio then around version 6/7 it went rather multipurpose/multilanguage and lessened the experience. Nowadays it needs a lot of horsepower and big expensive plugins like Resharper to keep up. </div>
<br />
<div style="text-align: justify;">
I have kept the monster of Visual Studio off my ageing Vista era laptop for some time. Sharp Develop is an FOSS IDE that fills that gap nicely. Microsoft do offer Express versions which are good but they are rather frustrating if you have used the full versions!</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4R7Vakn6YEuesKxP_fxvefSOXHNqegLQY4DlhI3TysWekGOj0MxtiHUlU6k8BB1uk3m5O9j8aPGclHXknx3Xa62XUFzGVL9y4O-8hYUaA0HOAichFflDqBDwzD5yv9Z1b7_Hks2F2v80/s1600/m.py+-+Microsoft+Visual+Studio+%2528Administrator%2529+08072012+071817.bmp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4R7Vakn6YEuesKxP_fxvefSOXHNqegLQY4DlhI3TysWekGOj0MxtiHUlU6k8BB1uk3m5O9j8aPGclHXknx3Xa62XUFzGVL9y4O-8hYUaA0HOAichFflDqBDwzD5yv9Z1b7_Hks2F2v80/s320/m.py+-+Microsoft+Visual+Studio+%2528Administrator%2529+08072012+071817.bmp.jpg" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Anyway Microsoft also produce <a href="http://pytools.codeplex.com/">Python Tools for Visual Studio</a> which can be run on top of the free Visual Studio Shell. PTVS is also free and open source. It supports various versions of Python - not just IronPython (I am currently using it for PyGame with CPython 2.6.6). The code completion is pretty good and, surprisingly, it is not too resource demanding on my ol' Dell Inspiron 1501! It has a long list of features including refactoring, debugging, Django, REPL. Also comes with some extras for Excel and the Xbox Kinect.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
I jump around editors quite a lot but I think will hang around PTVS for a good while.</div>
<br />Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com3tag:blogger.com,1999:blog-1642141493657907327.post-65733467793283356562012-07-06T10:45:00.000-07:002012-07-06T10:45:04.725-07:00The Future Of PyGame<a href="http://code.google.com/p/pgreloaded/">pgreloaded - PyGame Reloaded - Multimedia Framework for Python - Google Project Hosting</a>: "Pygame Reloaded (aka pygame2, pgreloaded) started as a rewrite of the Pygame multimedia and game framework. As of 2012, the development focuses on providing a ctypes-based wrapper around SDL 2.0, along with a rich feature set for creating multimedia applications, games and graphics-based application prototypes."
PyGame is built on SDL which has been a long lasting library. SDL has moved though and PyGame inevitably lags. A project exists to 'reboot' PyGame and move onto a newer SDL called Pgreloaded. As it is a Ctypes based wrapper and will allow for the library to run on other Python implementations such as IronPython.
There is loss of compatibility with existing PyGame code. A lot of books will need to be rewritten I think! However the benefits of the Reload look promising. PyGame has a good future ahead of it so I am glad to be getting back into it at this time.Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com0tag:blogger.com,1999:blog-1642141493657907327.post-39094437926416224582012-06-30T23:57:00.002-07:002012-06-30T23:57:55.071-07:00Rediscovering Python and PyGame<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">After quite a long break, I find myself back into Python - specifically for PyGame projects. The day job is .Net centred and I've been dabbling in 6809 assembler, Android and HTML5 for personal development. I have been trying a few new technologies for various GFX programs but few have come close to the RAD, features and fun of Python with PyGame.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">I have had some fun with HTML5 especially with the canvas - sadly the drawing primitives are not all there yet. Hate how slow HTML progresses so not holding my breath for a better canvas for a long time. True Python doesn't run in the browser but it is cross platform, free and fairly easy to install (more on that later).</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>PyWeek</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">Taking part in PyWeek again was a challenge but great fun and I came up with a game that met a good few of my goals:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://media.pyweek.org/dl/14/daftspaniel/D7S1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="http://media.pyweek.org/dl/14/daftspaniel/D7S1.png" width="320" /></a></div>
<br />
<div>
<div style="text-align: justify;">
<span style="background-color: white; color: #212121; font-family: Arial, Helvetica, sans-serif;">I have received some great feedback this time around. There are many required game play tweaks (an area I sadly did not have time for during the competition). Better mapping, goal feedback and more interesting terrain. </span></div>
<div style="text-align: justify;">
<span style="background-color: white; color: #212121; font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="color: #212121;">
<span style="font-family: Arial, Helvetica, sans-serif;">Lessons Learned in no particular order:</span><br />
<div>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Not having sound is something people WILL notice.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">The motto 'Keep it simple and complete' is an excellent strategy.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Even small animation and movement pay off. The feel of the game is improved so much.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Keeping classes small helps - never a problem that a bit of code was too small.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Don't leave all on screen controls until the end!</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Write the User instructions and revisit them at the end.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Getting the IDE, libraries, tools etc chosen and installed in advance allows for a quicker start. Should maybe include packaging, installer for next time.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Some bits and pieces of Python (3) I did not know yet.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Small custom tools can save lots of time.</span></li>
</ul>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br />
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">Would I do another one? Yes. Always fun and educational. I have tweaked the game a little since release but I feel I would get more from trying something different rather than writing a sequel! It was designed to be ported to HTML5 so next time I want to do something in the browser realm...</span></div>
</div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Versioning</b></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">One thing that came up during the judging of the PyWeek entry was the problems of versions. Not just an issue for the competition - I was only able to feedback on half the games I could have after wrestling with various versions of libraries and non-standard module set up. In the .Net world NuGet is rather good. Hopefully Python 4 will include a single common way to set up extra libraries on all systems.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Future</b></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Currently working on a 2 player Cowboy game with input from my eldest son. Blog post on that one soon :-) Think it will be called '8bit Cowboy Goldrush'. Yee-ha!</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
</div>
</div>Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com0tag:blogger.com,1999:blog-1642141493657907327.post-73954702281900694832012-06-24T11:28:00.001-07:002012-06-24T11:28:58.614-07:00Reclaiming DaftPython!Right trying to reclaim the DaftPython name on blogger. Sorry for this test post cluttering up your feed. Future posts will probably be full of PyGame related posts. See you soon!Davy Mitchellhttp://www.blogger.com/profile/17026277458269531991noreply@blogger.com0