Original Blender file source: space_temple_lowpoly.blend
3840 × 2160 rendering: space_temple_lowpoly-3.png
carbon-based lifeform. virgo supercluster
carbon-based lifeform. virgo supercluster
Original Blender file source: space_temple_lowpoly.blend
3840 × 2160 rendering: space_temple_lowpoly-3.png
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 = (640, 480) |
N = 200 SCREEN_W, SCREEN_H = (640, 480)
Using list comprehension we create a list of random points in the screen, that will be our stars. The size of this list is N.
stars = [ [random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)] for x in range(N) ] |
stars = [ [random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)] for x in range(N) ]
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.
At each step from the game loop we draw and update the position of each star. A star is draw as a white line of one pixel. See the pygame.draw.line doc.
for star in stars: pygame.draw.line(background, (255, 255, 255), (star[0], star[1]), (star[0], star[1])) star[0] = star[0] - 1 if star[0] < 0: star[0] = SCREEN_W star[1] = random.randint(0, SCREEN_H) |
for star in stars: pygame.draw.line(background, (255, 255, 255), (star[0], star[1]), (star[0], star[1])) star[0] = star[0] - 1 if star[0] < 0: star[0] = SCREEN_W star[1] = random.randint(0, SCREEN_H)
In this example we update the position of a star by decreasing its horizontal position. When the horizontal position is less than zero, it’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.
The complete code:
#!/usr/bin/env python # A simple effect of sliding stars to create a deep space sensation. # by Silveira Neto <me@silveiraneto.net> # Free under the terms of GPLv3 license # See http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/ import os,sys,random import pygame from pygame.locals import * # Constants N = 200 SCREEN_W, SCREEN_H = (640, 480) def main(): # basic start pygame.init() screen = pygame.display.set_mode((SCREEN_W,SCREEN_H)) pygame.display.set_caption('Simple Space Effect by Silveira Neto') # create background background = pygame.Surface(screen.get_size()) background = background.convert() # generate N stars stars = [ [random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)] for x in range(N) ] # main loop clock = pygame.time.Clock() while 1: clock.tick(22) for event in pygame.event.get(): if event.type == QUIT: return elif event.type == KEYDOWN and event.key == K_ESCAPE: return background.fill((0,0,0)) for star in stars: pygame.draw.line(background, (255, 255, 255), (star[0], star[1]), (star[0], star[1])) star[0] = star[0] - 1 if star[0] < 0: star[0] = SCREEN_W star[1] = random.randint(0, SCREEN_H) screen.blit(background, (0,0)) pygame.display.flip() if __name__ == '__main__': main() |
#!/usr/bin/env python # A simple effect of sliding stars to create a deep space sensation. # by Silveira Neto <me@silveiraneto.net> # Free under the terms of GPLv3 license # See http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/ import os,sys,random import pygame from pygame.locals import * # Constants N = 200 SCREEN_W, SCREEN_H = (640, 480) def main(): # basic start pygame.init() screen = pygame.display.set_mode((SCREEN_W,SCREEN_H)) pygame.display.set_caption('Simple Space Effect by Silveira Neto') # create background background = pygame.Surface(screen.get_size()) background = background.convert() # generate N stars stars = [ [random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)] for x in range(N) ] # main loop clock = pygame.time.Clock() while 1: clock.tick(22) for event in pygame.event.get(): if event.type == QUIT: return elif event.type == KEYDOWN and event.key == K_ESCAPE: return background.fill((0,0,0)) for star in stars: pygame.draw.line(background, (255, 255, 255), (star[0], star[1]), (star[0], star[1])) star[0] = star[0] - 1 if star[0] < 0: star[0] = SCREEN_W star[1] = random.randint(0, SCREEN_H) screen.blit(background, (0,0)) pygame.display.flip() if __name__ == '__main__': main()
A amazing set of slides with a very cool aproach to argument why we should explore moon in order to do science.
More information and the set of slides at the page Nasa – Why the Moon.