【Pygame 学习笔记】5.rect对象的碰撞检测

Pygame基础8-碰撞 PyGame碰撞 阅读详情

这一次,我们来学习rect对象的碰撞检测

首先,给出框架代码:

import pygame
from pygame.locals import *
import sys

class Game:
    def __init__(self):
        pygame.init()
        self.W,self.H=800,800
        self.screen=pygame.display.set_mode((self.W,self.H))
        pygame.display.set_caption("【Pygame 学习笔记】")

    def listen(self):
        for event in pygame.event.get():
            if event.type==QUIT:
                sys.exit()

    def draw(self):
        self.screen.fill((255,255,255))

    def run(self):
        while True:
            self.listen()
            self.draw()
            pygame.display.update()

if __name__ == '__main__':
    game=Game()
    game.run()

首先,是rect与点的碰撞,用rect自带的colliderect函数,返回值为bool

collidepoint(x,y)

collidepoint([x,y])

这是两种写法,比如,我们先画一个正方形,在draw中添加:

        rect=pygame.draw.rect(self.screen,(255,0,0),(10,10,100,100))

然后进行碰撞检测:

        if rect.collidepoint(pygame.mouse.get_pos()):
            print(True)

这样,只要碰到鼠标就会输出True


接下来,我们来学习两个rect的碰撞,在制作很多游戏时都需要用到,我们去除上方检测碰撞的代码,保留绘制rect的代码,然后绘制第二个图形:

        rect2=pygame.draw.rect(self.screen,(0,0,255),(self.x,10,40,40))

这里我们第二个图形需要在窗口中不断移动,碰到边缘就反弹,当碰到第一个图形的时候就输出True,这里就需要用到了colliderect函数,先定义两个变量在初始化中

        self.x=90
        self.speed=0.2

在绘制rect2的时候,先更新位置

self.x+=self.speed

然后进行碰撞操作和检测碰撞边缘的操作,检测碰撞边缘很简单,使用rect自带的一些参数与窗口的一些长宽进行比较即可,然后将速度设置为它的相反数

        if rect.colliderect(rect2):
            print(True)
        if rect2.right>=self.W or rect2.left<0:
            self.speed=-self.speed

这样就可以啦,当连哥哥图形碰撞时,程序会一直输出True

参考代码如下:

import pygame
from pygame.locals import *
import sys

class Game:
    def __init__(self):
        pygame.init()
        self.W,self.H=800,800
        self.screen=pygame.display.set_mode((self.W,self.H))
        pygame.display.set_caption("【Pygame 学习笔记】")
        self.x=90
        self.speed=0.2

    def listen(self):
        for event in pygame.event.get():
            if event.type==QUIT:
                sys.exit()

    def draw(self):
        self.screen.fill((255,255,255))
        rect=pygame.draw.rect(self.screen,(255,0,0),(10,10,100,100))
        # if rect.collidepoint(pygame.mouse.get_pos()):
        #     print(True)
        self.x+=self.speed
        rect2=pygame.draw.rect(self.screen,(0,0,255),(self.x,10,40,40))
        if rect.colliderect(rect2):
            print(True)
        if rect2.right>=self.W or rect2.left<0:
            self.speed=-self.speed

    def run(self):
        while True:
            self.listen()
            self.draw()
            pygame.display.update()

if __name__ == '__main__':
    game=Game()
    game.run()

rect还有一些检测碰撞的方法:collidelist,collidedict等等,collidelist传入一个列表,列表中是多个rect,collidedict传入rect的字典,也差不多,但是不会特别常用,这里就不讲解啦~


喜欢我的文章的话别忘了点赞收藏+关注哦~

谢谢支持~

pygame 飞机大战碰撞检查的运用(二)子弹(飞机)击中和逃逸屏幕的判断 目标:实现子弹击中飞机的碰撞检查 子弹是个矩形,飞机也是矩形,只要简单是使用pygame.Rect.colliderect()这个函数就能判断是否碰撞了。 pygame.Rect.colliderect()—检测两个 Rect 对象是否重叠,碰了返回 True,否则返回 False 假设子弹的位置 bullet_rect ,飞机的位置 plane_rect if pygame.Rec... 阅读详情

相关推荐

秒会pygame:小鸟躲柱子的游戏(完整代码和素材)

秒会pygame:小鸟躲柱子的游戏(完整代码和素材),上一篇文章我们学会了pygame的一些基本函数,可将用键盘和鼠标移动物体了,这篇文章学习了碰撞函数之后,就可以做小鸟躲柱子的经典游戏了,首先可以用列表封装小鸟的4种状态(平行,下降,起飞和死亡),然后将小鸟的图片裁剪成举行类,方便碰撞的检测,设置stutas为小鸟的状态为0,这个0对应着bird1的图片,平行飞行状态,再设置坐标,是否起飞,是否死亡,以及起飞和降落的速度。定义更新的函数,判断起飞或者是降落显示相应的位置。

m0_51783792的博客 6635

python 定义变量用ect_colliderect和类的Pygame问题

我有一个关于colliderect函数和嵌入在类和函数中的变量的问题。在我在我的重要元素(玩家、终点线、怪物)周围创建了“hitbox”,我希望在这些hitbox“相遇”时触发动作。在我知道pygame的colliderect函数就是要这样做的,但是不知怎么的,我无法实现它。在有人能给我解释一下,在下面的代码中,特别是当我要调用的变量嵌入到单独的类和函数中时,我将如何使用这个特性?在非常感谢,以下...

weixin_32058239的博客 1847

Pygame游戏开发:Rect碰撞检测原理、优化与实战指南

碰撞检测是游戏开发中的核心技术,用于判断游戏内物体间的交互关系。其基本原理是通过计算物体边界区域是否重叠来触发事件。在2D游戏开发中,矩形(Rect)碰撞因其计算高效、实现简单而成为最常用的方法,它构成了游戏物理交互和逻辑判断的基础,直接影响游戏的手感和性能。Pygame内置的Rect对象提供了完整的空间计算与碰撞检测方法,如`colliderect`和`collidepoint`,是实现角色移动、攻击判定、物体拾取等功能的基石。针对性能优化,开发者需掌握从基础循环检测到利用`collidelist`进行批

weixin_30751947的博客 508

Pygame详解(十一):Rect 对象

class pygame.Rect Rect 是用于存储矩形坐标的 Pygame 对象。 Rect(left, top, width, height) -&gt; Rect Rect((left, top), (width, height)) -&gt; Rect Rect(object) -&gt; Rect 属性 &amp; 方法 pygame.Rect.copy()  —  拷贝...

来自江南的你的博客 3万+

Pygame学习笔记6:使用Pygame精灵以及Escape the Dragon

上一章介绍了位图编程的相关内容,这一章就开始实现动画操作,那么主要就是要来了解pygame.sprite模块。 在pygame.sprite模块中,有一个名为Sprite的类,我们需要对其进行扩展使其成为一个我们需要的精灵类,pygame精灵以image和rect为基础,因此关键就是围绕这两个属性编写代码。 首先我们使用如下精灵图: 可以看到,精灵序列图包含了由“帧”组成的行和列,其中的每一个都是动画序列的一帧,注意,每一帧都带有行和列的标签,且标签是从0开始的。 精灵组会自动调用update()方法进

学习永无止境 2026

Pygame 2.5.1 实现恐龙跳一跳:3类精灵碰撞检测与60FPS帧率优化

本文详细介绍了如何使用Pygame 2.5.1开发恐龙跳一跳游戏,重点讲解了三类精灵(恐龙、仙人掌、飞鸟)的碰撞检测实现和60FPS帧率优化技术。通过硬件加速渲染、改进的精灵系统和性能分析工具,开发者可以构建流畅的2D游戏体验,适用于Python游戏开发学习和项目实践。

weixin_34364071的博客 384

pygame之rect对象

rect对象

赟文武的博客 2215

pygame矩形移动实战:从游戏循环到碰撞检测

游戏开发中,实时交互是最基础也最核心的需求。一切动画与响应都离不开游戏循环与事件监听机制,而坐标更新和渲染刷新则是物体运动的物理基础。在pygame环境下,通过键盘控制矩形移动正是打通这一链条的最小实践。它涵盖了帧率控制、边界判断与碰撞检测等高频技术点,是2D小游戏开发的重要起点。了解其实现原理,可以快速迁移到挡板游戏、贪吃蛇等项目中。本文提供完整的代码实现与排查方法,适合零基础读者快速上手并理解游戏逻辑的底层运作。

weixin_34302798的博客 404

Python Pygame.Rect() 检测碰撞

最近在学Pygame,花一段时间做了一个异常简陋版的"飞机大战"。 然后吧,就遇到了一个问题: 怎么检测碰撞呢?(个人太菜…) 按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的碰撞: if self.vector.x > WINDOW_X - self.image.get_width(): self.vector.x = WINDOW_X -self.image.get_width() eli

ShenCantJava的博客 6165

VSCode + Clangd 配置避坑实录:从‘红波浪线’到完美代码提示的完整心路

本文详细记录了VSCode与Clangd配置过程中的常见问题及解决方案,从编译数据库生成到参数调优,帮助C++开发者快速解决代码提示失效、头文件找不到等问题,实现完美代码补全体验。重点介绍了Clangd与LLDB的集成配置及性能优化技巧,适用于Linux和跨平台开发环境。

weixin_28829479的博客 490

国赛数学建模高教社杯历届优秀论文全集

包含了2004到2023年高教社的赛题及优秀论文。

BanDeng001的博客 3283

Python之pygame学习矩形区域(5)

在pygame中矩形区域这个类比较特殊,在游戏中,所有可见的元素都是以矩形区域来描述位置。 可以从left,top,width和height值的组合创建Rect。也可以从已经是Rect或具有名为“rect”的属性的python对象创建Rect。 任何需要Rect参数的pygame函数也接受这些值中的任何一个来构造Rect。这使得动态创建Rects更容易作为函数的参数。 官网说的不是很懂。。 更改R...

weixin_43932460的博客 3070

UE4-(蓝图)第五十五课图片九宫格拉伸的使用

一、为什么使用九宫格拉伸 在UI布局的时候,有时候使用的图片与我们要制作的UI大小有差距,如果图片是普通方式直接拉伸很可能造成图片四个角上的效果与原图片差距太大甚至是变形,这时候使用九宫格模式拉伸,可以保持图片四个角上的样式不发生改变,只对中间区域拉伸。 原始 正常拉伸: 九宫格拉伸: 二、图片参数设置 1.新建一个UI 控件蓝图,在CanvasPanel下拖入一个Image,选择一张...

Stone的博客 7884

Pygame简单入门教程(绘制Rect、控制移动、碰撞检测、Github项目源代码)

Pygame教你用最简单的方式实现游戏开发必备的基础逻辑!

一个前端人,游戏开发魂。 1154

整理笔记——二极管

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件,二极管的核心是PN结。加在二极管两端的电压和通关的电流被成为,二极管的伏安特性曲线​​​二极管的正向特性:起初正向电压较小时,正向电流几乎没有,称之为死区,此时二极管处于截止状态。当电压差超过截止电压(0.5V或者0.7V),电流随着电压上升,开始增加缓慢,随后急剧增大,二极管的电阻变小进入导通状态,此时电压变化较小。二极管的反向特性:起初反向电流很小,不随电压二变化,此时成为反向饱和电流;当方向电压达到二极管的反向击穿电压。

#include 811

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

Pygame高阶知识(5)-碰撞检测

在游戏的制作过程,我们难免要检测类似于子弹和敌人的碰撞之类的,那么今天我们就来讲讲pygame的碰撞检测。 a['rect'].colliderect(b['rect']) colliderect前后是两个rect对象,获取rect对象可以用get_rect方法,这样可以就可以检测两个物体是否碰撞了,下次见! ...

pynickle的博客 2682

MMRotate 详细使用教程

MMRotate 详细使用教程 做旋转目标检测,怎么可以不知道如何使用MMRotate呢! github链接: https://github.com/open-mmlab/mmrotate 1 安装 创建虚拟环境并激活 conda create -n mmrotate python=3.7 -y conda activate mmrotate 安装 PyTorch 和 torchvision conda install pytorch torchvision -c pytorch 注意:确保

Sylvia_Lan的博客 1万+

浅谈pygame.sprite的精灵碰撞

pygame.sprite.Sprite 碰撞检测

peanutfish的专栏 7581

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1003

BEVFormer详解

BEVFormer 是将Transformer架构的自注意机制与BEV视图中3D检测结合起来的一种纯视觉目标检测方案。对于纯视觉的BEV检测方案,其中的重中之重就是如何将2D的图像特征映射到3D空间的BEV栅格,既然是映射关系,那就有前行投影和反向查询两种机制。前向投影是基于深度估计的方法,参考基于深度估计的BEV视图转换方法,典型代表为LSS。反向查询方法思路为先将BEV栅格在Z方向上进行lift提升,然后再映射到图像特征图上进行特征查询。BEVFormer 就是基于这种机制进行2D图像特征到3D空间的B

MAX的专栏 4744

rect

pygame.Rect.copy() — 拷贝 Rect 对象 pygame.Rect.move() — 移动 Rect 对象 pygame.Rect.move_ip() — 原地移动 Rect 对象 pygame.Rect.inflate() — 放大和缩小 Rect 对象的尺寸 pygame.Rect.inflate_ip() — 原地放大和缩小 Rect 对象的尺寸 py...

qq_41746255的博客 600

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pygame精灵组有哪些方法_pygame 的精灵使用

pygame 的精灵使用pygame.sprite.Sprite 是 pygame 中用来实现精灵的一个类,在使用时并不需要对它实例化,只需要继承它,然后按需写出自己的类,因此非常简单、使用。1. 精灵精灵可以被认为是一个个小图片(帧)序列(例如人物行走),它可以在屏幕上移动,并且可以与其他图形对象交互。精灵图像可以是用 pygame 绘制形状函数绘制的形状,也可以是图像文件。2. Sprite ...

weixin_30182831的博客 2272

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python Pygame射击游戏开发:从零实现核心循环与碰撞检测

游戏开发的核心在于理解游戏循环、事件处理和对象交互的基本原理。游戏循环是驱动每一帧逻辑更新与画面渲染的引擎,它确保了游戏的实时响应性。事件处理机制负责捕捉用户输入,如键盘与鼠标操作,是实现交互的基础。在技术实现层面,面向对象编程(OOP)通过将游戏角色、子弹、敌人等实体抽象为类,极大地提升了代码的模块化和可维护性。其技术价值在于能够高效管理复杂状态与行为,是构建可扩展游戏项目的基石。典型的应用场景包括2D街机游戏、教育演示程序和交互式原型开发。本文以Python Pygame库为例,详细拆解了一个射击游戏示

weixin_30732487的博客 380

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python的 Group object has no attribute rect 问题未解决。

spritecollide = sprite.rect.colliderect AttributeError: ‘Group’ object has no attribute ‘rect’ 报错截图 leran_game.py #coding=utf-8 import pygame from pygame.sprite import Group from settings import Settings from rocket import Rocket from cube import Cube fr

weixin_45492535的博客 3951

pygame画扇形,并基于mask进行碰撞检测

pygame没法直接画扇形,可以画弧线并是令线宽等于半径间接画扇形。 基本思路如下: 画扇形建立类,并继承精灵类pygame.sprite.Sprite 长、宽分别等于两倍半径实例化Surface 根据Surface实例创建rect 根据Surface实例创建mask 实现扇形的draw方法 用pygame.sprite.collide_mask(A,B)进行碰撞检测 在调用pygame.display.update()之间,调用扇形的draw方法 代码如下: import pygame class

weixin_44079503的博客 3651
上一篇: 【Pygame 学习笔记】4.Transform 图片的操作
下一篇: 【Pygame 学习笔记】6.Cursor 鼠标光标
Leleprogrammer
博客等级 码龄5年 1万+粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值