设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第4课】 获取鼠标位置

[复制链接]

0

主题

0

好友

8

积分

新手上路

Rank: 1

11#
发表于 2015-5-16 16:09:30 |只看该作者
ajh99990 发表于 2015-5-16 15:53
老师,对于下面这几行代码,我有一个问题。
    x, y = pygame.mouse.get_pos()
    #获取鼠标位置

我又想了想。。。竟然自己想明白了。 因为打印图片永远都是图片左上角对着鼠标坐标点的。所以只要把鼠标的坐标值往左上角位移半个图片的长和宽之后再去打印,那就能让打印出来的图片的中心正好对应着鼠标坐标点了。 原来如此。。。
回复

使用道具 举报

0

主题

0

好友

8

积分

新手上路

Rank: 1

12#
发表于 2015-5-16 16:09:56 |只看该作者
ajh99990 发表于 2015-5-16 15:53
老师,对于下面这几行代码,我有一个问题。
    x, y = pygame.mouse.get_pos()
    #获取鼠标位置

我又想了想。。。竟然自己想明白了。 因为打印图片永远都是图片左上角对着鼠标坐标点的。所以只要把鼠标的坐标值往左上角位移半个图片的长和宽之后再去打印,那就能让打印出来的图片的中心正好对应着鼠标坐标点了。 原来如此。。。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2015-5-17 00:47:30 |只看该作者
ajh99990 发表于 2015-5-16 16:09
我又想了想。。。竟然自己想明白了。 因为打印图片永远都是图片左上角对着鼠标坐标点的。所以只要把鼠标 ...

是的,坐标点对于图片来说并没有变,只是看上去位置对了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

22

积分

新手上路

Rank: 1

14#
发表于 2015-10-10 17:12:09 |只看该作者
ajh99990 发表于 2015-5-16 15:53
老师,对于下面这几行代码,我有一个问题。
    x, y = pygame.mouse.get_pos()
    #获取鼠标位置

  x-= plane.get_width() / 2
  y-= plane.get_height() / 2

这两行是为了让飞机图片移动而不是让鼠标位置移动。 你可以把(x,y)值打印出来看就理解了。
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

15#
发表于 2015-12-19 19:07:20 |只看该作者
  1.     plane=pygame.image.load(plane.jpg).convert_alpha()
  2. NameError: name 'plane' is not defined
复制代码
老师为啥我的有错误呢,如果def 一个plane的话就闪退
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

16#
发表于 2015-12-19 19:10:51 |只看该作者
cossin咸鱼 发表于 2015-12-19 19:07
老师为啥我的有错误呢,如果def 一个plane的话就闪退

我自己做错了  ,好难发现啊  应该是‘palne.png’ 两处错误
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2015-12-19 23:46:19 |只看该作者
cossin咸鱼 发表于 2015-12-19 19:10
我自己做错了  ,好难发现啊  应该是‘palne.png’ 两处错误

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

18#
发表于 2016-1-30 13:03:00 |只看该作者
get it, 原来游戏窗口的最左上角坐标是(0,0),坐标值越小越接近左上角,跟正常的坐标系有点不一样。这样x-= plane.get_width() / 2,y-= plane.get_height() / 2就说得通了。
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

19#
发表于 2016-1-30 13:45:46 |只看该作者
加了一些限制让飞机保持在窗口内
  1. import pygame
  2. from sys import exit
  3. pygame.init()
  4. screen=pygame.display.set_mode((960,640))
  5. pygame.display.set_caption('Hello, World!')
  6. background=pygame.image.load('.\data file\pypic2.jpg').convert()
  7. plane=pygame.image.load('.\data file\plane.gif').convert()
  8. width=plane.get_width()/2
  9. height=plane.get_height()/2
  10. while True:
  11.     for event in pygame.event.get():
  12.         if event.type==pygame.QUIT:
  13.             pygame.quit()
  14.             exit()
  15.     screen.blit(background,(0,0))
  16.     x,y=pygame.mouse.get_pos()
  17.     if y>=640-height:
  18.         if x<width:
  19.             screen.blit(plane,(0,640-2*height))
  20.         elif x>960-width:
  21.             screen.blit(plane,(960-2*width,640-2*height))
  22.         else:
  23.             screen.blit(plane,(x-width,640-2*height))
  24.     elif y<height:
  25.         if x<width:
  26.             screen.blit(plane,(0,0))
  27.         elif x>960-width:
  28.             screen.blit(plane,(960-2*width,0))
  29.         else:
  30.             screen.blit(plane,(x-width,0))
  31.     else:
  32.         if x<width:
  33.             screen.blit(plane,(0,y-height))
  34.         elif x>960-width:
  35.             screen.blit(plane,(960-2*width,y-height))
  36.         else:
  37.             screen.blit(plane,(x-width,y-height))  
  38.     pygame.display.update()
复制代码
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

20#
发表于 2016-3-23 15:20:09 |只看该作者
ajh99990 发表于 2015-5-16 15:53
老师,对于下面这几行代码,我有一个问题。
    x, y = pygame.mouse.get_pos()
    #获取鼠标位置

鼠标的坐标为(100,100)
图片的左上顶点为(50,50)长宽为100
所以鼠标在中间
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-4 22:56 , Processed in 0.026777 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部