更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

Python实战【用Python写游戏第四节】获取鼠标位置

  • 发布:Python培训
  • 来源:Crossin的编程教室
  • 时间:2019-03-26 16:10

欢迎大家来到Python自学教程实战篇,我们上一讲了解了游戏中有哪些需要响应的事件及每次响应如何给出需要的反馈等内容,这节课我们来学习如何控制获取鼠标的位置,使我们的游戏设计更流畅、更方便呢?

Python实战【用Python写游戏第四节】获取鼠标位置

最近微信上很火的“打飞机”游戏,通过手指在屏幕上触摸的位置来移动你的飞机。在电脑上,我们没法直接用手操作,但可以用鼠标替代手指。

在电脑游戏里,鼠标是个很好用的输入设备。因此在很多游戏中,都需要得到鼠标的位置,以响应用户的操作。

现在,我们要在之前hello world的程序上增加一架飞机,并且用鼠标来控制飞机的位置。

得到鼠标位置坐标的方法是:

pygame.mouse.get_pos()

与以往用的函数有些不同,这个函数会返回两个值:鼠标的x坐标和y坐标。所以你需要两个变量来记录返回值:

x, y = pygame.mouse.get_pos()

然后,在游戏主循环中,把实现准备好的飞机图片画到屏幕上,位置就是(x,y):

screen.blit(plane, (x,y))

运行程序,你会发现,鼠标移动到哪,飞机就会“飞”到哪。但是,飞机图片始终在鼠标的右下方。这是因为图片的坐标原点是在左上角,原点与鼠标的位置对齐。

如果你想让图片的中心和鼠标位置对齐,则需要再调整一下x,y的位置:

x-= plane.get_width() / 2

y-= plane.get_height() / 2

get_width和get_height分别是获取图片的宽和高。

你可以挑张合适的背景图和一张边缘透明的飞机图,再把窗口的长宽调整一下,让它看上去更舒服一些。

完整代码:

# -*- coding: utf-8 -*-

import pygame

from sys import exit

pygame.init()

screen = pygame.display.set_mode((600, 170), 0, 32)

pygame.display.set_caption("Hello, World!")

background = pygame.image.load('bg.jpg').convert()

plane = pygame.image.load('plane.jpg').convert()

#加载飞机图像

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

exit()

screen.blit(background, (0,0))

x, y = pygame.mouse.get_pos()

#获取鼠标位置

x-= plane.get_width() / 2

y-= plane.get_height() / 2

#计算飞机的左上角位置

screen.blit(plane, (x,y))

#把飞机画到屏幕上

pygame.display.update()

恭喜您在Python自学的道路上又坚持了一天,我们目前学习的知识比之前的要复杂一些,但是也比之前的有趣多了,所以希望大家跟上我们的步伐,继续加油!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python实战【用Python写游戏第三节】游戏中的事件
下一篇:Python实战【用Python写游戏第五节】游戏中的运动

【Git第八节】移除文件

【Python实战】四行Python代码就能知道你那的天气,你敢信?

Python实战【用Python写游戏第十三节】exe打包

Python实战【用Python写游戏第十二节】屡败屡战

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省