首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

因此在很多游戏中,都需要得到鼠标的位置,以响应用户的操作。 现在,我们要在之前hello world的程序上增加一架飞机,并且用鼠标来控制飞机的位置。...得到鼠标位置坐标的方法是: pygame.mouse.get_pos() 与以往用的函数有些不同,这个函数会返回两个值:鼠标的x坐标和y坐标。...所以你需要两个变量来记录返回值: x, y = pygame.mouse.get_pos() 然后,在游戏主循环中,把实现准备好的飞机图片画到屏幕上,位置就是(x,y): screen.blit(plane...这是因为图片的坐标原点是在左上角,原点与鼠标的位置对齐。...background = pygame.image.load('bg.jpg').convert() plane = pygame.image.load('plane.jpg').convert() #加载飞机图像 while

5.9K120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python小游戏设计入门5-捡金币游戏(下)

    游戏暂停 添加一个游戏暂停界面,放在游戏主循环中的事件检测中,当按下s键后,游戏进入暂停界面,再按下s键回到游戏中。 ? ? ?...游戏结束 新添加一个结束界面的方法 ,在游戏主循环中进行调用,收集完所有金币就进入游戏结束画面,按下任意按键就退出程序。 ? ? ?...player=Player('Person_walk1.png') # 创建多个金币 20 for i in range(20): gold = Coin("gold_1.png") # 将金币的显示位置设置为一个随机范围...() break # 将玩家的坐标设置为鼠标的位置 player.rect.x=pos[0] player.rect.y=pos[1] screen.fill((124,205,124...font.render("分数:{}".format(score),True,(255,0,0)) screen.blit(text,(10,10)) pygame.display.flip() # 更新

    1.7K20

    异步,同步,阻塞,非阻塞程序的实现

    终于用透支生命的方法把这一课学完了。感动。以后不这样了。 实现异步非阻塞是一个大命题,这里只从原理出发。我会慢慢修改这篇文章。 本文将从异步sleep的实现入手,来讲解异步非阻塞程序的原理。...如果是同步,线程会等待接受函数的返回值(或者轮循函数结果,直到查出它的返回状态和返回值)。如果是异步,线程不需要做任何处理,在函数执行完毕后会推送通知或者调用回调函数。...线程会更新状态,当状态更新后,在下次轮循会触发生成器继续执行后面的动作。...for task in tasks: try: next(task[1]) # 不断的轮循每个生成器关连的timer。...上面的代码中,在一个while循环中轮循timer的状态。由于timer存在于wait中。所以需要把timer“提取”出来。

    7.6K10

    Python游戏开发,pygame模块,Python实现乒乓球小游戏

    得分先累计到11的一方即为获胜方。 逐步实现: Step1:开始界面 开始界面其实很简单,只需要定义两个按钮,然后当检测到玩家点击按钮时,将按钮对应的值传到接下来的游戏主循环中即可。...sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if button_1.collidepoint(pygame.mouse.get_pos...()): return 1 elif button_2.collidepoint(pygame.mouse.get_pos()): return...其中球拍精灵应当具备被玩家手动控制而移动/根据乒乓球的位置由电脑自动控制而移动的能力,具体实现如下: '''乒乓球拍''' class Racket(pygame.sprite.Sprite): def...首先,通过按键检测响应玩家的操作;然后,根据玩家操作实时更新游戏状态(乒乓球的位置,球拍等);最后统计得分,判断游戏是否已经结束,若结束,则进入结束界面,否则更新当前的游戏界面。

    1.1K30

    【Pygame 第5课】 游戏中的运动

    大体的思路是这样的: 1.用之前在屏幕上绘制飞机的方法,再绘制一张很小的子弹图片。 2.子弹被发射的位置是飞机的位置,也就是鼠标的位置。...注意,要让它们的中心点对齐,而不是左上角对齐,处理方法我们已经说过。 3.让这个子弹往上运动。还记得我在第2课《游戏的本质》里面说的吗:在游戏主循环中,要处理物理运动。...所以在程序中要做的就是,每次循环里,把子弹图片的y坐标减少一个量(因为屏幕左上角的坐标是(0,0))。为了能记住子弹上一次循环中的位置,要有变量专门来记录子弹的坐标值。...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() if bullet_y

    84550

    pygame-游戏开发学习笔记(二)–模块表与背景图样例。

    background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() while...background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() while...,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状...游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。...blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。

    1.3K40

    Kafka消费者的使用和原理

    轮循消费 while (true) { ConsumerRecords records = consumer.poll...消费者在每次调用poll方法时,则是根据偏移量去分区拉取相应的消息。而当一台消费者宕机时,会发生再均衡,将其负责的分区交给其他消费者处理,这时可以根据偏移量去继续从宕机前消费的位置开始。 ?...而消息者在每次消费消息时都将会将偏移量进行提交,提交的偏移量为下次消费的位置,例如本次消费的偏移量为x,则提交的是x+1。 ?...再看第2、3步,记录poll的开始以及检查是否有订阅主题。然后进入do-while循环,如果没有拉取到消息,将在不超时的情况下一直轮循。...第5步,更新偏移量,就是我们在前文说的在进行拉取操作前会先检查是否可以进行偏移量提交。

    4.5K10

    【python游戏编程之旅】第三篇---pygame事件与设备轮询

    2.实时事件循环 pygame中的事件处理是放在一个实时的循环中来完成的。将代码都放在一个while True的循环中,但是这样会造成死循环,所以在里面加一句sys.exit()来退出。...while True: for event in pygame.event.get(): if event.type == QUIT: sys.exit(...start...") 72 73 print_text(font2, 0, 240, chr(correct_answer-32), yellow) 74 75 76 #更新...这里有3个相关的函数: (1)pygame.mouse.get_pos(),这个函数会返回鼠标当前的坐标x,y; (2)pygame.mouse.get_rel(); rel_x ,rel_y = pygame.mouse.get_rel...同样我们可以设计一个小案例来熟悉一下鼠标轮询,比如当鼠标按下的时候 打印鼠标按的是左键还是右键,鼠标点击的位置,鼠标当前的坐标等等。这里就不给出实现代码了,感兴趣的可以自己实现一下。

    1.1K30

    解析PHP跳出循环的方法以及continue、break、exit的区别介绍

    本篇文章是对PHP跳出循环的方法以及continue、break、exit的区别进行了详细的分析介绍,需要的朋友参考下 PHP中的循环结构大致有for循环,while循环,do{} while 循环以及...foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式: 代码: 代码如下: PHP的代码片段的作用是输出100以内,既不能被7整除又不能被3整除的那些自然数,循环中先用if条件语句判断那些能被整除的数,然后执行 continue;语句,就直接进入了下个循环。...goto goto实际上只是一个运算符,和其他语言一样,PHP中也不鼓励滥用goto,滥用goto会导致程序的可读性严重下降。...goto的作用是将程序的执行从当前位置跳转到其他任意位置,goto本身并没有要结束的循环的作用,但其跳转位置的作用使得其可以作为跳出循环使用。

    5K40

    【Pygame 第6课】 面向对象的游戏设计

    上节课中,我们的飞机已经可以发射子弹了,尽管只有一颗。为什么我只加了一颗?试着多加几颗你就会发现,你得用好几个变量去分别记录它们的xy坐标,在主循环中判断每一颗子弹的状态。...别忘了你打飞机的对手--敌机还没有加入到游戏。到时候你又需要更多的变量去记录它们的坐标,去判断它们的状态,去处理敌机、子弹、玩家飞机之间的关系。想想都觉得头大。...于是乎,我之前煞费苦心讲解的面向对象就该派上用场了。我要把子弹相关的东西都封装在一起。 先看看目前子弹相关的有哪些东西:x、y坐标,一张图片,好像就这么多。然后,还有一段处理子弹运动状态的代码。...if self.y < 0: mouseX, mouseY = pygame.mouse.get_pos() self.x = mouseX...在原本加载子弹图片、初始化位置的地方,直接创建一个Bullet的实例。 bullet = Bullet() 在主循环中处理子弹运动的地方,调用Bullet的move方法。

    70780
    领券