鱼C论坛

 找回密码
 立即注册
查看: 2209|回复: 9

[已解决]pygame 植物大战僵尸

[复制链接]
发表于 2021-3-23 11:39:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助,我想知道如何实现游戏里铲除植物的铲子,网上搜到的看不到编程铲子的。
最佳答案
2021-3-23 20:34:24
本帖最后由 小伤口 于 2021-3-24 10:14 编辑


  1. import sys   #玩家退出游戏时使用sys模块
  2. import pygame   #包含开发游戏所需的功能
  3. """初始化游戏,并创建一个屏幕对象"""
  4. pygame.init()  #初始化背景设置
  5. bg_size=(500,600)
  6. screen = pygame.display.set_mode((500,600))  #创建一个名为screen的窗口
  7. pygame.display.set_caption("我一个滑铲")  #设置当前窗口标题

  8. chan_zi= pygame.image.load('C:/Users/ASUS/Desktop/《植物大战僵尸》背景图-铲子(Shovel)_爱给网_aigei_com.png').convert_alpha()
  9. chan_zi_rect=chan_zi.get_rect()
  10. bg_color = (230,230,230)   #设置背景颜色

  11. #开始游戏的主循环
  12. while True:

  13.     for event in pygame.event.get():   #监听用户事件
  14.         if event.type == pygame.QUIT:   # 判断用户是否点击了关闭按钮
  15.             sys.exit()     #用户退出
  16.     screen.fill(bg_color)  #每次循环都重绘屏幕
  17.     screen.blit(chan_zi,chan_zi_rect)
  18.     # 检测用户的鼠标操作
  19.     # 如果用户按下鼠标左键
  20.     if pygame.mouse.get_pressed()[0]:
  21.         # 获取鼠标坐标
  22.         
  23.         pos = pygame.mouse.get_pos()
  24.         #检测用户是否鼠标位于铲子中心50*50的区域
  25.         if chan_zi_rect.center[0]-50 < pos[0] < chan_zi_rect.center[0]+50 and \
  26.                    chan_zi_rect.center[1]-50 < pos[1] < chan_zi_rect.center[1]+50 and\
  27.                    0<pos[0]<500 and 0<pos[1]<600:#防止图像完全离开界面:
  28.             #设置图像中心等于鼠标坐标
  29.             chan_zi_rect.center=pos
  30.     #让最近绘制屏幕可见
  31.     pygame.display.flip()  

复制代码

代码里有详细注释
你想测试代码的话
找到你的铲子图片,鼠标右键点击复制
粘贴到第九行的load()里面覆盖原来的图片地址
如果有帮助的话请设置最佳吧
有什么不懂得欢迎继续提问
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-23 13:41:11 | 显示全部楼层
《植物大战僵尸》背景图-铲子(Shovel)_爱给网_aigei_com.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-23 14:07:05 | 显示全部楼层

这个图片如何运用到游戏里?大佬请多指教一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-23 14:11:06 | 显示全部楼层
栀鸢花 发表于 2021-3-23 14:07
这个图片如何运用到游戏里?大佬请多指教一点

你想让他怎样运行到游戏里呢
让他随着鼠标移动吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-23 14:23:57 | 显示全部楼层
小伤口 发表于 2021-3-23 14:11
你想让他怎样运行到游戏里呢
让他随着鼠标移动吗?

对,随鼠标移动并且可以铲除植物,需要这两个功能,该怎么做呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-23 14:30:33 | 显示全部楼层
栀鸢花 发表于 2021-3-23 14:23
对,随鼠标移动并且可以铲除植物,需要这两个功能,该怎么做呢?

我可以给你写一下如何随着鼠标移动
但铲除植物只能靠你自己毕竟我手里就只有一个铲子
铲除植物的话大概思路就是绑定鼠标事件(并且前提是鼠标拿着铲子)例如用户点击右键实现铲除
程序就不画那个植物就行,如果想给用户一个提示是否铲除的话,也可以简单的用tkinter写个弹窗
我马上上课了
关于如何移动铲子的代码
我可能得晚上发给你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-3-23 14:41:58 | 显示全部楼层
小伤口 发表于 2021-3-23 14:30
我可以给你写一下如何随着鼠标移动
但铲除植物只能靠你自己毕竟我手里就只有一个铲子{:10_243 ...

好的好的,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-23 20:34:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 小伤口 于 2021-3-24 10:14 编辑


  1. import sys   #玩家退出游戏时使用sys模块
  2. import pygame   #包含开发游戏所需的功能
  3. """初始化游戏,并创建一个屏幕对象"""
  4. pygame.init()  #初始化背景设置
  5. bg_size=(500,600)
  6. screen = pygame.display.set_mode((500,600))  #创建一个名为screen的窗口
  7. pygame.display.set_caption("我一个滑铲")  #设置当前窗口标题

  8. chan_zi= pygame.image.load('C:/Users/ASUS/Desktop/《植物大战僵尸》背景图-铲子(Shovel)_爱给网_aigei_com.png').convert_alpha()
  9. chan_zi_rect=chan_zi.get_rect()
  10. bg_color = (230,230,230)   #设置背景颜色

  11. #开始游戏的主循环
  12. while True:

  13.     for event in pygame.event.get():   #监听用户事件
  14.         if event.type == pygame.QUIT:   # 判断用户是否点击了关闭按钮
  15.             sys.exit()     #用户退出
  16.     screen.fill(bg_color)  #每次循环都重绘屏幕
  17.     screen.blit(chan_zi,chan_zi_rect)
  18.     # 检测用户的鼠标操作
  19.     # 如果用户按下鼠标左键
  20.     if pygame.mouse.get_pressed()[0]:
  21.         # 获取鼠标坐标
  22.         
  23.         pos = pygame.mouse.get_pos()
  24.         #检测用户是否鼠标位于铲子中心50*50的区域
  25.         if chan_zi_rect.center[0]-50 < pos[0] < chan_zi_rect.center[0]+50 and \
  26.                    chan_zi_rect.center[1]-50 < pos[1] < chan_zi_rect.center[1]+50 and\
  27.                    0<pos[0]<500 and 0<pos[1]<600:#防止图像完全离开界面:
  28.             #设置图像中心等于鼠标坐标
  29.             chan_zi_rect.center=pos
  30.     #让最近绘制屏幕可见
  31.     pygame.display.flip()  

复制代码

代码里有详细注释
你想测试代码的话
找到你的铲子图片,鼠标右键点击复制
粘贴到第九行的load()里面覆盖原来的图片地址
如果有帮助的话请设置最佳吧
有什么不懂得欢迎继续提问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-3-24 12:04:17 | 显示全部楼层
小伤口 发表于 2021-3-23 20:34
代码里有详细注释
你想测试代码的话
找到你的铲子图片,鼠标右键点击复制

感谢,对初步接触pygame的我帮助很大
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-24 12:12:10 From FishC Mobile | 显示全部楼层
栀鸢花 发表于 2021-3-24 12:04
感谢,对初步接触pygame的我帮助很大

共同学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 08:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表