python人狗大战游戏(Python小游戏一只大猩猩)

前言

如果让你模仿大猩猩,你会怎么做?一个典型的动作就是用两只手轮流快速拍打胸口,敲出嘭

嘭嘭打鼓一般的声音。对就是这样

python人狗大战游戏(Python小游戏一只大猩猩)(1)

小编前几天不是刚刚有看见一部关于猩猩的电影嘛!所以今天的灵感就来了——

话不多说,直接切入主题了哈:今天小编带着大家制作一款《狂揍大猩猩》的小说​

游戏给大家!嘿嘿 希望大家喜欢(❤ ω ❤)

正文

《狂揍大猩猩》是基于Pygame写的一款界面化的小程序!

一、准备中

图片素材背景音乐等

python人狗大战游戏(Python小游戏一只大猩猩)(2)

环境安装

python3、 Pycharm 、Pygame模块。(如需安装包、激活码等直接私信我即可完成安装问题解答都可以的哈~)

第三方库的安装:pip install pygame

二、效果展示

​1)游戏界面

python人狗大战游戏(Python小游戏一只大猩猩)(3)

大猩猩出没,鼠标点击可以出现揍猩猩的手!

2)揍大猩猩

python人狗大战游戏(Python小游戏一只大猩猩)(4)

打到跟没打到的猩猩都有不同音效显示的哦!

三、代码展示

import os, pygame from 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 = 0 class 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.rectleft = 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 |已有文章汇总 | 持续更新,直接看这篇就够了

(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页