|
From: Bruno C. L. <bru...@gm...> - 2009-12-14 03:12:49
|
bruno@keyser /p/pygame/deadchannel $ ./deadchannel.py
Traceback (most recent call last):
File "./deadchannel.py", line 94, in <module>
main(sys.argv)
File "./deadchannel.py", line 83, in main
from game import Game
File "/p/pygame/deadchannel/code/game.py", line 30, in <module>
from foreground import Foreground
ImportError: No module named foreground
On Sun, Dec 13, 2009 at 6:28 PM, João <lv...@us...> wrote:
> This is an automated email from the git, the tree hashes are:
>
> via b844710174d54bf78f72e45bf017350c0aa3c525 (commit)
> via 95ef8cd5e3a6eeac58fcfbb186c9c8246be828ab (commit)
> from 22834a80deaaba31a648a7035f7bec990280582f (commit)
>
>
> - Log -----------------------------------------------------------------
> commit b844710174d54bf78f72e45bf017350c0aa3c525
> Author: João <jcorrea@marvim.(none)>
> Date: Sun Dec 13 18:26:48 2009 -0200
>
> Added foreground support
>
> Fixed minor bug in background.py
>
> diff --git a/code/background.py b/code/background.py
> index b3ef0dd..9ffa766 100644
> --- a/code/background.py
> +++ b/code/background.py
> @@ -38,9 +38,7 @@ class Layer:
>
> def subLayer(self, screen):
> """
> - FUCK! I can't remember what this shit is supposed to do...
> - But it is something related to positioning the layer correctly,
> - I'll add a better description soon!
> + Fix the layer position (place it on the screen bottom)
> """
> s = screen.get_size()
> self.pos = [0, s[1] - self.default_image.size[1]]
> @@ -68,7 +66,7 @@ class Layer:
> print self.layer
> print self.width
> self.back.blit(self.L[0].image, (0, self.default_image.size[1] - self.L[0].size[1]))
> - for i in range(1,self.width):
> + for i in range(1,int(self.width)):
> lw += self.L[i-1].size[0]
> self.back.blit(self.L[i].image, (lw , self.h - self.L[i].size[1]))
>
> diff --git a/code/game.py b/code/game.py
> index 32aba35..427bac8 100644
> --- a/code/game.py
> +++ b/code/game.py
> @@ -27,6 +27,7 @@ from hud import HUD
> from stage import Stage
> from music import Music_player
> from power_up import PowerUp
> +from foreground import Foreground
>
> class Game:
> screen = None
> @@ -320,6 +321,7 @@ class Game:
> actor.update(dt, ms, self.counter, x, y)
>
> self.hud.update(self.screen, ms)
> + self.foreground.update(ms)
>
> def actors_draw(self):
> """
> @@ -330,6 +332,7 @@ class Game:
> for actor in self.actors_list.values():
> actor.draw(self.screen)
>
> + self.foreground.draw(self.screen)
> # draw the hud after all the actors, so it will be at the top
> self.hud.draw(self.screen)
>
> @@ -434,6 +437,9 @@ class Game:
> elif element.type == "background":
> self.background.nextTile(element.image, element.layer)
> print "LAYER: ", element.layer
> + elif element.type == "foreground":
> + self.foreground.addForeg(element.image, element.pos_y)
> +
>
> def loop(self):
> """
> @@ -448,6 +454,9 @@ class Game:
> # creates the background
> self.background = Background("earth.jpg", "320.png","321.png")
>
> + # creates foreground
> + self.foreground = Foreground()
> +
> #starts clock
> clock = pygame.time.Clock()
> dt = 16
> diff --git a/code/stage.py b/code/stage.py
> index 469dbde..cb9e93b 100644
> --- a/code/stage.py
> +++ b/code/stage.py
> @@ -33,6 +33,12 @@ class Backg(Item):
> for tag in ['image', 'layer']:
> setattr(self, tag, self.get_element(tag, node))
>
> +class Foreg(Item):
> + def __init__(self, node):
> + Item.__init__(self, node)
> + for tag in ['image', 'pos_y']:
> + setattr(self, tag, self.get_element(tag, node))
> +
> class Enemy(Item):
> def __init__(self, node):
> Item.__init__(self, node)
> @@ -103,6 +109,8 @@ class Stage:
> type = node.getElementsByTagName("type")[0].childNodes[0].nodeValue
> if type == "background":
> item = Backg(node)
> + elif type == "foreground":
> + item = Foreg(node)
> elif type == "enemy":
> item = Enemy(node)
> elif type == "sw_mult":
> diff --git a/data/stage1.xml b/data/stage1.xml
> index 24c270a..4c8482b 100644
> --- a/data/stage1.xml
> +++ b/data/stage1.xml
> @@ -18,6 +18,12 @@
> <special>0</special>
> </item>
> <item>
> + <type>foreground</type>
> + <cc>120</cc>
> + <pos_y>10</pos_y>
> + <image>tiles/stars1.jpg</image>
> +</item>
> +<item>
> <type>enemy</type>
> <cc>150</cc>
> <pos_x>0</pos_x>
> commit 95ef8cd5e3a6eeac58fcfbb186c9c8246be828ab
> Author: João <jcorrea@marvim.(none)>
> Date: Thu Dec 10 22:01:09 2009 -0200
>
> Added a new layer in background.py
> Added some comments
>
> diff --git a/code/background.py b/code/background.py
> index 5e895a1..b3ef0dd 100644
> --- a/code/background.py
> +++ b/code/background.py
> @@ -22,7 +22,10 @@ class Image:
> self.size = self.image.get_size()
>
> class Layer:
> - def __init__(self, image, width, layer):
> + """
> + It is one of the background's layers
> + """
> + def __init__(self, image, width, layer, speed):
> self.default_image = image
> self.pos = [0, 0]
> self.width = width
> @@ -31,21 +34,39 @@ class Layer:
> self.w = width * image.size[0]
> self.h = image.size[1]
> self.back = pygame.Surface((self.w, self.h), SRCALPHA)
> + self.speed = speed
>
> def subLayer(self, screen):
> + """
> + FUCK! I can't remember what this shit is supposed to do...
> + But it is something related to positioning the layer correctly,
> + I'll add a better description soon!
> + """
> s = screen.get_size()
> self.pos = [0, s[1] - self.default_image.size[1]]
>
> def move(self):
> - self.pos[0] -= 1
> + """
> + Moves the layer
> + """
> + self.pos[0] -= self.speed
> + if (self.pos[0] <= -self.default_image.size[0]):
> + self.pos[0] += self.default_image.size[0]
> + self.build()
> +
>
> def build(self):
> -# self.back = pygame.Surface((self.w, self.h), SRCALPHA)
> - # checks if the number of images is OK
> + """
> + This function builds the background layer based on the queue of images L
> + """
> + # make sure that the queue has enought itens
> while len(self.L) < self.width:
> self.L.append(self.default_image)
>
> + # place images side by side
> lw = 0
> + print self.layer
> + print self.width
> self.back.blit(self.L[0].image, (0, self.default_image.size[1] - self.L[0].size[1]))
> for i in range(1,self.width):
> lw += self.L[i-1].size[0]
> @@ -56,6 +77,13 @@ class Layer:
> # remove the first image on the queue
> self.L.popleft()
>
> + def changeImage(self, image):
> + """
> + Changes the default image and adds it to the queue
> + """
> + self.default_image = image
> + self.L.append(image)
> +
>
> class Background:
> """
> @@ -65,48 +93,60 @@ class Background:
> pos = None
> L = deque()
> loaded_imgs = {}
> - ms = 0
> + ms1 = 0
> + ms2 = 0
> size = [0, 0]
>
> - def __init__(self, image0, image1):
> + def __init__(self, image0, image1, image2):
> """
> Creates a surface with tiles repeated until cover the entire screen.
> """
> -
> + from math import ceil
> # to work "perfectly" all images in the tile must have the same size
> - self.layer0 = Layer(Image(self.loadImage(image0)), 1, 0)
> + self.layer0 = Layer(Image(self.loadImage(image0)), 1, 0, 0)
> self.size = self.layer0.default_image.size
> screen = pygame.display.get_surface()
> screen_size = screen.get_size()
>
> image = self.loadImage(image1)
> - size = image.get_size()
> - self.layer1 = Layer(Image(image), screen_size[0] / size[0] + 1, 1)
> + size = image.get_size()
> + # FIX: How dilly was using ceil before?
> + self.layer1 = Layer(Image(image), ceil(float(screen_size[0]) / size[0]) + 1, 1, 1)
> self.layer1.subLayer(screen)
>
> + image = self.loadImage(image2)
> + size = image.get_size()
> + self.layer2 = Layer(Image(image), ceil(float(screen_size[0]) / size[0]) + 1, 2, 3)
> + self.layer2.subLayer(screen)
> +
> self.layer0.build()
> self.layer1.build()
> + self.layer2.build()
>
> def nextTile(self, next, layer):
> """
> Adds a tile to the queue and makes it default
> """
> - self.layer1.default_image = Image(self.loadImage(next))
> - self.layer1.L.append(self.layer1.default_image)
> - #The tile added becomes the new default tile
> + # Should we rebuild the entire layer when a new image is added?
> + # maybe working on it can fix problems with different width patterns
> + if int(layer) == 1:
> + self.layer1.changeImage(Image(self.loadImage(next)))
> + elif int(layer) == 2:
> + self.layer2.changeImage(Image(self.loadImage(next)))
>
> def update(self, ms):
> """
> Moves the background to the left
> """
> - self.ms += ms
> - if self.ms > 10:
> - self.ms = 0
> + self.ms1 += ms
> + self.ms2 += ms
> + if self.ms1 > 10:
> + self.ms1 = 0
> self.layer1.move()
> - # when it reaches the end, moves the background for the start point
> - if (self.layer1.pos[0] <= -self.layer1.default_image.size[0]):
> - self.layer1.pos[0] += self.layer1.default_image.size[0]
> - self.layer1.build()
> + if self.ms2 > 30:
> + self.ms2 = 0
> + self.layer2.move()
> +
>
> def draw(self,screen):
> """
> @@ -114,6 +154,7 @@ class Background:
> """
> screen.blit(self.layer0.screen, (0,0))
> screen.blit(self.layer1.screen, (self.layer1.pos))
> + screen.blit(self.layer2.screen, (self.layer2.pos))
>
> def loadImage(self, image_path):
> """
> diff --git a/code/game.py b/code/game.py
> index 8915c11..32aba35 100644
> --- a/code/game.py
> +++ b/code/game.py
> @@ -432,7 +432,8 @@ class Game:
> powerup.set_pos(pos)
> self.actors_list["powerups"].add(powerup)
> elif element.type == "background":
> - self.background.nextTile(element.image, 1)
> + self.background.nextTile(element.image, element.layer)
> + print "LAYER: ", element.layer
>
> def loop(self):
> """
> @@ -445,7 +446,7 @@ class Game:
> self.counter = 0
>
> # creates the background
> - self.background = Background("earth.jpg", "321.png")
> + self.background = Background("earth.jpg", "320.png","321.png")
>
> #starts clock
> clock = pygame.time.Clock()
> diff --git a/data/graphic/320.png b/data/graphic/320.png
> new file mode 100644
> index 0000000..e2f0703
> Binary files /dev/null and b/data/graphic/320.png differ
> diff --git a/data/stage1.xml b/data/stage1.xml
> index 672b05a..24c270a 100644
> --- a/data/stage1.xml
> +++ b/data/stage1.xml
> @@ -4,7 +4,7 @@
> <type>background</type>
> <cc>1</cc>
> <image>tiles/stars1.jpg</image>
> - <layer>1</layer>
> + <layer>2</layer>
> </item>
> <item>
> <type>enemy</type>
> @@ -98,7 +98,7 @@
> <type>background</type>
> <cc>500</cc>
> <image>tiles/stars3.jpg</image>
> - <layer>1</layer>
> + <layer>2</layer>
> </item>
> <item>
> <type>sw_mult</type>
> @@ -240,13 +240,13 @@
> <type>background</type>
> <cc>1000</cc>
> <image>tiles/stars1.jpg</image>
> - <layer>1</layer>
> + <layer>2</layer>
> </item>
> <item>
> <type>background</type>
> <cc>1010</cc>
> <image>tiles/stars3.jpg</image>
> - <layer>1</layer>
> + <layer>2</layer>
> </item>
> <item>
> <type>enemy</type>
> -----------------------------------------------------------------------
>
> Summary of changes:
> code/background.py | 81 +++++++++++++++++++++++++++++++++++++-------------
> code/game.py | 14 +++++++-
> code/stage.py | 8 +++++
> data/graphic/320.png | Bin 0 -> 72572 bytes
> data/stage1.xml | 14 ++++++--
> 5 files changed, 90 insertions(+), 27 deletions(-)
> create mode 100644 data/graphic/320.png
>
>
> --
> Dead Channel is a sci-fi shoot 'em up game developed using pygame.
>
>
> ------------------------------------------------------------------------------
> Return on Information:
> Google Enterprise Search pays you back
> Get the facts.
> http://p.sf.net/sfu/google-dev2dev
>
> _______________________________________________
> Deadchannel-commits mailing list
> Dea...@li...
> https://lists.sourceforge.net/lists/listinfo/deadchannel-commits
>
>
--
Bruno Cardoso Lopes
http://www.brunocardoso.cc
|