在 pygame 上实施鼠标移动
implement mouse motion on pygame
我正在制作 space 射击游戏的克隆,我需要使用鼠标移动玩家,现在玩家在按下箭头键时向左键和右键移动。
这是我的代码片段。
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
## scale the player img down
self.image = pygame.transform.scale(player_img, (50, 38))
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.radius = 20
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.speedx = 0
## unhide
if self.hidden and pygame.time.get_ticks() - self.hide_timer > 1000:
self.hidden = False
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 30
self.speedx = 0 ## makes the player static in the screen by default.
# then we have to check whether there is an event hanlding being done for the arrow keys being
## pressed
## will give back a list of the keys which happen to be pressed down at that moment
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speedx = -5
elif keystate[pygame.K_RIGHT]:
self.speedx = 5
#Fire weapons by holding spacebar
if keystate[pygame.K_SPACE]:
self.shoot()
## check for the borders at the left and right
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.left = 0
你可以使用
self.rect.center (or assign as you wish) = pygame.mouse.get_pos()
这将为您提供 (x,y) 鼠标,然后将玩家坐标设置为此值
使用它使鼠标在 pygame window 中不可见,否则您会看到指针和播放器
pygame.mouse.set_visible(False)
使用以下代码进行鼠标移动或单击
if pygame.event.get() == MOUSEMOTION:
x,y=mousex,mousey=event.pos
elif event.type == MOUSEBUTTONUP:
mousex,mousey=event.pos
mouseClicked = True
我用这个解决了我的问题。
if event.type == pygame.MOUSEMOTION:
player.rect.topleft = pygame.mouse.get_pos()
我正在制作 space 射击游戏的克隆,我需要使用鼠标移动玩家,现在玩家在按下箭头键时向左键和右键移动。
这是我的代码片段。
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
## scale the player img down
self.image = pygame.transform.scale(player_img, (50, 38))
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.radius = 20
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.speedx = 0
## unhide
if self.hidden and pygame.time.get_ticks() - self.hide_timer > 1000:
self.hidden = False
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 30
self.speedx = 0 ## makes the player static in the screen by default.
# then we have to check whether there is an event hanlding being done for the arrow keys being
## pressed
## will give back a list of the keys which happen to be pressed down at that moment
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speedx = -5
elif keystate[pygame.K_RIGHT]:
self.speedx = 5
#Fire weapons by holding spacebar
if keystate[pygame.K_SPACE]:
self.shoot()
## check for the borders at the left and right
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.left = 0
你可以使用
self.rect.center (or assign as you wish) = pygame.mouse.get_pos()
这将为您提供 (x,y) 鼠标,然后将玩家坐标设置为此值
使用它使鼠标在 pygame window 中不可见,否则您会看到指针和播放器
pygame.mouse.set_visible(False)
使用以下代码进行鼠标移动或单击
if pygame.event.get() == MOUSEMOTION:
x,y=mousex,mousey=event.pos
elif event.type == MOUSEBUTTONUP:
mousex,mousey=event.pos
mouseClicked = True
我用这个解决了我的问题。
if event.type == pygame.MOUSEMOTION:
player.rect.topleft = pygame.mouse.get_pos()