Python 如何在Pygame中设置两个对象以使用碰撞检测?
我正在做一个游戏,我的一个目标是一艘船,另一个是敌舰,我让我的敌舰跟随这艘船。我想让敌舰与敌舰相撞,然后使用碰撞探测器结束游戏 这是我的密码Python 如何在Pygame中设置两个对象以使用碰撞检测?,python,object,pygame,sprite,collision,Python,Object,Pygame,Sprite,Collision,我正在做一个游戏,我的一个目标是一艘船,另一个是敌舰,我让我的敌舰跟随这艘船。我想让敌舰与敌舰相撞,然后使用碰撞探测器结束游戏 这是我的密码 from pygame import * size_x = 1200 size_y = 700 class Object: def disp(self, screen): screen.blit(self.sprite, self.rect) class Bad (Object): def __init__(self)
from pygame import *
size_x = 1200
size_y = 700
class Object:
def disp(self, screen):
screen.blit(self.sprite, self.rect)
class Bad (Object):
def __init__(self):
self.sprite = image.load("bad guys.bmp")
self.rect = self.sprite.get_rect()
self.rect.centerx = size_x / 2
self.rect.centery = size_y / 2
def chase(self, mouse):
if self.rect.centerx > S.rect.centerx:
self.rect.centerx-=10
if self.rect.centerx< S.rect.centerx:
self.rect.centerx+= 10
if self.rect.centery > S.rect.centery:
self.rect.centery-= 10
if self.rect.centery< S.rect.centery:
self.rect.centery+= 10
class gameover (Object):
def __init__(self):
self.sprite= image.load("game over.bmp")
self.rect= self.sprite.get_rect()
self.rect.centerx=500
self.rect.centery=500
class Ship(Object):
def __init__(self):
self.sprite = image.load("ship.bmp")
self.rect = self.sprite.get_rect()
self.rect.centerx = 100
self.rect.centery = 100
def cycle (self):
self.rect.centerx, self.rect.centery=mouse.get_pos()
class shot(Object):
def __init__(self):
self.sprite = image.load("shot.bmp")
self.rect = self.sprite.get_rect()
self.rect.centerx=100
self.rect.centery=100
def cycle (self):
self.rect.centerx = S.rect.centerx
self.rect.centery = S.rect.centery-(S.sprite.get_width()/2)
for e in event.get():
if e.type==KEYDOWN:
if e.key==K_SPACE:
self.rect.centery-=10
init()
screen = display.set_mode((size_x, size_y))
B = Bad()
S = Ship()
g= gameover()
shot=shot()
clock = time.Clock()
while True:
for e in event.get():
if e.type == QUIT:
quit()
B.chase(S)
S.cycle()
shot.cycle()
screen.fill((255,255,255))
screen=display.set_mode((size_x,size_y))
screen=display.set_mode((size_x,size_y))
background=image.load("space.bmp")
background=transform.scale(background,(size_x,size_y))
screen.blit(background,(0,0))
S.disp(screen)
B.disp(screen)
shot.disp(screen)
display.flip()
clock.tick(60)
从pygame导入*
尺寸x=1200
尺寸y=700
类对象:
def显示(自身,屏幕):
screen.blit(self.sprite、self.rect)
类别错误(对象):
定义初始化(自):
self.sprite=image.load(“bad-guys.bmp”)
self.rect=self.sprite.get_rect()
self.rect.centerx=大小x/2
self.rect.centery=大小_y/2
def chase(自我,鼠标):
如果self.rect.centerx>S.rect.centerx:
自校正中心X-=10
如果self.rect.centerxS.rect.centery:
自校正中心-=10
如果self.rect.centery
Pygamerect
对象有很多碰撞检测方法。更多
因为在所有对象中都有
self.rect
,所以可以使用碰撞检测
B = Bad()
S = Ship()
pygame.sprite.collide_rect(B, S) # return True or False
使用sprite,您可以使用:、或检测碰撞
顺便说一下:
您的对象
类和其他类与精灵
非常相似,因此您可以使用更多精灵函数
Sprite
使用的某些属性/函数以及其他类属性/函数
- 绘图(屏幕)显示(屏幕)
- 更新()追逐(),循环()
- self.rect self.rect
- 自我形象自我精灵
B = Bad()
S = Ship()
pygame.sprite.collide_rect(B, S) # return True or False