前言
如果让你模仿大猩猩,你会怎么做?一个典型的动作就是用两只手轮流快速拍打胸口,敲出嘭
嘭嘭打鼓一般的声音。对就是这样
小编前几天不是刚刚有看见一部关于猩猩的电影嘛!所以今天的灵感就来了——
话不多说,直接切入主题了哈:今天小编带着大家制作一款《狂揍大猩猩》的小说?
游戏给大家!嘿嘿 希望大家喜欢(? ω ?)
正文
《狂揍大猩猩》是基于Pygame写的一款界面化的小程序!
一、准备中
图片素材背景音乐等
环境安装
Python3、 Pycharm 、Pygame模块。(如需安装包、激活码等直接私信我即可完成安装问题解答都可以的哈~)
第三方库的安装:pip install pygame
二、效果展示
?1)游戏界面
大猩猩出没,鼠标点击可以出现揍猩猩的手!
2)揍大猩猩
打到跟没打到的猩猩都有不同音效显示的哦!
三、代码展示
import os, pygamefrom pygame.locals import *main_dir = os.path.split(os.path.abspath(__file__))[0] # 获取python文件所在路径data_dir = os.path.join(main_dir, 'data') # 获取data文件夹路径def load_image(name, colorkey=None): # 加载图片的方法 fullname = os.path.join(data_dir, name) # 拼接图片路径 image = pygame.image.load(fullname) # 加载图片 image = image.convert() # 透明化 if colorkey is not None: if colorkey is -1: colorkey = image.get_at((0,0)) image.set_colorkey(colorkey, RLEACCEL) return image, image.get_rect() # 返回图片和图片矩形信息def load_sound(name): # 加载声音的方法 fullname = os.path.join(data_dir, name) # 拼接声音文件的路径 sound = pygame.mixer.Sound(fullname) # 获取声音文件的路径 return sound #返回声音class Fist(pygame.sprite.Sprite): # 按下鼠标,握紧拳头 def __init__(self): pygame.sprite.Sprite.__init__(self) self.image, self.rect = load_image('fist.bmp', -1) # 获取图片与矩形 self.punching = 0 # 用于是否击打 def update(self): #基于鼠标位置,移动拳头 pos = pygame.mouse.get_pos() # 获取鼠标位置 self.rect.midtop = pos # 设置拳头的位置 if self.punching: self.rect.move_ip(5, 10) def punch(self, target): if not self.punching: self.punching = 1 hitbox = self.rect.inflate(-5, -5) return hitbox.colliderect(target.rect) def unpunch(self): # 拉回拳头 self.punching = 0class Chimp(pygame.sprite.Sprite): # 大猩猩 ,被击打时可以旋转 def __init__(self): pygame.sprite.Sprite.__init__(self) self.image, self.rect = load_image('chimp.bmp', -1) # 加载图片 screen = pygame.display.get_surface() #得到表明 self.area = screen.get_rect() #表面矩形区域 self.rect.topleft = 10, 10 #设置矩形左上顶点的位置 self.move = 9 # 移动速度 self.dizzy = 0 # 角度 def update(self): if self.dizzy: self._spin() # 旋转 else: self._walk() # 行走 def _walk(self): # 移动的方法 newpos = self.rect.move((self.move, 0)) if self.rect.left < self.area.left or self.rect.right > self.area.right: # 判断是否碰到左右边缘 self.move = -self.move # 速度反向 newpos = self.rect.move((self.move, 0)) # 移动大猩猩 self.image = pygame.transform.flip(self.image, 1, 0) # 旋转 self.rect = newpos # 重新设定矩形框的位置 def _spin(self): # 旋转大猩猩的方法 center = self.rect.center self.dizzy = self.dizzy + 12 # 每隔12度旋转一次 if self.dizzy >= 360: # 度数大于360度时 self.dizzy = 0 # 重新设置度数为0 self.image = self.original # 获取原始图片 else: self.image = pygame.transform.rotate(self.original, self.dizzy) # 否则旋转 self.rect = self.image.get_rect(center=center) # 获得矩形 def punched(self): # 引起大猩猩旋转的方法 if not self.dizzy: # 如果dizzy==0 self.dizzy = 1 # 设置dizzy self.original = self.image # 设置原始图片def main(): pygame.init() # 初始化 screen = pygame.display.set_mode((600, 100)) # 生成窗口 pygame.display.set_caption('Monkey Fever') # 设置窗口的标题 pygame.mouse.set_visible(0) # 设置鼠标不可见 background = pygame.Surface(screen.get_size()) #获取窗口背景 background = background.convert() # 转换成透明 background.fill((250, 250, 250)) # 填充白色 if pygame.font: font = pygame.font.Font(None, 36) # 生成字体样式 text = font.render("Pummel The Chimp, And Win $$$", 1, (10, 10, 10)) # 渲染字体 textpos = text.get_rect(centerx=background.get_width()/2) background.blit(text, textpos) # 输出字体 screen.blit(background, (0, 0)) #输出背景到窗口 pygame.display.flip() # 刷新 clock = pygame.time.Clock() # 设定时钟 whiff_sound = load_sound('whiff.wav') # 加载声音 punch_sound = load_sound('punch.wav') # 加载声音 chimp = Chimp() # 生成chimp fist = Fist() # 生成fist allsprites = pygame.sprite.RenderPlain((fist, chimp)) going = True while going: clock.tick(60) # 每秒循环60次 for event in pygame.event.get(): if event.type == QUIT: # 处理退出事件 going = False elif event.type == KEYDOWN and event.key == K_ESCAPE: # 处理退出事件 going = False elif event.type == MOUSEBUTTONDOWN: # 鼠标按下事件 if fist.punch(chimp): punch_sound.play() #播放声音 chimp.punched() else: whiff_sound.play() #miss elif event.type == MOUSEBUTTONUP: #松开鼠标事件 fist.unpunch() allsprites.update() # 更新精灵 screen.blit(background, (0, 0)) # 画背景表面于窗口 allsprites.draw(screen) # 画所有精灵于窗口 pygame.display.flip() # 刷新 pygame.quit()if __name__ == '__main__': main()?小结
好啦——这款《狂揍大猩猩》的游戏写到这里正式结束,界面比较简单撒,大家有兴趣可以升级下~
源码基地——
私信小编06即可啦~
文章汇总——
项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了
(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)
标签: self
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。