• 【Pygame小游戏】这款“吃掉一切”游戏简直奇葩了?通通都吃掉嘛?(附源码免费领)


    前言 

    嗨!我是栗子同学。很久不见甚是思念!我回来啦~

    今天给大家写点儿什么呢?!嘿嘿,其实这么久没写代码啦,手都不会打字了,代码都不会敲

    了,容我慢慢道来!先来点儿简单的吧(其实是没思路,上次写剩下的一个无敌狙击手的游戏

    代码小小的改编了一下下,偷懒了哈,因为不知道写啥了,不要打我.jpg)

    等我灵感了就好好给大家写,先练练手哈!有爱的源码,可以评论下下次说不定就写了撒!

    今天教大家写一款简单的小游戏:《吃掉一切》让我们马上开始叭👇

    所有文章完整的素材+源码都在👇👇文末公众hao自取哦!

    正文

    本文是基于pygame写的一款界面简单的小游戏哈!

    一、运行环境

     1)环境安装👇 Python3、 Pycharm 、tkinter、Pygame模块部分自带模块就不展示啦。

    (如需安装包、激活码等直接 私信我即可安装问题解答都可以的哈~)

    1. 第三方库的安装:pip install pygame 或者 带镜像源 pip install -i
    2. https://pypi.douban.com/simple/ +模块名

    2)素材(图片:食物跟吃东西的人)

    感觉食物跟人美少女不是很配来着,哈哈哈,将就一下叭,大家可以更换图片的啦!

    二、主程序

    1. import pygame,os,random
    2. from pygame.locals import *
    3. from pygame.sprite import *
    4. def load_image(name):
    5. fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name)
    6. image=pygame.image.load(fullname)
    7. return image
    8. def load_sound(name):
    9. fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name)
    10. sound=pygame.mixer.Sound(fullname)
    11. return sound
    12. class Tip(Sprite):
    13. def __init__(self,screen,fontrender,waitticks,pos):
    14. super(Tip,self).__init__()
    15. self.screen=screen
    16. self.image=fontrender
    17. self.rect=self.image.get_rect()
    18. self.rates=0
    19. self.waitticks=waitticks
    20. self.rect.center=pos
    21. def update(self):
    22. self.rates+=1
    23. if self.rates>=self.waitticks:
    24. self.kill()
    25. class Surface:
    26. def __init__(self,screen):
    27. self.screen=screen
    28. self.image=load_image("eatingface.png")
    29. self.rect=self.image.get_rect()
    30. self.rect.center=self.screen.get_rect().center
    31. self.speed=3.7
    32. self.caneat=20
    33. self.eat=self.caneat
    34. self.moveUp=False
    35. self.moveDown=False
    36. self.moveLeft=False
    37. self.moveRight=False
    38. self.faceatleft=False
    39. self.punch=0
    40. def update(self):
    41. if self.punch==0:
    42. if self.moveUp and self.rect.top>0:
    43. self.rect.centery-=self.speed
    44. if self.moveDown and self.rect.bottom<HEIGHT:
    45. self.rect.centery+=self.speed
    46. if self.moveLeft and self.rect.left>0:
    47. if not self.faceatleft:
    48. self.faceatleft=True
    49. self.image=pygame.transform.flip(self.image,True,False)
    50. self.rect.centerx-=self.speed
    51. if self.moveRight and self.rect.right<WIDTH:
    52. if self.faceatleft:
    53. self.faceatleft=False
    54. self.image=pygame.transform.flip(self.image,True,False)
    55. self.rect.centerx+=self.speed
    56. else:
    57. self.punched()
    58. def blit(self):
    59. self.screen.blit(self.image,self.rect)
    60. def punched(self):
    61. self.punch+=1
    62. if self.punch>60:
    63. self.punch=0
    64. def eats(self,num):
    65. self.eat+=num
    66. if self.eat>=100:
    67. self.eat=100
    68. return "True"
    69. elif self.eat<=0:
    70. self.eat=0
    71. return "False"
    72. return "None"
    73. def reset(self):
    74. self.image=load_image("eatingface.png")
    75. self.rect=self.image.get_rect()
    76. self.rect.center=self.screen.get_rect().center
    77. self.speed=3.7
    78. self.eat=self.caneat
    79. self.moveUp=False
    80. self.moveDown=False
    81. self.moveLeft=False
    82. self.moveRight=False
    83. self.faceatleft=False
    84. self.punch=0
    85. class Food(Sprite):
    86. def __init__(self,screen,surface,tips,gameFont):
    87. super(Food,self).__init__()
    88. self.screen=screen
    89. self.surface=surface
    90. self.tips=tips
    91. self.gameFont=gameFont
    92. self.screenrect=self.screen.get_rect()
    93. self.image=load_image("eatingfood.png")
    94. self.rect=self.image.get_rect()
    95. self.rectat=random.choice(["top","left","right","bottom"])
    96. self.xspeed=round(random.uniform(1,2),2)
    97. self.yspeed=round(random.uniform(1,2),2)
    98. if self.rectat=="top":
    99. self.rect.center=(random.randint(0,WIDTH),0)
    100. elif self.rectat=="bottom":
    101. self.rect.center=(random.randint(0,WIDTH),HEIGHT)
    102. self.yspeed=-self.yspeed
    103. elif self.rectat=="left":
    104. self.rect.center=(0,random.randint(0,HEIGHT))
    105. elif self.rectat=="right":
    106. self.xspeed=-self.xspeed
    107. self.rect.center=(WIDTH,random.randint(0,HEIGHT))
    108. def update(self):
    109. global toohungry,isfull
    110. if self.surface.faceatleft:
    111. if self.rect.left<self.surface.rect.left<=self.rect.right:
    112. if self.surface.rect.top<self.rect.top<self.surface.rect.bottom or self.surface.rect.bottom>self.rect.bottom>self.surface.rect.top:
    113. self.kill()
    114. if self.surface.eats(2)=="True":
    115. isfull=True
    116. return
    117. else:
    118. if self.rect.right>self.surface.rect.right>=self.rect.left:
    119. if self.surface.rect.top<self.rect.top<self.surface.rect.bottom or self.surface.rect.bottom>self.rect.bottom>self.surface.rect.top:
    120. self.kill()
    121. if self.surface.eats(2)=="True":
    122. isfull=True
    123. return
    124. if collide_rect(self,self.surface):
    125. self.surface.punched()
    126. if self.surface.eats(-1)=="False":
    127. toohungry=True
    128. return
    129. self.tips.add(Tip(self.screen,self.gameFont.render("Dizzy!",True,(255,255,255)),
    130. 60,self.surface.rect.center))
    131. self.away()
    132. self.rect.centerx+=self.xspeed
    133. self.rect.centery+=self.yspeed
    134. if self.rect.top>self.screenrect.height or self.rect.bottom<0:
    135. self.kill()
    136. elif self.rect.left>self.screenrect.width or self.rect.right<0:
    137. self.kill()
    138. def away(self):
    139. self.xspeed=-self.xspeed
    140. self.yspeed=-self.yspeed
    141. WIDTH=700
    142. HEIGHT=600
    143. toohungry=False
    144. isfull=False
    145. def initmain():
    146. pygame.init()
    147. screen=pygame.display.set_mode((WIDTH,HEIGHT))
    148. pygame.display.set_caption("Eater")
    149. gameFont=pygame.font.SysFont("宋体",26,True)
    150. fpstime=pygame.time.Clock()
    151. surface=Surface(screen)
    152. foods=Group()
    153. tips=Group()
    154. def mainit():
    155. global toohungry,isfull
    156. foods.empty()
    157. tips.empty()
    158. surface.reset()
    159. rates=0
    160. toohungry=False
    161. isfull=False
    162. while ((not isfull) and (not toohungry)):
    163. fpstime.tick(100)
    164. screen.fill((0,255,0))
    165. screen.blit(gameFont.render("Full "+str(surface.eat)+"%",True,(0,0,0)),(2,2))
    166. rates+=1
    167. if rates%50==0:
    168. foods.add(Food(screen,surface,tips,gameFont))
    169. foods.draw(screen)
    170. foods.update()
    171. surface.blit()
    172. surface.update()
    173. tips.draw(screen)
    174. tips.update()
    175. for event in pygame.event.get():
    176. if event.type==QUIT:
    177. toohungry=True
    178. isfull=True
    179. elif event.type==KEYDOWN:
    180. if event.key==K_RIGHT:
    181. surface.moveRight=True
    182. elif event.key==K_LEFT:
    183. surface.moveLeft=True
    184. elif event.key==K_UP:
    185. surface.moveUp=True
    186. elif event.key==K_DOWN:
    187. surface.moveDown=True
    188. elif event.key==K_SPACE:
    189. surface.speed=5
    190. elif event.type==KEYUP:
    191. if event.key==K_RIGHT:
    192. surface.moveRight=False
    193. elif event.key==K_LEFT:
    194. surface.moveLeft=False
    195. elif event.key==K_UP:
    196. surface.moveUp=False
    197. elif event.key==K_DOWN:
    198. surface.moveDown=False
    199. elif event.key==K_SPACE:
    200. surface.speed=3.5
    201. pygame.display.flip()
    202. notbreak=True
    203. while notbreak:
    204. screen.fill((0,255,0))
    205. if toohungry and isfull:
    206. screen.blit(gameFont.render("Esc To Exit!",True,(128,128,128)),(2,2))
    207. elif toohungry:
    208. screen.blit(gameFont.render("Too hungry!",True,(0,0,0)),(2,2))
    209. elif isfull:
    210. screen.blit(gameFont.render("Full!",True,(0,0,0)),(2,2))
    211. screen.blit(gameFont.render("Space To Retry",True,(128,128,128)),(2,32))
    212. for event in pygame.event.get():
    213. if event.type==QUIT:
    214. pygame.quit()
    215. __import__("sys").exit()
    216. elif event.type==KEYUP:
    217. if event.key==K_ESCAPE:
    218. pygame.quit()
    219. __import__("sys").exit()
    220. elif event.key==K_SPACE:
    221. notbreak=False
    222. pygame.display.flip()
    223. mainit()
    224. mainit()
    225. if __name__=="__main__":
    226. initmain()

    总结

    嗨,效果挺简单滴啦,我就不展示了就一张图,鼠标左键一直移动吃掉掉落的食物即可啦!

    💖​免费的​​源码基地——

    私信小编06或者点击这行蓝色字体即可免费获取哈!

    你们的支持是我最大的动力!!记得三连哦~mua 欢迎大家阅读往期的文章哦~

    🎉往期部分文章推荐——

    项目1.5 Pygame小游戏:植物大战僵尸游戏真的有“毒”?戒不掉啊~

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

    项目1.7 【Pygame小游戏】神还原【欢乐无穷的双人坦克大战】小程序游戏,上手开玩~

    项目3.1 【Pygame实战】如果你是赛车爱好者:这款新赛车游戏分分钟让你上瘾(超跑又是谁的梦想?)

    项目3.2 【Pygame小游戏】炸裂全场、超级炸弹人“爆炸”登场,这是你的童年嘛?

    🎄文章汇总——

    项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

    (更多内容+源码都在文章汇总哦!!欢迎阅读~)

    🎁文章汇总——

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

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

  • 相关阅读:
    SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
    python日志记录库logging介绍
    关于http协议中的各种请求头、请求类型的作用以及用途
    Redis(5)----浅谈压缩列表
    Koa全栈登录鉴权
    点成方案丨点成生物PCR实验解决方案
    零信任解决方案的SDP 微隔离 IAM介绍
    洛谷-线段覆盖-(区间排序问题总结)
    http与https的区别
    解密Prompt系列9. 模型复杂推理-思维链COT基础和进阶玩法
  • 原文地址:https://blog.csdn.net/xy258009/article/details/125462614