Python编程:从入门到实践,课后题13-5
2018-01-08 15:12
274 查看
自学Python两三个月了,深感智商的欠缺,思维方式比较线性,毕竟是一个大学只学过一门VB的女同学
。所以学编程的道路上经常遇到障碍,笨笨……一个小问题都会牵出很深奥的知识。发现这本书的第二部分网上找不到参考答案,就分享一个自己研究了很多天(真的是好几天,?),最后做的还算成功的13.5。编程真的很奇妙,虽然我学的很笨拙,但是成就感还是要爆了……
。所以学编程的道路上经常遇到障碍,笨笨……一个小问题都会牵出很深奥的知识。发现这本书的第二部分网上找不到参考答案,就分享一个自己研究了很多天(真的是好几天,?),最后做的还算成功的13.5。编程真的很奇妙,虽然我学的很笨拙,但是成就感还是要爆了……
import pygame import sys from random import randint from pygame.sprite import Sprite from pygame.sprite import Group pygame.init() bg_color=(20,40,50) screen=pygame.display.set_mode((1200,700)) random_number=randint(1,1200) dropspeed=3 speed_factor=5 class Doll(Sprite): """docstring for Doll""" def __init__(self, screen): super(Doll, self).__init__() self.screen = screen self.image=pygame.image.load('timg.bmp') self.rect=self.image.get_rect() self.screen_rect=self.screen.get_rect() self.rect.centerx=self.screen_rect.centerx self.rect.bottom=self.screen_rect.bottom self.moving_right=False self.moving_left=False def blitme(self): self.screen.blit(self.image,self.rect) def update(self): if self.moving_right and self.rect.right<self.screen_rect.right: self.rect.centerx+=speed_factor if self.moving_left and self.rect.left>0: self.rect.centerx-=speed_factor class Water(Sprite): def __init__(self,screen,random_number): super(Water, self).__init__() self.screen=screen self.image=pygame.image.load("raindrop.bmp") self.rect=self.image.get_rect() self.screen_rect=self.screen.get_rect() self.rect.centerx=random_number self.rect.top=0 self.y=float(self.rect.y) def blitme(self): self.screen.blit(self.image,self.rect) def update(self): self.y+=dropspeed self.rect.y=self.y def fail(self): if self.rect.top>=self.screen_rect.bottom: print("no") waters.empty() random_number=randint(1,1200) water=Water(screen,random_number) waters.add(water) def catch_water(doll,water,waters): catch=pygame.sprite.spritecollide(doll,waters,True,collided=None) #曾经前边有doll=Doll()……导致在只有移动娃娃才能接到水珠的情况下,水珠不消失 for water in waters:#之前丢了这句,就不是遍历了!!!! if water.rect.top>=water.screen_rect.bottom: waters.empty() if len(waters)==0: random_number=randint(1,1200) water=Water(screen,random_number) waters.add(water) def check_keydown_events(event,doll): if event.key==pygame.K_RIGHT: doll.moving_right=True elif event.key==pygame.K_LEFT: doll.moving_left=True def check_keyup_events(event,doll): if event.key==pygame.K_RIGHT: doll.moving_right=False elif event.key==pygame.K_LEFT: doll.moving_left=False def event_check(doll): for event in pygame.event.get(): if event.type==pygame.QUIT: sys.exit() elif event.type==pygame.KEYDOWN: check_keydown_events(event,doll) elif event.type==pygame.KEYUP: check_keyup_events(event,doll) def rungame(): water=Water(screen,random_number) waters=Group() waters.add(water) doll=Doll(screen) while True: screen.fill(bg_color) #这一步很重要啊,要是挪到True以前,娃娃就会出现重影,擦掉背景色。 doll.blitme() waters.draw(screen) pygame.display.flip() event_check(doll) doll.update() waters.update() catch_water(doll,water,waters) rungame()
相关文章推荐
- 《Python编程-从入门到实践》课后习题(5)
- 【day 13】python编程:从入门到实践学习笔记-基于Django框架的Web开发-Django入门(四)
- 《Python编程-从入门到实践》课后习题(1)
- python编程:从入门到实践 第四章课后题
- 《Python编程 从入门到实践》第十章课后习题
- Python编程:从入门到实践 第三章课后题
- 《Python编程-从入门到实践》课后习题(2)
- python编程:从入门到实践课后作业(一)
- 《Python编程:从入门到实践》课后练习2-1到2-11
- 《Python编程 从入门到实践》第九章课后习题
- 《Python编程:从入门到实践》课后练习4-1到4-15
- 《Python编程-从入门到实践》课后习题(8)
- Python编程:从入门到实践(课后习题3)
- python编程:从入门到实践 课后题目(第二章)
- 《Python编程:从入门到实践》课后练习3-1到3-11
- 《Python编程-从入门到实践》课后习题(7)
- Python编程:从入门到实践(课后习题5)
- 《Python编程 从入门到实践》第二章课后习题
- 《Python编程 从入门到实践》第六章课后习题
- python编程:从入门到实践 第八章课后题