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

前言

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

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

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

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

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

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

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

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

正文

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

一、准备中

图片素材背景音乐等👇

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

环境安装👇

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

以的哈~)

第三方库的安装:pip install pygame

二、效果展示

​1)游戏界面

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

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

2)揍大猩猩

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

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

三、代码展示


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: # &#x5224;&#x65AD;&#x662F;&#x5426;&#x78B0;&#x5230;&#x5DE6;&#x53F3;&#x8FB9;&#x7F18;
            self.move = -self.move # &#x901F;&#x5EA6;&#x53CD;&#x5411;
            newpos = self.rect.move((self.move, 0)) # &#x79FB;&#x52A8;&#x5927;&#x7329;&#x7329;
            self.image = pygame.transform.flip(self.image, 1, 0)  # &#x65CB;&#x8F6C;
        self.rect = newpos # &#x91CD;&#x65B0;&#x8BBE;&#x5B9A;&#x77E9;&#x5F62;&#x6846;&#x7684;&#x4F4D;&#x7F6E;

    def _spin(self): # &#x65CB;&#x8F6C;&#x5927;&#x7329;&#x7329;&#x7684;&#x65B9;&#x6CD5;
        center = self.rect.center
        self.dizzy = self.dizzy + 12  # &#x6BCF;&#x9694;12&#x5EA6;&#x65CB;&#x8F6C;&#x4E00;&#x6B21;
        if self.dizzy >= 360:  # &#x5EA6;&#x6570;&#x5927;&#x4E8E;360&#x5EA6;&#x65F6;
            self.dizzy = 0     # &#x91CD;&#x65B0;&#x8BBE;&#x7F6E;&#x5EA6;&#x6570;&#x4E3A;0
            self.image = self.original # &#x83B7;&#x53D6;&#x539F;&#x59CB;&#x56FE;&#x7247;
        else:
            self.image = pygame.transform.rotate(self.original, self.dizzy) # &#x5426;&#x5219;&#x65CB;&#x8F6C;
        self.rect = self.image.get_rect(center=center) # &#x83B7;&#x5F97;&#x77E9;&#x5F62;

    def punched(self): # &#x5F15;&#x8D77;&#x5927;&#x7329;&#x7329;&#x65CB;&#x8F6C;&#x7684;&#x65B9;&#x6CD5;
        if not self.dizzy:  # &#x5982;&#x679C;dizzy==0
            self.dizzy = 1  # &#x8BBE;&#x7F6E;dizzy
            self.original = self.image # &#x8BBE;&#x7F6E;&#x539F;&#x59CB;&#x56FE;&#x7247;

def main():
    pygame.init() # &#x521D;&#x59CB;&#x5316;
    screen = pygame.display.set_mode((600, 100))  # &#x751F;&#x6210;&#x7A97;&#x53E3;
    pygame.display.set_caption('Monkey Fever')   # &#x8BBE;&#x7F6E;&#x7A97;&#x53E3;&#x7684;&#x6807;&#x9898;
    pygame.mouse.set_visible(0)  # &#x8BBE;&#x7F6E;&#x9F20;&#x6807;&#x4E0D;&#x53EF;&#x89C1;

    background = pygame.Surface(screen.get_size()) #&#x83B7;&#x53D6;&#x7A97;&#x53E3;&#x80CC;&#x666F;
    background = background.convert()  # &#x8F6C;&#x6362;&#x6210;&#x900F;&#x660E;
    background.fill((250, 250, 250))   # &#x586B;&#x5145;&#x767D;&#x8272;
    if pygame.font:
        font = pygame.font.Font(None, 36)  # &#x751F;&#x6210;&#x5B57;&#x4F53;&#x6837;&#x5F0F;
        text = font.render("Pummel The Chimp, And Win $$$", 1, (10, 10, 10)) # &#x6E32;&#x67D3;&#x5B57;&#x4F53;
        textpos = text.get_rect(centerx=background.get_width()/2)
        background.blit(text, textpos) # &#x8F93;&#x51FA;&#x5B57;&#x4F53;
    screen.blit(background, (0, 0))  #&#x8F93;&#x51FA;&#x80CC;&#x666F;&#x5230;&#x7A97;&#x53E3;
    pygame.display.flip()  # &#x5237;&#x65B0;

    clock = pygame.time.Clock()  # &#x8BBE;&#x5B9A;&#x65F6;&#x949F;
    whiff_sound = load_sound('whiff.wav')  # &#x52A0;&#x8F7D;&#x58F0;&#x97F3;
    punch_sound = load_sound('punch.wav')  # &#x52A0;&#x8F7D;&#x58F0;&#x97F3;
    chimp = Chimp() # &#x751F;&#x6210;chimp
    fist = Fist()   # &#x751F;&#x6210;fist
    allsprites = pygame.sprite.RenderPlain((fist, chimp))
    going = True
    while going:
        clock.tick(60)  # &#x6BCF;&#x79D2;&#x5FAA;&#x73AF;60&#x6B21;
        for event in pygame.event.get():
            if event.type == QUIT: # &#x5904;&#x7406;&#x9000;&#x51FA;&#x4E8B;&#x4EF6;
                going = False
            elif event.type == KEYDOWN and event.key == K_ESCAPE:  # &#x5904;&#x7406;&#x9000;&#x51FA;&#x4E8B;&#x4EF6;
                going = False
            elif event.type == MOUSEBUTTONDOWN:  # &#x9F20;&#x6807;&#x6309;&#x4E0B;&#x4E8B;&#x4EF6;
                if fist.punch(chimp):
                    punch_sound.play() #&#x64AD;&#x653E;&#x58F0;&#x97F3;
                    chimp.punched()
                else:
                    whiff_sound.play() #miss
            elif event.type == MOUSEBUTTONUP:  #&#x677E;&#x5F00;&#x9F20;&#x6807;&#x4E8B;&#x4EF6;
                fist.unpunch()

        allsprites.update()  # &#x66F4;&#x65B0;&#x7CBE;&#x7075;
        screen.blit(background, (0, 0))  # &#x753B;&#x80CC;&#x666F;&#x8868;&#x9762;&#x4E8E;&#x7A97;&#x53E3;
        allsprites.draw(screen)          # &#x753B;&#x6240;&#x6709;&#x7CBE;&#x7075;&#x4E8E;&#x7A97;&#x53E3;
        pygame.display.flip()            # &#x5237;&#x65B0;

if __name__ == '__main__':
    main()

​小结

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

级下~

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

😘 往期推荐阅读——

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

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

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

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

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

🎁 文章汇总——

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

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

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

Original: https://blog.csdn.net/xy258009/article/details/124311093
Author: 嗨!栗子同学
Title: 【Python小游戏】一只大猩猩“刷”爆了朋友圈?敢玩这个游戏不?(附源码)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/782891/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球