用Python实现蔡徐坤打篮球小游戏(含源码)

导语

网络最火的梗,非“C徐坤打篮球”莫属。个人感觉,只有多年前的“春哥纯爷们”堪与匹敌!

虽然说坤坤在内娱已殉了,但是坤坤的篮球梗依旧名垂千古,嘿嘿嘿,今天就跟着小编一起来回忆一下吧!

“我是练习两年半的个人练习生—C徐坤,喜欢,唱、跳、RAP、 打篮球…”
在这里插入图片描述

那么,C徐坤为什么要打篮球?难道他比Y明还强?

这个梗最初来自于C徐坤参加《练习生》时的特长展示MV。不少人看过之后说了两个字:尴尬!
在这里插入图片描述

哈哈哈,好啦,话不多说,就带大家小小的回忆一小波,今天的主要内容还是就这个梗来给大

家写一款《练习时长两年半》的C徐坤打篮球的Pygame小游戏给大家,娱乐娱乐一下~
在这里插入图片描述

正文

C徐坤打篮球是什么梗?

C徐坤无疑是新一代顶级流量小生,因为人气太旺,或许是NBA看中了他的影响力,C徐坤担

当NBA的中国形象大使,和字母哥、利拉德以及汤普森拍摄了宣传片,宣传片中C徐坤大秀球

技,然而C徐坤将篮球打出了跳街舞的感觉,引发广大篮球迷的吐槽,之后C徐坤打篮球视频

被广泛传播,甚至有人用来做恶搞视频,让C徐坤直接火了一把。

一、环境准备中

1)运行环境
环境安装:python 3.8: 解释器、pycharm: 代码编辑器,游戏模块Pygame需要安装的模块如下

2)的模块安装方式安装即可。自带的一些模块 直接安装Python就可以使用了。

相对应的安装包/安装教程/激活码/使用教程/学 习资料/工具插件 文末免费获取

2)模块安装

第三方库的安装方式如下:

 **一般安装**:pip install +模块名

 **镜像源安装**:pip install -i https://pypi.douban.com/simple/+模块名 

 (还有很多国内镜像源,这里是豆瓣的用习惯 了,其他镜像源可以去看下之前文章都有的) 
 模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。

3)素材准备(可修改)
在这里插入图片描述

二、代码展示

主程序——

import pygame
from pygame.locals import *
from random import randint
from sys import exit
 
class Basketball(pygame.sprite.Sprite):
    def __init__(self,basket_surface,basket_position):
        pygame.sprite.Sprite.__init__(self)
        self.image = basket_surface
        self.rect = self.image.get_rect()
        self.rect.topleft = basket_position
        self.speed = 8
 
    def update(self):
        self.rect.top -= self.speed
        if(self.rect.top<-10):
            self.kill()
 
class Thanos(pygame.sprite.Sprite):
    def __init__(self,thanos_surface,thanos_position):
        pygame.sprite.Sprite.__init__(self)
        self.image = thanos_surface
        self.rect = self.image.get_rect()
        self.rect.topleft = thanos_position
        self.speed = 2
    def update(self):
        self.rect.top += self.speed
        if self.rect.top>SCREEN_HEIGHT:
            self.kill()
            global score
            score-=10
            global missed
            missed+=1
 
 
class CXK(pygame.sprite.Sprite):
    def __init__(self,cxk_surface,cxk_position):
        pygame.sprite.Sprite.__init__(self)
        self.image = cxk_surface
        self.rect = self.image.get_rect()
        self.rect.topleft = cxk_position
        self.speed = 5
        self.isJi = False
        self.bsks = pygame.sprite.Group()
 
    def move(self,offset):
        # 改变cxk的位置,并做边缘判断
        offset_x = offset[pygame.K_RIGHT] - offset[pygame.K_LEFT]
        offset_y = offset[pygame.K_DOWN] - offset[pygame.K_UP]
        # 横向边缘判断
        cxk_position_x = cxk.rect.left + offset_x
        if cxk_position_x < 0:
            cxk.rect.left = 0
        elif cxk_position_x > 400:
            cxk.rect.left = 400
        else:
            cxk.rect.left = cxk_position_x
        # 纵向边缘判断
        cxk_position_y = cxk.rect.top + offset_y
        if cxk_position_y < 150:
            cxk.rect.top = 150
        elif cxk_position_y > 700:
            cxk.rect.top = 700
        else:
            cxk.rect.top = cxk_position_y
 
    def singleShoot(self,bsk1_image):
        bsk1 = Basketball(bsk1_image,(self.rect.left+58,self.rect.top+45))#控制发射位置
        self.bsks.add(bsk1)
 
 
 
 
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 900
 
offset={pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0}
 
pygame.init()
pygame.mixer.init()
pygame.time.delay(1000)
 
clock = pygame.time.Clock()
screen =  pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
pygame.display.set_caption("两年半的练习生")#标题
 
ticks = 0
#载入背景
background=pygame.image.load('resources/images/bg.png')
#载入游戏结束画面
gameover = pygame.image.load('resources/images/gameover.png')
#载入主角cxk的图片并设置初始位置
cxk_image = pygame.image.load('resources/images/cxk.png')
cxk_position = [200,650]
#死亡时变鸡的图片及游戏结束倒计时
ji_image = pygame.image.load('resources/images/ji.png')
countdown = 0
#实例化主角cxk
cxk = CXK(cxk_image,cxk_position)
#载入篮球图片
bsk_image = pygame.image.load('resources/images/basket.png')
#载入敌人图片
thanos_image = pygame.image.load('resources/images/thanos.png')
thanos_group = pygame.sprite.Group()
thanos_down_group = pygame.sprite.Group()
#设置字体
score = 0
pygame.font.init()
score_font = pygame.font.SysFont(None,32)
score_font.set_bold(True)
#载入射击
ji_sound = pygame.mixer.Sound('resources/audios/ji.ogg')
si_sound = pygame.mixer.Sound('resources/audios/si.ogg')
#载入背景音乐
pygame.mixer.music.load('resources/audios/bgm.mp3')
pygame.mixer.music.play(-1)
#设置错过的灭霸数量
missed = 0
missed_font = pygame.font.SysFont(None,32)
missed_font.set_bold(True)
 
while True:
 
 
    #设置帧率
    clock.tick(90)
    #绑定背景图片
    screen.blit(background,(0,0))
    #设置分数面板
    ScoreFaceText = score_font.render("Score:"+str(score),True,(0,0,0))
    Scoretext = ScoreFaceText.get_rect()
    Scoretext.topleft = (10,10)
    screen.blit(ScoreFaceText,Scoretext)
    #设置miss面板
    MissedFaceText = missed_font.render("Missed:"+str(missed)+" (5 to die)",True,(0,0,0))
    Missedtext = MissedFaceText.get_rect()
    Missedtext.topleft = (10,40)
    screen.blit(MissedFaceText,Missedtext)
    #绑定人物图片
    if cxk.isJi :
        cxk.image = ji_image
        si_sound.play()
        countdown+=1
        if countdown == 40:
            pygame.mixer.music.stop()#结束游戏后停止背景音乐
            break#变成鸡后退出循环
    else:
        cxk.image = cxk_image
    #更新篮球图片
    cxk.bsks.update()
    cxk.bsks.draw(screen)
    #产生灭霸图片
    if ticks % 60 == 0:
        t = Thanos(thanos_image,[randint(0,SCREEN_WIDTH-thanos_image.get_width()),thanos_image.get_height()])
        thanos_group.add(t)
    #根据得分增加游戏难度
    if 200<=score<=400:
        t.speed = 3
    elif 400<score<=500:
        t.speed = 4
    elif 500<score<=1000:
        t.speed = 5
    elif score>1000:
        t.speed = 8
    thanos_group.update()
    thanos_group.draw(screen)
    #击毁并计分
    pre = len(thanos_down_group)
    thanos_down_group.add(pygame.sprite.groupcollide(thanos_group,cxk.bsks,True,True))
    if len(thanos_down_group)>pre:
        score+=10
    #坠鸡
    thanos_down_list = pygame.sprite.spritecollide(cxk,thanos_group,True)
    if len(thanos_down_list)>0:
        thanos_down_group.add(thanos_down_list)
        cxk.isJi = True
    #当missed大于5时,退出游戏
    if missed>=5:
        cxk.isJi = True
    screen.blit(cxk.image,cxk.rect)
    ticks+=1
    pygame.display.update()
 
    for event in pygame.event.get():
        #处理游戏退出
        if event.type == pygame.QUIT:
            pygame.quit()
            exit(0)
        #检测按键
        if event.type == pygame.KEYDOWN:
            if event.key in offset:
                offset[event.key] = cxk.speed
            elif event.key == pygame.K_a:
                cxk.singleShoot(bsk_image)
                ji_sound.play()
        elif event.type == pygame.KEYUP:
            if event.key in offset:
                offset[event.key] = 0
 
    cxk.move(offset)
 
#跳出前一段循环,进入游戏结束画面
screen.blit(gameover,(0,0))
pygame.mixer.music.load('resources/audios/dead.mp3')
pygame.mixer.music.play()
while True:
    pygame.display.update()
    #显示最后得分
    score_font = pygame.font.SysFont(None, 72)
    ScoreFaceText = score_font.render("Final Score:" + str(score), True, (0, 0, 0))
    Scoretext = ScoreFaceText.get_rect()
    Scoretext.topleft = (130, 140)
    screen.blit(ScoreFaceText, Scoretext)
    #退出界面
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

三、效果展示
1)游戏界面
在这里插入图片描述

2)坠鸡

在这里插入图片描述

3)游戏得分结束
在这里插入图片描述

总结

好啦,今天的内容就先写到这里,如果代码由帮助到你,记得三连一下啦~

下期我们将更新更加精彩的内容哦~你们的支持是我更新的动力啦!

以上就是今天的全部内容分享,觉得有用的话欢迎点赞收藏哦!

Python经验分享

学好 Python 不论是用于就业还是做副业赚钱都不错,而且学好Python还能契合未来发展趋势——人工智能、机器学习、深度学习等。
小编是一名Python开发工程师,自己整理了一套最新的Python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,这份【最新全套Python学习资料】 一定对你有用!

小编为对Python感兴趣的小伙伴准备了以下籽料 !

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑培训的!

  • 学习时间相对较短,学习内容更全面更集中
  • 可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等学习教程。带你从零基础系统性的学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


最新全套【Python入门到进阶资料 & 实战源码 &安装工具】(安全链接,放心点击)

我已经上传至CSDN官方,如果需要可以扫描下方官方二维码免费获取【保证100%免费】

*今天的分享就到这里,喜欢且对你有所帮助的话,记得点赞关注哦~下回见 !

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 抱歉,作为AI语言模型,我没有画图的能力。但是,你可以使用Python中的一些绘图库(如matplotlib)来绘制徐坤打篮球的图像。你可以按照以下步骤进行操作: 1. 导入需要的库: ```python import matplotlib.pyplot as plt import matplotlib.image as mpimg ``` 2. 加载徐坤打篮球的图片: ```python img = mpimg.imread('caixukun.jpg') ``` 3. 绘制图片: ```python plt.imshow(img) plt.show() ``` 这样就可以在屏幕上显示徐坤打篮球的照片了。 ### 回答2: 用Python可以使用各种库和工具来绘制徐坤打篮球的图像。其中,最常用的库是Pillow和matplotlib。 首先,使用Pillow库创建一个画布,并加载徐坤和篮球的图像。可以使用`Image.open()`方法打开图像文件。 然后,可以使用`ImageDraw`对象来在画布上绘制徐坤和篮球的位置。在绘制之前,可以使用`Image.resize()`方法重新调整图像的大小,使其适应画布。 可以在合适的位置绘制徐坤的图像,使用`draw.text()`方法添加文字标识。 接下来,使用`plt`模块绘制画布,显示徐坤打篮球的图像。`plt.imshow()`方法将画布显示在屏幕上。 最后,使用`plt.show()`方法显示图像,并保存起来。 下面是用300字描述的代码示例: ```python import matplotlib.pyplot as plt from PIL import Image, ImageDraw # 创建画布 canvas = Image.new('RGB', (800, 600), 'white') # 加载徐坤和篮球的图像 cai_image = Image.open('cai_image.jpg') ball_image = Image.open('ball_image.jpg') # 调整图像的大小 cai_image = cai_image.resize((200, 300)) ball_image = ball_image.resize((50, 50)) # 在画布上绘制徐坤和篮球的位置 canvas.paste(cai_image, (300, 200)) canvas.paste(ball_image, (380, 320)) # 在徐坤图像旁边添加文字标识 draw = ImageDraw.Draw(canvas) draw.text((350, 550), '徐坤打篮球', fill='black') # 将画布显示在屏幕上 plt.imshow(canvas) # 保存图像 canvas.save('cai_playing_basketball.jpg') # 显示图像 plt.show() ``` 以上就是使用Python绘制徐坤打篮球的简单示例。请注意,需要提前准备好徐坤和篮球的图像文件,并将文件路径正确指定。 ### 回答3: 使用Python绘制徐坤打篮球可以借助Python的绘图库matplotlib来实现。首先需要导入matplotlib库和其他必要的库,如下所示: ```python import matplotlib.pyplot as plt import matplotlib.image as mpimg ``` 接下来,我们需要从图像文件中加载徐坤的图片,可以使用mpimg模块的imread()函数实现: ```python img = mpimg.imread('caixukun.png') ``` 然后,创建一个绘图窗口并将图片绘制在窗口中: ```python fig, ax = plt.subplots() ax.imshow(img) ``` 接着,我们可以使用matplotlib的绘图函数来绘制篮球场地、徐坤打篮球的位置等元素: ```python # 绘制篮球场地 court_patch = plt.Rectangle((100, 100), 400, 300, linewidth=2, edgecolor='darkorange', facecolor='none') ax.add_patch(court_patch) # 绘制徐坤打篮球的位置 player_patch = plt.Circle((300, 250), 10, linewidth=2, edgecolor='red', facecolor='red') ax.add_patch(player_patch) # 添加文字描述 ax.text(350, 280, '徐坤打篮球', fontsize=12, color='black') # 设置图像相关参数 ax.axis('off') fig.tight_layout() # 显示绘制结果 plt.show() ``` 最后,运行代码即可在绘图窗口中看到徐坤打篮球的图像,其中徐坤的图片来源于名为"caixukun.png"的文件。你也可以根据实际情况自行调整位置、颜色、大小等参数,使得绘制结果更加符合你的要求。当然,实现一个真实的篮球场景可能需要更多的绘图操作和元素,这里只是一个简单的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值