当前位置:   article > 正文

【Python搞笑游戏】因蔡徐坤打篮球动作超火,被某程序员写成了一款游戏,画面美到不敢看,成功学到了精髓~(附源码免费)_蔡徐坤游戏代码

蔡徐坤游戏代码

导语

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

虽然说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)模块安装 

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

  1.  一般安装:pip install +模块名
  2.  镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名 
  3.  (还有很多国内镜像源,这里是豆瓣的用习惯 了,其他镜像源可以去看下之前文章都有的) 

 模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。

3)素材准备(可修改)

二、代码展示

主程序——

  1. import pygame
  2. from pygame.locals import *
  3. from random import randint
  4. from sys import exit
  5. class Basketball(pygame.sprite.Sprite):
  6. def __init__(self,basket_surface,basket_position):
  7. pygame.sprite.Sprite.__init__(self)
  8. self.image = basket_surface
  9. self.rect = self.image.get_rect()
  10. self.rect.topleft = basket_position
  11. self.speed = 8
  12. def update(self):
  13. self.rect.top -= self.speed
  14. if(self.rect.top<-10):
  15. self.kill()
  16. class Thanos(pygame.sprite.Sprite):
  17. def __init__(self,thanos_surface,thanos_position):
  18. pygame.sprite.Sprite.__init__(self)
  19. self.image = thanos_surface
  20. self.rect = self.image.get_rect()
  21. self.rect.topleft = thanos_position
  22. self.speed = 2
  23. def update(self):
  24. self.rect.top += self.speed
  25. if self.rect.top>SCREEN_HEIGHT:
  26. self.kill()
  27. global score
  28. score-=10
  29. global missed
  30. missed+=1
  31. class CXK(pygame.sprite.Sprite):
  32. def __init__(self,cxk_surface,cxk_position):
  33. pygame.sprite.Sprite.__init__(self)
  34. self.image = cxk_surface
  35. self.rect = self.image.get_rect()
  36. self.rect.topleft = cxk_position
  37. self.speed = 5
  38. self.isJi = False
  39. self.bsks = pygame.sprite.Group()
  40. def move(self,offset):
  41. # 改变cxk的位置,并做边缘判断
  42. offset_x = offset[pygame.K_RIGHT] - offset[pygame.K_LEFT]
  43. offset_y = offset[pygame.K_DOWN] - offset[pygame.K_UP]
  44. # 横向边缘判断
  45. cxk_position_x = cxk.rect.left + offset_x
  46. if cxk_position_x < 0:
  47. cxk.rect.left = 0
  48. elif cxk_position_x > 400:
  49. cxk.rect.left = 400
  50. else:
  51. cxk.rect.left = cxk_position_x
  52. # 纵向边缘判断
  53. cxk_position_y = cxk.rect.top + offset_y
  54. if cxk_position_y < 150:
  55. cxk.rect.top = 150
  56. elif cxk_position_y > 700:
  57. cxk.rect.top = 700
  58. else:
  59. cxk.rect.top = cxk_position_y
  60. def singleShoot(self,bsk1_image):
  61. bsk1 = Basketball(bsk1_image,(self.rect.left+58,self.rect.top+45))#控制发射位置
  62. self.bsks.add(bsk1)
  63. SCREEN_WIDTH = 600
  64. SCREEN_HEIGHT = 900
  65. offset={pygame.K_LEFT:0, pygame.K_RIGHT:0, pygame.K_UP:0, pygame.K_DOWN:0}
  66. pygame.init()
  67. pygame.mixer.init()
  68. pygame.time.delay(1000)
  69. clock = pygame.time.Clock()
  70. screen = pygame.display.set_mode([SCREEN_WIDTH,SCREEN_HEIGHT])
  71. pygame.display.set_caption("两年半的练习生")#标题
  72. ticks = 0
  73. #载入背景
  74. background=pygame.image.load('resources/images/bg.png')
  75. #载入游戏结束画面
  76. gameover = pygame.image.load('resources/images/gameover.png')
  77. #载入主角cxk的图片并设置初始位置
  78. cxk_image = pygame.image.load('resources/images/cxk.png')
  79. cxk_position = [200,650]
  80. #死亡时变鸡的图片及游戏结束倒计时
  81. ji_image = pygame.image.load('resources/images/ji.png')
  82. countdown = 0
  83. #实例化主角cxk
  84. cxk = CXK(cxk_image,cxk_position)
  85. #载入篮球图片
  86. bsk_image = pygame.image.load('resources/images/basket.png')
  87. #载入敌人图片
  88. thanos_image = pygame.image.load('resources/images/thanos.png')
  89. thanos_group = pygame.sprite.Group()
  90. thanos_down_group = pygame.sprite.Group()
  91. #设置字体
  92. score = 0
  93. pygame.font.init()
  94. score_font = pygame.font.SysFont(None,32)
  95. score_font.set_bold(True)
  96. #载入射击
  97. ji_sound = pygame.mixer.Sound('resources/audios/ji.ogg')
  98. si_sound = pygame.mixer.Sound('resources/audios/si.ogg')
  99. #载入背景音乐
  100. pygame.mixer.music.load('resources/audios/bgm.mp3')
  101. pygame.mixer.music.play(-1)
  102. #设置错过的灭霸数量
  103. missed = 0
  104. missed_font = pygame.font.SysFont(None,32)
  105. missed_font.set_bold(True)
  106. while True:
  107. #设置帧率
  108. clock.tick(90)
  109. #绑定背景图片
  110. screen.blit(background,(0,0))
  111. #设置分数面板
  112. ScoreFaceText = score_font.render("Score:"+str(score),True,(0,0,0))
  113. Scoretext = ScoreFaceText.get_rect()
  114. Scoretext.topleft = (10,10)
  115. screen.blit(ScoreFaceText,Scoretext)
  116. #设置miss面板
  117. MissedFaceText = missed_font.render("Missed:"+str(missed)+" (5 to die)",True,(0,0,0))
  118. Missedtext = MissedFaceText.get_rect()
  119. Missedtext.topleft = (10,40)
  120. screen.blit(MissedFaceText,Missedtext)
  121. #绑定人物图片
  122. if cxk.isJi :
  123. cxk.image = ji_image
  124. si_sound.play()
  125. countdown+=1
  126. if countdown == 40:
  127. pygame.mixer.music.stop()#结束游戏后停止背景音乐
  128. break#变成鸡后退出循环
  129. else:
  130. cxk.image = cxk_image
  131. #更新篮球图片
  132. cxk.bsks.update()
  133. cxk.bsks.draw(screen)
  134. #产生灭霸图片
  135. if ticks % 60 == 0:
  136. t = Thanos(thanos_image,[randint(0,SCREEN_WIDTH-thanos_image.get_width()),thanos_image.get_height()])
  137. thanos_group.add(t)
  138. #根据得分增加游戏难度
  139. if 200<=score<=400:
  140. t.speed = 3
  141. elif 400<score<=500:
  142. t.speed = 4
  143. elif 500<score<=1000:
  144. t.speed = 5
  145. elif score>1000:
  146. t.speed = 8
  147. thanos_group.update()
  148. thanos_group.draw(screen)
  149. #击毁并计分
  150. pre = len(thanos_down_group)
  151. thanos_down_group.add(pygame.sprite.groupcollide(thanos_group,cxk.bsks,True,True))
  152. if len(thanos_down_group)>pre:
  153. score+=10
  154. #坠鸡
  155. thanos_down_list = pygame.sprite.spritecollide(cxk,thanos_group,True)
  156. if len(thanos_down_list)>0:
  157. thanos_down_group.add(thanos_down_list)
  158. cxk.isJi = True
  159. #当missed大于5时,退出游戏
  160. if missed>=5:
  161. cxk.isJi = True
  162. screen.blit(cxk.image,cxk.rect)
  163. ticks+=1
  164. pygame.display.update()
  165. for event in pygame.event.get():
  166. #处理游戏退出
  167. if event.type == pygame.QUIT:
  168. pygame.quit()
  169. exit(0)
  170. #检测按键
  171. if event.type == pygame.KEYDOWN:
  172. if event.key in offset:
  173. offset[event.key] = cxk.speed
  174. elif event.key == pygame.K_a:
  175. cxk.singleShoot(bsk_image)
  176. ji_sound.play()
  177. elif event.type == pygame.KEYUP:
  178. if event.key in offset:
  179. offset[event.key] = 0
  180. cxk.move(offset)
  181. #跳出前一段循环,进入游戏结束画面
  182. screen.blit(gameover,(0,0))
  183. pygame.mixer.music.load('resources/audios/dead.mp3')
  184. pygame.mixer.music.play()
  185. while True:
  186. pygame.display.update()
  187. #显示最后得分
  188. score_font = pygame.font.SysFont(None, 72)
  189. ScoreFaceText = score_font.render("Final Score:" + str(score), True, (0, 0, 0))
  190. Scoretext = ScoreFaceText.get_rect()
  191. Scoretext.topleft = (130, 140)
  192. screen.blit(ScoreFaceText, Scoretext)
  193. #退出界面
  194. for event in pygame.event.get():
  195. if event.type == pygame.QUIT:
  196. pygame.quit()
  197. exit()

三、效果展示

1)游戏界面

2)坠鸡

3)游戏得分结束

总结

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

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

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/81051

推荐阅读
相关标签