<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Silveira Neto &#187; sliding stars</title>
	<atom:link href="http://silveiraneto.net/tag/sliding-stars/feed/" rel="self" type="application/rss+xml" />
	<link>http://silveiraneto.net</link>
	<description>the world is a pixel</description>
	<lastBuildDate>Sun, 08 Jan 2012 05:17:57 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Pygame, Simple Space Effect</title>
		<link>http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/</link>
		<comments>http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 10:14:53 +0000</pubDate>
		<dc:creator>Silveira</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[game loop]]></category>
		<category><![CDATA[list comprehension]]></category>
		<category><![CDATA[pygame]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[Simple Direct Layer]]></category>
		<category><![CDATA[sliding stars]]></category>
		<category><![CDATA[Space]]></category>
		<category><![CDATA[space effect]]></category>
		<category><![CDATA[stars]]></category>

		<guid isPermaLink="false">http://silveiraneto.net/?p=2705</guid>
		<description><![CDATA[This is a simple space effect of sliding stars using Pygame. Direct link to video: simple_space_effect_01.ogv We set some constants like the screen size and the number N of star we want. N = 200 SCREEN_W, SCREEN_H = &#40;640, 480&#41; Using list comprehension we create a list of random points in the screen, that will [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple space effect of sliding stars using <a href="http://pygame.org">Pygame</a>.</p>
<p><center><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/TXGV6guTOno&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/TXGV6guTOno&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></object></center></p>
<p><small>Direct link to video: <a href="http://silveiraneto.net/downloads/simple_space_effect_01.ogv">simple_space_effect_01.ogv</a></small></p>
<p>We set some constants like the screen size and the number N of star we want.</p>
<div class="wp_syntax">
<div class="code">
<pre class="python python" style="font-family:monospace;">N = <span style="color: #ff4500;">200</span>
SCREEN_W, SCREEN_H = <span style="color: black;">&#40;</span><span style="color: #ff4500;">640</span>, <span style="color: #ff4500;">480</span><span style="color: black;">&#41;</span></pre>
</div>
</div>
<p>Using <a href="http://en.wikipedia.org/wiki/List_comprehension#Python">list comprehension</a> we create a list of random points in the screen, that will be our stars. The size of this list is N.</p>
<div class="wp_syntax">
<div class="code">
<pre class="python python" style="font-family:monospace;">stars = <span style="color: black;">&#91;</span>
  <span style="color: black;">&#91;</span><span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_W<span style="color: black;">&#41;</span>,<span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_H<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
  <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>N<span style="color: black;">&#41;</span>
<span style="color: black;">&#93;</span></pre>
</div>
</div>
<p>Each star is represented by one tuple on the stars list. The first star is on stars[0] and is a touple with [x, y] positions.</p>
<p>At each step from the <a href="http://en.wikipedia.org/wiki/Game_programming#The_game_loop">game loop</a> we draw and update the position of each star. A star is draw as a white line of one pixel. See the <a href="http://www.pygame.org/docs/ref/draw.html#pygame.draw.line">pygame.draw.line doc</a>.</p>
<div class="wp_syntax">
<div class="code">
<pre class="python python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">for</span> star <span style="color: #ff7700;font-weight:bold;">in</span> stars:
  pygame.<span style="color: black;">draw</span>.<span style="color: black;">line</span><span style="color: black;">&#40;</span>background,
    <span style="color: black;">&#40;</span><span style="color: #ff4500;">255</span>, <span style="color: #ff4500;">255</span>, <span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span>star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>, star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span>star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>, star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
  star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> = star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> - <span style="color: #ff4500;">1</span>
  <span style="color: #ff7700;font-weight:bold;">if</span> star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span> 0:
      star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> = SCREEN_W
      star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> = <span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_H<span style="color: black;">&#41;</span></pre>
</div>
</div>
<p>In this example we update the position of a star by decreasing its horizontal position. When the horizontal position is less than zero, it&#8217;s not displayed on the screen anymore so we replace its horizontal position (star[0]) by the screen width (SCREEN_W) and the vertical position (star[1]) by a new random position. This will be like create a new star and guarantee always a different pattern of sliding stars. </p>
<p>The complete code:</p>
<div class="wp_syntax">
<div class="code">
<pre class="python python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># A simple effect of sliding stars to create a deep space sensation.</span>
<span style="color: #808080; font-style: italic;"># by Silveira Neto &lt;me@silveiraneto.net&gt;</span>
<span style="color: #808080; font-style: italic;"># Free under the terms of GPLv3 license</span>
<span style="color: #808080; font-style: italic;"># See http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>,<span style="color: #dc143c;">sys</span>,<span style="color: #dc143c;">random</span>
<span style="color: #ff7700;font-weight:bold;">import</span> pygame
<span style="color: #ff7700;font-weight:bold;">from</span> pygame.<span style="color: #008000;">locals</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Constants </span>
N = <span style="color: #ff4500;">200</span>
SCREEN_W, SCREEN_H = <span style="color: black;">&#40;</span><span style="color: #ff4500;">640</span>, <span style="color: #ff4500;">480</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	<span style="color: #808080; font-style: italic;"># basic start</span>
	pygame.<span style="color: black;">init</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	screen = pygame.<span style="color: black;">display</span>.<span style="color: black;">set_mode</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>SCREEN_W,SCREEN_H<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	pygame.<span style="color: black;">display</span>.<span style="color: black;">set_caption</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Simple Space Effect by Silveira Neto'</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># create background</span>
	background = pygame.<span style="color: black;">Surface</span><span style="color: black;">&#40;</span>screen.<span style="color: black;">get_size</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
	background = background.<span style="color: black;">convert</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># generate N stars</span>
	stars = <span style="color: black;">&#91;</span>
		<span style="color: black;">&#91;</span><span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_W<span style="color: black;">&#41;</span>,<span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_H<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>N<span style="color: black;">&#41;</span>
	<span style="color: black;">&#93;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;"># main loop</span>
	clock = pygame.<span style="color: #dc143c;">time</span>.<span style="color: black;">Clock</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #ff4500;">1</span>:
		clock.<span style="color: black;">tick</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">22</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> event <span style="color: #ff7700;font-weight:bold;">in</span> pygame.<span style="color: black;">event</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
			<span style="color: #ff7700;font-weight:bold;">if</span> event.<span style="color: #008000;">type</span> == QUIT:
				<span style="color: #ff7700;font-weight:bold;">return</span>
			<span style="color: #ff7700;font-weight:bold;">elif</span> event.<span style="color: #008000;">type</span> == KEYDOWN <span style="color: #ff7700;font-weight:bold;">and</span> event.<span style="color: black;">key</span> == K_ESCAPE:
				<span style="color: #ff7700;font-weight:bold;">return</span>
		background.<span style="color: black;">fill</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>0,0,0<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">for</span> star <span style="color: #ff7700;font-weight:bold;">in</span> stars:
			pygame.<span style="color: black;">draw</span>.<span style="color: black;">line</span><span style="color: black;">&#40;</span>background,
				<span style="color: black;">&#40;</span><span style="color: #ff4500;">255</span>, <span style="color: #ff4500;">255</span>, <span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span>star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>, star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, <span style="color: black;">&#40;</span>star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span>, star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
			star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> = star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> - <span style="color: #ff4500;">1</span>
			<span style="color: #ff7700;font-weight:bold;">if</span> star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span> 0:
				star<span style="color: black;">&#91;</span>0<span style="color: black;">&#93;</span> = SCREEN_W
				star<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> = <span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span>0, SCREEN_H<span style="color: black;">&#41;</span>
		screen.<span style="color: black;">blit</span><span style="color: black;">&#40;</span>background, <span style="color: black;">&#40;</span>0,0<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
		pygame.<span style="color: black;">display</span>.<span style="color: black;">flip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>: main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

