鱼C论坛

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

pygame 怎么能让鼠标点击出来的图片在鼠标中间出现呢。求大神指点,代码如下,

[复制链接]
发表于 2018-8-16 18:43:43 | 显示全部楼层 |阅读模式

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

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

x
现在我的问题是,点鼠标,图片在离鼠标很远的地方播放。我想把播放的图片中心点求出来,然后让鼠标的位置减去图片中心的位置,但是提示元祖不能减元祖。

  1. import pygame
  2. import sys
  3. from pygame.locals import *
  4. pygame.init()
  5. size = width, height = 512, 768
  6. screen = pygame.display.set_mode(size)
  7. pygame.display.set_caption("a")
  8. tip=0
  9. water_num=0
  10. mask_num=0
  11. img_list=[]
  12. water_list=[]
  13. #mask_list=[]
  14. select=0
  15. mouse_pos=0
  16. clock=pygame.time.Clock()

  17. fullscreen=False
  18. for i in range(1,10):
  19.     img=pygame.image.load("ground_"+str(i)+".jpg").convert()
  20.     img_list.append(img)
  21. for a in range(1,10):
  22.     water=pygame.image.load("water\water_a_"+str(a)+".png").convert_alpha()
  23.     water_list.append(water)
  24. position=water_list[water_num].get_rect()
  25. position_center=position.width//2,position.height//2
  26. #for m in range(1,275):
  27.     #mask=pygame.image.load("mask\mask_a_"+str(m)+".png").convert_alpha()
  28.     #mask_list.append(mask)

  29. def blit_alpha(target,source,location,opacity):
  30.     x=location[0]
  31.     y=location[1]
  32.     temp=pygame.Surface((source.get_width(),source.get_height())).convert()
  33.     temp.blit(target,(-x,-y))
  34.     temp.blit(source,(0,0))
  35.     temp.set_alpha(opacity)
  36.     target.blit(temp,location)
  37. """def mask_alpha(target,source,location,opacity):
  38.     x=location[0]
  39.     y=location[1]
  40.     temp=pygame.Surface((source.get_width(),source.get_height())).convert()
  41.     temp.blit(target,(-x,-y))
  42.     temp.blit(source,(0,0))
  43.     temp.set_alpha(opacity)
  44.     target.blit(temp,location)"""
  45. while True:
  46.     for event in pygame.event.get():
  47.         if event.type == pygame.QUIT:
  48.             sys.exit()
  49.         if event.type==KEYDOWN:
  50.             if event.key==K_F11:
  51.                 fullscreen=not fullscreen
  52.                 if fullscreen:
  53.                     screen=pygame.display.set_mode((1920,1080),FULLSCREEN|HWSURFACE)
  54.                 else:
  55.                     screen=pygame.display.set_mode(size)
  56.         if event.type==MOUSEBUTTONDOWN:
  57.             if event.button==1:
  58.                 select=1
  59.                
  60.         if event.type==MOUSEBUTTONUP:
  61.             if event.button==1:
  62.                 select=0
  63.     [color=Red]position_water=pygame.mouse.get_pos()-position.center[/color]
  64.     #position_mask=pygame.mouse.get_pos()
  65.     position_img=img_list[tip].get_rect()
  66.     screen.blit(img_list[tip],position_img)
  67.     if select:
  68.         blit_alpha(screen,water_list[water_num],position_water,255)
  69.         #mask_alpha(screen,mask_list[mask_num],position_mask,255)
  70.     else:
  71.         screen.blit(img_list[tip],position_img)
  72.         
  73.    
  74.    
  75.    
  76.     #screen.blit(water_list[water_num],position_water)`
  77.    
  78.     pygame.display.flip()
  79.     tip=0
  80.     water_num=0
  81.     #(water_num+1)%274
  82.     #mask_num=(mask_num+1)%274
  83.     clock.tick(30)
  84.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-16 18:45:48 | 显示全部楼层

回帖奖励 +10 鱼币

发错误截图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 18:48:36 | 显示全部楼层
元祖是不能减元祖,用索引什么的把[0],[1]元素减了就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-16 18:52:59 | 显示全部楼层
塔利班 发表于 2018-8-16 18:48
元祖是不能减元祖,用索引什么的把[0],[1]元素减了就行了

大神 能把代码告诉我下吗,现在有点乱写的。刚接触编程思路和方法有点不清晰。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-16 18:54:03 | 显示全部楼层
塔利班 发表于 2018-8-16 18:48
元祖是不能减元祖,用索引什么的把[0],[1]元素减了就行了

Traceback (most recent call last):
  File "D:\python_shadow\python_ground.py", line 65, in <module>
    position_water=pygame.mouse.get_pos()-position.center
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 18:56:01 | 显示全部楼层
本帖最后由 塔利班 于 2018-8-16 18:57 编辑

图片img对象get_rect()得到Rect对象,假设其为R
R.centerx,R.centery就是图片中心坐标,你把他们分别设成鼠标get_pos得到的x,y就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-16 19:07:14 | 显示全部楼层
塔利班 发表于 2018-8-16 18:56
图片img对象get_rect()得到Rect对象,假设其为R
R.centerx,R.centery就是图片中心坐标,你把他们分别设成 ...

你把他们分别设成鼠标get_pos得到的x,y就行了
大神 这句话什么意思呢。我现在是拾取鼠标的位置,然后呢?设成鼠标get_pos?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 19:08:14 | 显示全部楼层
pygame.mouse.get_pos()返回x,y二元组
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-16 21:33:21 | 显示全部楼层
塔利班 发表于 2018-8-16 19:08
pygame.mouse.get_pos()返回x,y二元组

大神,热心肠,感谢,祝大神发财
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 21:34:08 | 显示全部楼层
lhx19901216 发表于 2018-8-16 21:33
大神,热心肠,感谢,祝大神发财

不是大神,不过借你吉言
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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