为什么 pygame 上两个移动物体之间的碰撞不起作用?

2024-04-05

我正在用 pygame 做一个蛇游戏(游戏中有两条蛇),我想检测蛇头何时与另一条蛇身体碰撞,对两者都执行此操作,以及当两个头碰撞时的特殊情况,我目前正在做蛇头和另一条蛇身体之间的碰撞,如果其中一条蛇被冻结而另一条蛇在移动,则碰撞效果很好,但如果两条蛇都在移动,碰撞就不起作用 这是移动蛇的代码:

new_pos = None
        if direction == 'DOWN':
            new_pos = (snake[0][0], snake[0][1] + size)
        if direction == 'UP':
            new_pos = (snake[0][0], snake[0][1] - size)
        if direction == 'LEFT':
            new_pos = (snake[0][0] - size, snake[0][1])
        if direction == 'RIGHT':
            new_pos = (snake[0][0] + size, snake[0][1])
        if new_pos:
            snake = [new_pos] + snake
            del snake[-1]

请记住,移动另一条蛇的代码是相同的,但snake变成snake2,new_pos变成new_pos2,等等

碰撞代码:

if snake2[0] in snake[1:]:
            gameOverBlue()

if snake2[0] in snake[1:]:
            gameOverRed()

编辑:我想我也应该添加制作蛇的代码:

#snake
    size = 15
    s_pos = 60
    snake = [(s_pos + size * 2, s_pos),(s_pos + size, s_pos),(s_pos, s_pos)]
    s_skin = pygame.Surface((size, size))
    s_skin.fill((82,128,208))
#snake2
    size2 = 15
    s2_pos = 195
    snake2 = [(s2_pos + size2 * 2, s2_pos),(s2_pos + size2, s2_pos),(s2_pos, s2_pos)]
    s2_skin = pygame.Surface((size2, size2))
    s2_skin.fill((208,128,82))

你需要评估头部是否snake已在列表中snake2,包括头snake2:

if snake[0] in snake2:
    gameOverBlue()

如果头snake2 is in snake:

if snake2[0] in snake:
    gameOverRed() 

如果你想检测蛇头是否碰撞,你必须比较snake[0] and snake2[0]分别地:

if snake[0] == snake2[0]:
    print("heads are colliding")

if snake[0] in snake2[1:]:
    gameOverBlue()
if snake2[0] in snake[1:]:
    gameOverRed() 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 pygame 上两个移动物体之间的碰撞不起作用? 的相关文章

随机推荐

  • 具有 Visual Studio 编辑器功能的独立文本编辑器

    有人知道任何具有 Visual Studio 编辑器功能的文本编辑器吗 具体来说 我正在寻找以下功能 CTRL C 行中任意位置 未选择任何文本 gt 复制整行 在线任意位置按 CTRL X 或 SHIFT DEL 未选择任何文本 gt 剪
  • Perl 逐行读取

    我有一个简单的 Perl 脚本来逐行读取文件 代码如下 我想显示两行并打破循环 但这不起作用 错误在哪里 file SnPmaster txt open INFO file or die Could not open file count
  • 将ArrayList数据传递到android中的SOAP Web服务

    您好 我需要将数组列表数据传递到soap web 服务中 到目前为止 我有以下代码 public class ResultActivity extends Activity public final String NAMESPACE pub
  • 在 iOS 上发送 HTTP POST 请求

    我正在尝试使用我正在开发的 iOS 应用程序发送 HTTP Post 但推送从未到达服务器 尽管我确实收到了代码 200 作为响应 来自 urlconnection 我从未收到服务器的响应 服务器也没有检测到我的帖子 服务器确实检测到来自
  • 为什么fork后关闭文件描述符会影响子进程?

    我想通过单击按钮在linux中运行程序 因此我编写了一个函数execute void execute const char program call const char param pid t child vfork if child 0
  • 对灰度 NSImage(或 CIImage)进行着色

    我有一个灰度图像 我想用它来绘制 Cocoa 控件 图像具有不同的灰度级别 在最暗的地方 我希望它绘制最暗的指定色调 我希望它在源图像是白色的地方是透明的 基本上 我想重现在 iPhone 上的 UINavigationBar 中看到的ti
  • Flutter中下拉刷新

    我的仪表板代码如下所示 这里我在 getReport 方法中做 get req 我添加了RefreshIndicator在代码中 当在容器内下拉时应该进行刷新 我正在调用我的 getData 但我没有得到刷新的内容 我在下面添加我的代码 如
  • 为什么 C++11 中需要添加尾随返回类型? [复制]

    这个问题在这里已经有答案了 我终于开始阅读c 11 questions tagged c 2b 2b11我不明白为什么需要尾随返回类型 我遇到了以下示例 该示例用于突出问题 template
  • Chrome 新标签页事件

    我想在 Chrome 中创建新选项卡时触发一个事件 我以为下面的内容可以做到这一点 但似乎不行 初学者 清单 json name My First Extension version 1 0 description The first ex
  • 如何处理服务器和客户端之间的时区?

    我正在开发一个网站 我必须处理用户可能存在的不同时区 这成为一个大问题 因为该网站举办拍卖等时间敏感的活动 服务器上的所有日期 时间均采用 UTC 格式 数据库以 UTC 时间戳存储所有内容 PHP 默认时区也设置为 UTC date de
  • 选择选项中的删除线文本

    我试图删除选择选项中的文本 但由于某种原因它不起作用 Fiddler https jsfiddle net 99x50s2s 95 https jsfiddle net 99x50s2s 95 HTML
  • NSURLSessionTask 身份验证质询完成处理程序和 NSURLAuthenticationChallenge 客户端

    我正在实施一个自定义NSURLProtocol 并且内部想要使用NSURLSession与内部网络的数据任务而不是NSURLConnection 我遇到了一个有趣的问题 想知道挑战处理程序的内部实现NSURLSession NSURLSes
  • 使用 XML 差异和合并进行版本控制

    我正在寻找一个开源版本控制工具 可以比较和合并 XML 文件 我必须找到这样一个工具的困难在于 我需要正确合并比较节点而不是行的 XML 文件 任何想法 谢谢 不幸的是 对于这个问题没有一刀切的解决方案 XML 比较对于您认为不同的内容非常
  • 为什么 C# Parallel.Invoke 很慢?

    我正在这样做 private static void Main string args var dict1 new Dictionary
  • 带有每个项目的详细信息行的 Gridview

    我是 ASP NET 新手 我有一个基本的工作网格视图 列出了公司名称 参见下面的代码 我想要做的是在每个公司下提供另一个联系人子列表 在 子列表 中缩进一点 我想以某种方式循环遍历 Gridview 数据 然后运行联系人查询 将是 Sel
  • React、Webpack 应用程序中重叠 CSS

    我使用 webpack 和 Reactjs 创建了一个应用程序 到目前为止我已经创建了 2 个页面 我已经为这两个页面定义了 CSS 样式 但是 当我在加载页面 1 后加载页面 2 时 页面 1 的样式会干扰页面 2 的样式 例如 Page
  • 绘制指数或分位数色带在零附近发散的栅格

    我正在使用 R 函数levelplot 来自rasterVis包来绘制具有单个发散色带的三个栅格的堆栈 我想更改栅格颜色渐变的比例 以便地图突出较低值的差异 这可以通过颜色中断的非线性分级来完成 我正在使用来自的代码a gist https
  • Orderer有区块(账本)数据吗?

    我使用基于 Kafka 的订购服务构建了超级账本结构网络 我以为Orderer没有Block数据 但是 当我检查 Orderer 服务器中的 var hyperledger product orderer chains mychannel
  • 无法加载为扩展“[extensionHere]”注册的类型[nameHere]

    我一直在 fx3 5 上使用 WCF 学习和构建 JSONP Web 服务 你可以阅读我在以下网站进行的一些试验 NET ASMX 返回纯 JSON https stackoverflow com questions 1903022 net
  • 为什么 pygame 上两个移动物体之间的碰撞不起作用?

    我正在用 pygame 做一个蛇游戏 游戏中有两条蛇 我想检测蛇头何时与另一条蛇身体碰撞 对两者都执行此操作 以及当两个头碰撞时的特殊情况 我目前正在做蛇头和另一条蛇身体之间的碰撞 如果其中一条蛇被冻结而另一条蛇在移动 则碰撞效果很好 但如