【Python小游戏】一只大猩猩“刷”爆了朋友圈?敢玩这个游戏不?(附源码)

68 篇文章 2 订阅
62 篇文章 12 订阅

 前言

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

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

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

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

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

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区

正文

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

一、准备中

图片素材背景音乐等👇

环境安装👇

Python3、 Pycharm 、Pygame模块。(如需安装包、激活码等直接私信我即可安装问题解答都可

以的哈~)

第三方库的安装:pip install pygame

二、效果展示

​1)游戏界面

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

2)揍大猩猩

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

三、代码展示


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.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()            # 刷新


if __name__ == '__main__':
    main()

​小结

好啦——这款《狂揍大猩猩🦍》的游戏写到这里正式结束,界面比较简单撒,大家有兴趣可以升

级下~

✨完整的素材等:也可以滴滴我吖!或者点击文末公众号自取免费拿的哈~

😘往期推荐阅读——

项目0.6 【Python实战项目】做一个 刮刮乐 案例,一不小心....着实惊艳到我了。

项目0.7  升级版飞机大战来袭,手把手教学,万字详解,你还学不会嘛?

项目1.2   Pygame小游戏:玩扫雷就在瞎点的,不止你一个人。

项目1.6 【Pygame小游戏】斗地主我见多了,BUT 这款开源欢乐斗地主,最让人服气~

项目2.7  【Pygame小游戏】你喜欢走迷宫?那错过这么好的就太可惜了~(AI版本)

🎁文章汇总——

汇总: Python文章合集 | (入门到实战、游戏、Turtle、案例等)

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值