Pygame库是专门为了帮助做出的游戏和其他多媒体应用Python编程语言的一个开放源代码模块。本文将利用Pygame模块制作一个打地鼠的小游戏,快跟随小编一起学习一下吧
前言
今天给大家写一个个打地鼠小游戏,废话不多说直接开始~
开发工具
Python版本: 3.6.4
相关模块:
pygame模块;
以及一些Python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠~
首先,让我们确定一下游戏中有哪些元素。打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类:
|
`'''地鼠'''`
`class` `Mole(pygame.sprite.Sprite):`
`def` `__init__(``self``, image_paths, position,` `*``*``kwargs):`
`pygame.sprite.Sprite.__init__(``self``)`
`self``.images` `=` `[pygame.transform.scale(pygame.image.load(image_paths[``0``]), (``101``,` `103``)),`
`pygame.transform.scale(pygame.image.load(image_paths[``-``1``]), (``101``,` `103``))]`
`self``.image` `=` `self``.images[``0``]`
`self``.rect` `=` `self``.image.get_rect()`
`self``.mask` `=` `pygame.mask.from_surface(``self``.image)`
`self``.setPosition(position)`
`self``.is_hammer` `=` `False`
`'''设置位置'''`
`def` `setPosition(``self``, pos):`
`self``.rect.left,` `self``.rect.top` `=` `pos`
`'''设置被击中'''`
`def` `setBeHammered(``self``):`
`self``.is_hammer` `=` `True`
`'''显示在屏幕上'''`
`def` `draw(``self``, screen):`
`if` `self``.is_hammer:` `self``.image` `=` `self``.images[``1``]`
`screen.blit(``self``.image,` `self``.rect)`
`'''重置'''`
`def` `reset(``self``):`
`self``.image` `=` `self``.images[``0``]`
`self``.is_hammer` `=` `False`
|
显然,地鼠有被锤子击中和未被锤子击中这两种状态,所以需要加载两张图,当地鼠被击中时从未被击中的地鼠状态图切换到被击中后的地鼠状态图(ps:图可能不像地鼠)。
然后我们再来定义一下锤子这个游戏精灵类,和地鼠类似,锤子也有未锤下去和已锤下去两种状态,只不过锤下去之后需要迅速恢复回未锤下去的状态,具体而言,代码实现如下:
|
`class` `Hammer(pygame.sprite.Sprite):`
`def` `__init__(``self``, image_paths, position,` `*``*``kwargs):`
`pygame.sprite.Sprite.__init__(``self``)`
`self``.images` `=` `[pygame.image.load(image_paths[``0``]), pygame.image.load(image_paths[``1``])]`
`self``.image` `=` `self``.images[``0``]`
`self``.rect` `=` `self``.image.get_rect()`
`self``.mask` `=` `pygame.mask.from_surface(``self``.images[``1``])</