By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,098 Members | 1,950 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,098 IT Pros & Developers. It's quick & easy.

pygame problems

P: 51
Hi guys i have come again with more problems.This time it has to do with pygame.The following code does not give any error messages but it does not do what it is supposed to do either.the code is a bit long but it's straightforward.Please help
Expand|Select|Wrap|Line Numbers
  1. import pygame
  2. from pygame.locals import *
  3. pygame.init()
  4. screen=pygame.display.set_mode((900,900))
  5.  
  6.  
  7. class Hero(pygame.sprite.Sprite):
  8.     def __init__(self):
  9.         pygame.sprite.Sprite.__init__(self)
  10.         self.image=pygame.image.load('C:/Python24/r3.PNG')
  11.         self.image=self.image.convert()
  12.         self.rect=self.image.get_rect()
  13.         self.rect.topleft=0,500
  14.         self.a=screen.get_rect()
  15.     def forward(self):
  16.         a=1
  17.     def back(self):
  18.         a=2
  19.     def original(self):
  20.         self.a.topleft=0,500
  21.     def moveup(self):
  22.         a=3  
  23.     def movedown(self):
  24.         a=4    
  25.     def update(self):
  26.         if a==0:
  27.             self.original()
  28.         if a==1:
  29.             if self.rect.left<=self.a.right :
  30.                 self.rect.move_ip(5,0)
  31.             else:
  32.                 self.original()
  33.         if a==2:
  34.             if self.rect.left!=0:
  35.                 self.rect.move_ip(-5,0)
  36.             else:
  37.                 self.original()
  38.         if a==3:
  39.             if self.rect.top!=self.a.top:
  40.                 self.rect.move_ip(0,5)
  41.             else:
  42.                 self.rect.move_ip(0,-5)
  43.         if a==4:
  44.             if self.rect.bottom!=0:
  45.                 self.rect.move_ip(0,-5)
  46.             else:
  47.                 self.rect.move_ip(0,5)
  48. class Villian(pygame.sprite.Sprite):
  49.     def __init__(self):
  50.         pygame.sprite.Sprite.__init__(self)
  51.         self.image=pygame.image.load('C:/Python24/toba-pyweek3/toba-pyweek3/data/cards/1.PNG')
  52.         self.rect=self.image.convert()
  53.         self.rect=self.image.get_rect()
  54.         self.rect.topleft=400,500
  55.         a=0
  56.     def forward(self):
  57.         self.rect.move_ip(0,5)
  58.  
  59.     def update(self):
  60.         if self.rect.top!=900:
  61.             self.forward()
  62.         else:
  63.             self.original()
  64.     def original(self):
  65.         self.rect.topleft=400,500
  66.  
  67. imig=pygame.image.load('C:/Python24/Blue hills.GIF')
  68. background=pygame.Surface(screen.get_size())
  69. background=background.convert()
  70. background.blit(imig,(0,0))
  71. screen.blit(background,(0,0))
  72. hero=Hero()
  73. villian=Villian()
  74. allsprites=pygame.sprite.RenderPlain((hero,villian))
  75. allsprites.draw(screen)
  76. pygame.display.flip()
  77.  
  78. clock=pygame.time.Clock()
  79. while True:
  80.     clock.tick(60)
  81.     for event in pygame.event.get():
  82.         if event.type==KEYDOWN and event.key==K_UP:
  83.             hero.moveup()
  84.         if event.type==KEYDOWN and event.key==K_DOWN:
  85.             hero.movedown()
  86.         if event.type==KEYDOWN and event.key==K_RIGHT:
  87.             hero.forward()
  88.         if event.type==KEYDOWN and event.key==K_LEFT:
  89.             hero.back()
  90.         if event.type==QUIT:
  91.             pygame.quit()
  92.             raise SystemExit()
  93. allsprites.update()
  94. screen.blit(background,(0,0))
  95. allsprites.draw(screen)
  96. pygame.display.flip()
May 20 '07 #1
Share this Question
Share on Google+
11 Replies


ilikepython
Expert 100+
P: 844
Hi guys i have come again with more problems.This time it has to do with pygame.The following code does not give any error messages but it does not do what it is supposed to do either.the code is a bit long but it's straightforward.Please help
Expand|Select|Wrap|Line Numbers
  1. clock=pygame.time.Clock()
  2. while True:
  3.     clock.tick(60)
  4.     for event in pygame.event.get():
  5.         if event.type==KEYDOWN and event.key==K_UP:
  6.             hero.moveup()
  7.         if event.type==KEYDOWN and event.key==K_DOWN:
  8.             hero.movedown()
  9.         if event.type==KEYDOWN and event.key==K_RIGHT:
  10.             hero.forward()
  11.         if event.type==KEYDOWN and event.key==K_LEFT:
  12.             hero.back()
  13.         if event.type==QUIT:
  14.             pygame.quit()
  15.             raise SystemExit()
  16. allsprites.update()
  17. screen.blit(background,(0,0))
  18. allsprites.draw(screen)
  19. pygame.display.flip()
Hi, I'm not sure you're indenting is correct. In your while loop you don't draw anything or update the screen. You should put the updating, drawing, and blitting in every frame. The way you have it, it is only going to do something when you close the window and only once.Your while loop should look like this:
Expand|Select|Wrap|Line Numbers
  1. while True:
  2.     clock.tick(60)
  3.     for event in pygame.event.get():
  4.         if event.type==KEYDOWN and event.key==K_UP:
  5.             hero.moveup()
  6.         if event.type==KEYDOWN and event.key==K_DOWN:
  7.             hero.movedown()
  8.         if event.type==KEYDOWN and event.key==K_RIGHT:
  9.             hero.forward()
  10.         if event.type==KEYDOWN and event.key==K_LEFT:
  11.             hero.back()
  12.         if event.type==QUIT:
  13.             pygame.quit()
  14.             raise SystemExit()
  15.     allsprites.update()
  16.     screen.blit(background,(0,0))
  17.     allsprites.draw(screen)
  18.     pygame.display.flip()
  19.  
May 20 '07 #2

P: 51
Hi, I'm not sure you're indenting is correct. In your while loop you don't draw anything or update the screen. You should put the updating, drawing, and blitting in every frame. The way you have it, it is only going to do something when you close the window and only once.Your while loop should look like this:
Expand|Select|Wrap|Line Numbers
  1. while True:
  2.     clock.tick(60)
  3.     for event in pygame.event.get():
  4.         if event.type==KEYDOWN and event.key==K_UP:
  5.             hero.moveup()
  6.         if event.type==KEYDOWN and event.key==K_DOWN:
  7.             hero.movedown()
  8.         if event.type==KEYDOWN and event.key==K_RIGHT:
  9.             hero.forward()
  10.         if event.type==KEYDOWN and event.key==K_LEFT:
  11.             hero.back()
  12.         if event.type==QUIT:
  13.             pygame.quit()
  14.             raise SystemExit()
  15.     allsprites.update()
  16.     screen.blit(background,(0,0))
  17.     allsprites.draw(screen)
  18.     pygame.display.flip()
  19.  
Thanks for replying.I think what your saying is i should include the blitting and drawing into the while loop,makes sense.How did you get to this level in pygame,any good tutorials?
May 21 '07 #3

ilikepython
Expert 100+
P: 844
Thanks for replying.I think what your saying is i should include the blitting and drawing into the while loop,makes sense.How did you get to this level in pygame,any good tutorials?
The pygame website has some good tutorials and is a good reference.
Here are some links to help you out:
http://www.pygame.org/docs/
http://www.pygame.org/wiki/tutorials
http://www.pygame.org/docs/tut/chimp...ineByLine.html
Also, you could download some sample games from the website so you can see how they are written and learn from them.
May 21 '07 #4

P: 51
The pygame website has some good tutorials and is a good reference.
Here are some links to help you out:
http://www.pygame.org/docs/
http://www.pygame.org/wiki/tutorials
http://www.pygame.org/docs/tut/chimp...ineByLine.html
Also, you could download some sample games from the website so you can see how they are written and learn from them.
Thanks for the links.Do you you know how to make a part of your image move.For instance to make your hero kick or to shoot.
May 22 '07 #5

ilikepython
Expert 100+
P: 844
Thanks for the links.Do you you know how to make a part of your image move.For instance to make your hero kick or to shoot.
Do you mean animation? You can't make part of an image move, you need to make seperate pygame.Surfaces. If you want to do animation like walking, running, or shooting you can have a sprite sheet all in one BMP file showing all the possible frames of animation of a charatcer. You can blit the part of the image that you need for the current frame to represent an animation. Is that what you need?
May 23 '07 #6

P: 51
Do you mean animation? You can't make part of an image move, you need to make seperate pygame.Surfaces. If you want to do animation like walking, running, or shooting you can have a sprite sheet all in one BMP file showing all the possible frames of animation of a charatcer. You can blit the part of the image that you need for the current frame to represent an animation. Is that what you need?
I did not think of that thats actually brilliant and a lot easier the creating little seperate images.Thanks
May 26 '07 #7

ilikepython
Expert 100+
P: 844
I did not think of that thats actually brilliant and a lot easier the creating little seperate images.Thanks
No problem. (stupid limit)
May 28 '07 #8

P: 51
No problem. (stupid limit)
what do you mean by stupid limit.
May 30 '07 #9

ilikepython
Expert 100+
P: 844
what do you mean by stupid limit.
Lol, you need to enter at least 20 characters in a message. Used to be 10.
May 30 '07 #10

P: 51
Lol, you need to enter at least 20 characters in a message. Used to be 10.
Oh,lol.Thanks again.
May 31 '07 #11

bartonc
Expert 5K+
P: 6,596
Lol, you need to enter at least 20 characters in a message. Used to be 10.
Or !
May 31 '07 #12

Post your reply

Sign in to post your reply or Sign up for a free account.