"""鼠标移动方块的mask碰撞检测原理示例程序
"""
import pygame
from pygame.locals import * pygame.init()
screen = pygame.display.set_mode((480,360))
pygame.display.set_caption("鼠标移动方块的mask碰撞检测原理示例程序by 李兴球")# 静止不动的红色方块
width,height = 50,50
x1,y1 = 100,100
redsquare = pygame.Surface((width,height)).convert_alpha()
redsquare.fill((255,10,10,228))                # 最后的0代表完全透明
redsquare_rect = redsquare.get_rect(topleft=(x1,y1))  # 定位
redmask = pygame.mask.from_surface(redsquare)  # 取掩膜# 用鼠标移动的蓝色方块
x2,y2 = pygame.mouse.get_pos()
bluesquare = pygame.Surface((width,height)).convert_alpha()
bluesquare.fill((10,10,255))
bluesquare_rect = bluesquare.get_rect(topleft=(x2,y2)) # 定位
bluemask = pygame.mask.from_surface(bluesquare) # 取掩膜running=True
while running:for event in pygame.event.get():if event.type == QUIT:running=Falsex2,y2  = pygame.mouse.get_pos()bluesquare_rect.topleft = (x2,y2 )offset = x1 -x2 , y1 - y2# 返回的p是相对于bluemask的偏移量p = bluemask.overlap(redmask,offset)if p:碰撞点 = bluesquare_rect.x + p[0],bluesquare_rect.y + p[1]info = "offset=" + str(offset) + ",p=" + str(p) + ",碰撞点坐标:" + str(碰撞点)pygame.display.set_caption(info)else:pygame.display.set_caption("无碰撞")screen.fill((0,0,0))screen.blit(redsquare,redsquare_rect)screen.blit(bluesquare,bluesquare_rect)     # 贴到屏幕pygame.display.update()pygame.quit()# 提示:本博客几乎不更新,需要Python创意游戏动画代码请百度一下:李兴球
# 找到博客  lixingqiu.com 

鼠标移动方块的mask碰撞检测原理示例程序相关推荐

  1. 53.垃圾回收算法的实现原理、启动Java垃圾回收、Java垃圾回收过程、垃圾回收中实例的终结、对象什么时候符合垃圾回收的条件、GC Scope 示例程序、GC OutOfMemoryError的示例

    53.垃圾回收算法的实现原理 53.1.目录 53.2.启动Java垃圾回收 53.3.Java垃圾回收过程 53.4.垃圾回收中实例的终结 53.5.对象什么时候符合垃圾回收的条件? 53.5.1. ...

  2. 《Arduino开发实战指南:机器人卷》一3.6 编程原理与示例程序

    本节书摘来华章计算机<Arduino开发实战指南:机器人卷>一书中的第3章 ,第3.6节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

  3. 示例程序:关于双目视觉,标定,立体匹配(视差算法),点云,双目三维重建的原理以及代码

    Evision双目视觉 关于双目视觉的一些总结 说明 前言 相机模型 标定 视差算法:立体匹配 测量,三维重建 示例程序 参考文献 关于双目视觉的一些总结 说明 如果读者对于本文或者Evision程序 ...

  4. Cocos2d-x碰撞检测原理与英雄要打死怪物--之游戏开发《赵云要格斗》(7)

     这里是Evankaka的博客,欢迎大家前面讨论与交流------ 转载请注明出处http://blog.csdn.net/evankaka/article/details/42689689 本文将详 ...

  5. 鼠标屏幕取词技术的原理和实现

    鼠标屏幕取词技术的原理和实现 "鼠标屏幕取词"技术是在电子字典中得到广泛地应用的,如四通利方和金山词霸等软件,这个技术看似简单,其实在WINDOWS系统中实现却是非常复杂的,总的来 ...

  6. `Mask`工具使用示例

    安装:核心工具 主要使用工具 mask 在 Mac 中的安装方式为 brew install mask 安装:实现默认任务效果所需工具 mask 0.9.0 不支持默认任务,所以暂时使用 Just . ...

  7. OPenGL模板缓冲区示例程序

    模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较.根据测试的结果,对模板缓冲区中得这个值进行相应的修改. Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试 ...

  8. VS2012下基于Glut OpenGL GL_STENCIL_TEST示例程序:

    模板测试是把像素存储在模板缓冲区的值与一个参考值进行比较.根据测试的结果,对模板缓冲区中得这个值进行相应的修改. Note:模板测试只有在存在模板缓冲区的情况下才会执行,如果不存在模板缓冲区,模板测试 ...

  9. ASP.NET AJAX示例程序:实现IDragSource和IDropTarget接口将商品拖放至购物车中

    本文来自<ASP.NET AJAX程序设计--第II卷:客户端Microsoft AJAX Library相关>第9章第3节. 9.3 示例程序:实现IDragSource和IDropTa ...

最新文章

  1. pandas将dataframe中的内容为列表(list)的数据列裂变、拆分为多个新的数据列实战:拆分为多个新的数据列(并指定新数据列的名称)、数据列中的列表(不等长)拆分为多个新的数据列产生NaN
  2. 如何安全实现“记住我”的功能
  3. 七 递归与二分法、匿名函数、内置函数
  4. 3万亿巨大市场,难怪马云、刘强东要抢着去养猪
  5. vue 添加子路由,并对路由重定向
  6. markdown的第一次使用
  7. 仿苹果涂鸦软件_ipad平板电脑有哪些绘画软件?
  8. apple 苹果官方的demo 下载地址
  9. DELPHI导出wps报错无效的类字符串
  10. 对面装修,办公室放置绿萝,袋装活性炭,空气净化器,有用吗?
  11. 富有创意的电子邮件签名设计(Email signature creative design template)
  12. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
  13. 为什么 A 能 ping 通 B,B 却不能 ping 通 A ?
  14. lib linux.so2 bad,linux – docker,openmpi和/ proc / mounts行的意外...
  15. windows下JDK的安装(一):安装路径的选择
  16. python写xml文件 数据量特别大_python处理xml大文件[xml.sax]
  17. AD20 PCB后期处理
  18. Fedora32 防火墙设置常用命令
  19. jdk11新特性——支持G1上的并行完全垃圾收集
  20. oracle ash 脚本 查询,[20210112]ashtop查询特定表的SQL语句.txt

热门文章

  1. Dynamics CRM项目实例之七:站点地图修改,联系人-订单-积分管理
  2. 【第04天】给定 n 个正整数,输出最大与最小的数
  3. 如何选择一款合适的机房监控软件?
  4. 计算机辅助设计师考试卷理论知识,《计算机辅助设计》考试试卷B(1)
  5. 艺术饭+!真.艺术饭计划少儿版 ArtFin谈另一种家族资产
  6. uno V3控制板cnc shield V3 2个8825驱动板套件做激光雕刻机
  7. 如何释放电脑默认被限制的20%网速
  8. 白鹭引擎用java_巧思见匠心 白鹭引擎5.0演绎业界首个双核H5引擎
  9. MySQL中国省份城市表
  10. android 悬浮窗的显示动画,android 悬浮窗特效