Pygameใฎในใใฉใคใๆฉ่ฝใ็จใใฆใ่คๆฐใฎ็ปๅใชใใธใงใฏใใๅน็ใใ็ฎก็ใใๆนๆณใจใฝใผในใณใผใใ่งฃ่ชฌใใพใใ
- ใ1ใในใใฉใคใใฎๅบๆฌ็ใชไฝฟใๆน
- ใ1-1ใใตใณใใซใณใผใโ
- ใ1-2ใใตใณใใซใณใผใโ ใฎ่งฃ่ชฌ
- ใ2ใในใใฉใคใใฎใฐใซใผใๅ
- ใ2-1ใใตใณใใซใณใผใโก
- ใ2-2ใใตใณใใซใณใผใโกใฎ่งฃ่ชฌ
- ใ3-1ใในใใฉใคใใฎใฐใซใผใๅ ใใฎ2
- ใ3-1ใใตใณใใซใณใผใโข
- ใ3-2ใใตใณใใซใณใผใโขใฎ่งฃ่ชฌ
- ใ4ใในใใฉใคใๅๅฃซใฎ่ก็ชๅคๅฎใจ่ทณใญ่ฟใ
- ใ4-1ใใตใณใใซใณใผใโฃ
- ใ4-2ใใตใณใใซใณใผใโฃใฎ่งฃ่ชฌ
- ้ข้ฃใใผใธ
ใ1ใในใใฉใคใใฎๅบๆฌ็ใชไฝฟใๆน
Pygameใฎในใใฉใคใใฏใใฒใผใ ๅ ใฎใฐใฉใใฃใซใซใช่ฆ็ด ๏ผใใฌใคใคใผใๆตใชใฉ๏ผใ็ฎก็ใใใใใฎ้ๅธธใซไพฟๅฉใชๆฉ่ฝใงใใในใใฉใคใใไฝฟ็จใใใใจใงใไพใใฐไปฅไธใฎใใใซ่คๆฐใฎใฒใผใ ใชใใธใงใฏใใฎๆ็ปใๆดๆฐใ่ก็ชๅคๅฎใชใฉใๅน็็ใซ็ฎก็ใงใใพใใ
ใไปๅไฝฟ็จใใ็ปๅใ
Pygameใงในใใฉใคใใๆฑใใซใฏใไปฅไธใฎใใใซpygame.sprite.Spriteใฏใฉในใ็ถๆฟใใพใใ
import pygame class Player(pygame.sprite.Sprite): def __init__(self, image_path, pos): super().__init__() self.image = pygame.image.load(image_path).convert_alpha() self.rect = self.image.get_rect(topleft=pos) # update()`ใกใฝใใใไฝฟ็จใใฆใใชใใธใงใฏใใฎ็ถๆ ใๆดๆฐใใพใใ # ้ๅธธใไฝ็ฝฎใฎๅคๆดใใขใใกใผใทใงใณใฎๆดๆฐใชใฉใ่กใใพใใ def update(self): # ใใใซๆดๆฐใญใธใใฏใ่ฟฝๅ # ใชใใธใงใฏใใฎ็ปๅใ็ป้ขไธใซๆ็ป screen.blit(self.image, self.rect)
ๅ็ป่งฃ่ชฌ็
ใ1-1ใใตใณใใซใณใผใโ
ใตใณใใซใใญใฐใฉใ ใฎใฝใผในใณใผใใงใใ5ไบบใฎๅฅณใฎๅญใๅใๅใใพใใ
ใ1-2ใใตใณใใซใณใผใโ ใฎ่งฃ่ชฌ
ใใฎใณใผใใฏใPygameใไฝฟใฃใฆในใใฉใคใ๏ผ็ปๅ๏ผใ็ป้ขไธใงๅใใใทใณใใซใชใใญใฐใฉใ ใงใใไปฅไธใซๅ้จๅใฎ่ฉณ็ดฐใช่งฃ่ชฌใ่กใใพใใ
ใคใณใใผใใจๅๆ่จญๅฎ
# -*- coding: utf-8 -*-
import sys
import pygame
from pygame.locals import *
- sysใขใธใฅใผใซใใคใณใใผใใใฆใใพใใ
pygame
ใขใธใฅใผใซใจใใฎใญใผใซใซๅฎๆฐใใคใณใใผใใใฆใใพใใ
็ป้ขใตใคใบใจ็ปๅใใกใคใซใในใฎ่จญๅฎ
SCREEN = Rect(0, 0, 600, 400) # ็ป้ขใตใคใบ
GIRL1_IMG_PATH = "/Users/github/sample/python/pygame/sprite/girl1.png"
GIRL2_IMG_PATH = "/Users/github/sample/python/pygame/sprite/girl2.png"
GIRL3_IMG_PATH = "/Users/github/sample/python/pygame/sprite/girl3.png"
GIRL4_IMG_PATH = "/Users/github/sample/python/pygame/sprite/girl4.png"
GIRL5_IMG_PATH = "/Users/github/sample/python/pygame/sprite/girl5.png"
SCREEN
ใฏ็ป้ขใฎใตใคใบใ่จญๅฎใใใใใฎ็ฉๅฝขใชใใธใงใฏใใงใใ- ๅในใใฉใคใ็ปๅใฎใใกใคใซใในใๅฎ็พฉใใฆใใพใใ
ใฏใฉในใฎๅฎ็พฉใจๅๆๅ๏ผในใใฉใคใ๏ผ
Pygameใไฝฟใฃใฆในใใฉใคใ๏ผ็ปๅใชใใธใงใฏใ๏ผใ็ฎก็ใใใฏใฉใน Girl
ใๅฎ็พฉใใฆใใพใใ
class Girl(pygame.sprite.Sprite):
def __init__(self, filepath, pos, vxy, angle=0):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(filepath).convert_alpha()
if angle != 0:
self.image = pygame.transform.rotate(self.image, angle)
Girl
ใฏใฉในใฏpygame.sprite.Sprite
ใ็ถๆฟใใฆใใพใใใใใซใใใPygameใฎในใใฉใคใๆฉ่ฝใๅฉ็จใงใใพใใ__init__
ใกใฝใใใฏใในใใฉใคใใฎๅๆๅใ่กใใพใใfilepath
ใฏ็ปๅใใกใคใซใฎใในใงใใpos
ใฏในใใฉใคใใฎๅๆไฝ็ฝฎ๏ผx, y๏ผใงใใvxy
ใฏในใใฉใคใใฎ็งปๅ้ๅบฆ๏ผvx, vy๏ผใงใใangle
ใฏในใใฉใคใใฎๅ่ปข่งๅบฆใงใ๏ผใใใฉใซใใฏ0๏ผใ
self.image
ใซ็ปๅใ่ชญใฟ่พผใฟใๅฟ ่ฆใซๅฟใใฆๅ่ปขใใใพใใ
็ฉๅฝขใชใใธใงใฏใใฎไฝๆ
x, y = pos
vx, vy = vxy
w = self.image.get_width()
h = self.image.get_height()
self.rect = Rect(x, y, w, h)
pos
ใใไฝ็ฝฎใใvxy
ใใ้ๅบฆใๅๅพใใพใใ- ็ปๅใฎๅน
(
w
) ใจ้ซใ (h
) ใๅๅพใใRect
ใชใใธใงใฏใใไฝๆใใพใใRect
ใฏในใใฉใคใใฎไฝ็ฝฎใจใตใคใบใ็ฎก็ใใพใใ
็งปๅ้ๅบฆใจ่งๅบฆใฎ่จญๅฎ
self.vx = vx
self.vy = vy
self.angle = angle
- ในใใฉใคใใฎ็งปๅ้ๅบฆ (
vx
,vy
) ใจๅ่ปข่งๅบฆ (angle
) ใ่จญๅฎใใพใใ
ๆดๆฐใกใฝใใ
def update(self):
self.rect.move_ip(self.vx, self.vy)
if self.rect.left < 0 or self.rect.right > SCREEN.width:
self.vx = -self.vx
if self.rect.top < 0 or self.rect.bottom > SCREEN.height:
self.vy = -self.vy
self.rect = self.rect.clamp(SCREEN)
update
ใกใฝใใใฏในใใฉใคใใฎไฝ็ฝฎใๆดๆฐใใพใใmove_ip
ใกใฝใใใงในใใฉใคใใ็งปๅใใใพใใ- ในใใฉใคใใ็ป้ขใฎ็ซฏใซ้ใใๅ ดๅใ้ๅบฆใฎ็ฌฆๅทใๅ่ปขใใใฆ่ทณใญ่ฟใใพใใ
clamp
ใกใฝใใใงในใใฉใคใใ็ป้ขๅคใซๅบใชใใใใซใใพใใ
ๆ็ปใกใฝใใ
def draw(self, screen):
screen.blit(self.image, self.rect)
draw
ใกใฝใใใฏในใใฉใคใใ็ป้ขใซๆ็ปใใพใใscreen.blit
ใกใฝใใใง็ปๅใๆๅฎใใใไฝ็ฝฎ (self.rect
) ใซๆ็ปใใพใใ
ใกใคใณ้ขๆฐ
def main():
pygame.init()
screen = pygame.display.set_mode(SCREEN.size)
# ในใใฉใคใใฎไฝๆ
girl1 = Girl(GIRL1_IMG_PATH,(200, 200), (2, 0), 0)
girl2 = Girl(GIRL2_IMG_PATH,(200, 200), (0, 2), -20)
girl3 = Girl(GIRL3_IMG_PATH,(200, 200), (2, 3), 0)
girl4 = Girl(GIRL4_IMG_PATH,(200, 200), (1, 2), 20)
girl5 = Girl(GIRL5_IMG_PATH,(200, 200), (2, 1), 0)
clock = pygame.time.Clock()
running = True
while running:
clock.tick(30)
screen.fill((0, 20, 0))
# ๅในใใฉใคใใฎๆดๆฐ
girl1.update()
girl2.update()
girl3.update()
girl4.update()
girl5.update()
# ๅในใใฉใคใใฎๆ็ป
girl1.draw(screen)
girl2.draw(screen)
girl3.draw(screen)
girl4.draw(screen)
girl5.draw(screen)
pygame.display.update()
# ใคใใณใๅฆ็
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
running = False
if __name__ == "__main__":
main()
main
้ขๆฐใงPygameใๅๆๅใใ็ป้ขใ่จญๅฎใใพใใGirl
ใฏใฉในใฎใคใณในใฟใณในใไฝๆใใใใใใ็ฐใชใ็ปๅใไฝ็ฝฎใ้ๅบฆใ่งๅบฆใ่จญๅฎใใพใใ- ใกใคใณใซใผใๅ ใงใใฌใผใ ใฌใผใใ่จญๅฎใใ็ป้ขใๆดๆฐใใพใใ
update
ใกใฝใใใงๅในใใฉใคใใฎไฝ็ฝฎใๆดๆฐใใdraw
ใกใฝใใใง็ป้ขใซๆ็ปใใพใใ- ใคใใณใๅฆ็ใงใฆใฃใณใใฆใฎ้ใใใใฟใณใEscใญใผใๆผใใใๅ ดๅใซใซใผใใ็ตไบใใพใใ
ใ2ใในใใฉใคใใฎใฐใซใผใๅ
ในใใฉใคใใใฐใซใผใๅใใใจใ่คๆฐใฎในใใฉใคใใๅน็็ใซ็ฎก็ใงใใพใใ
ใฐใซใผใๅใใๆนๆณใฏใใใคใใใใพใใใไปๅใฏpygame.sprite.RenderUpdates()
ใไฝฟใๆนๆณใ่งฃ่ชฌใใพใใ
pygame.sprite.RenderUpdates()
ใฏใPygameใงในใใฉใคใใฎๆ็ปใๅน็็ใซ็ฎก็ใใใใใฎใฏใฉในใงใใใใฎใฏใฉในใฏใในใใฉใคใใฎๆดๆฐใจๆ็ปใ่กใ้ใซใๅคๆดใใใ้จๅใ ใใๅๆ็ปใใใใจใงใใใฉใผใใณในใๅไธใใใพใใ
ๅบๆฌ็ใชไฝฟใๆน
- ในใใฉใคใใฐใซใผใใฎไฝๆ
group = pygame.sprite.RenderUpdates()
RenderUpdates
ใฏใฉในใฎใคใณในใฟใณในใไฝๆใใพใใใใฎใฐใซใผใใซในใใฉใคใใ่ฟฝๅ ใใใใจใงใๅน็็ใชๆ็ปใๅฏ่ฝใซใชใใพใใ
- ในใใฉใคใใฎ่ฟฝๅ
group.add(sprite)
- ไฝๆใใในใใฉใคใใใฐใซใผใใซ่ฟฝๅ ใใพใใ่คๆฐใฎในใใฉใคใใไธๅบฆใซ่ฟฝๅ ใใใใจใใงใใพใใ
- ในใใฉใคใใฎๆดๆฐ
group.update()
- ใฐใซใผใๅ
ใฎใในใฆใฎในใใฉใคใใฎไฝ็ฝฎใ็ถๆ
ใๆดๆฐใใพใใๅในใใฉใคใใฎ
update
ใกใฝใใใๅผใณๅบใใใพใใ
- ใฐใซใผใๅ
ใฎใในใฆใฎในใใฉใคใใฎไฝ็ฝฎใ็ถๆ
ใๆดๆฐใใพใใๅในใใฉใคใใฎ
- ในใใฉใคใใฎๆ็ป
dirty_rects = group.draw(screen) pygame.display.update(dirty_rects)
- ใฐใซใผใๅ ใฎใในใฆใฎในใใฉใคใใ็ป้ขใซๆ็ปใใๅคๆดใใใ้ ๅ๏ผ็ฉๅฝข๏ผใฎใชในใใ่ฟใใพใใใใฎใชในใใไฝฟใฃใฆใ็ป้ขใฎๆดๆฐใๅน็็ใซ่กใใพใใ ใใฎๆๆณใฏใ็ป้ขๆดๆฐๆใๅ จไฝใๆใๆใใใซในใใฉใคใใๆดๆฐใใใไธ้จๅใ ใๆใๆใใใใจใงใใใฉใผใใณในใๅไธใใใพใใๅ จไฝใๆธใๆใใใๅ ดๅใฏใpygame.display.update()ใใจใใพใ๏ผdirty_rectsใไธใใชใ๏ผใ
ใ2-1ใใตใณใใซใณใผใโก
ใตใณใใซใณใผใโ ใpygame.sprite.RenderUpdates()
ใงในใใฉใคใใใฐใซใผใๅใใใจไปฅไธใฎใใใซใชใใพใใ
ใ2-2ใใตใณใใซใณใผใโกใฎ่งฃ่ชฌ
ใตใณใใซใณใผใโ ใจ็ฐใชใ้จๅใฎใฟ่งฃ่ชฌใใพใใ
ในใใฉใคใใฐใซใผใใฎไฝๆใจ่ฟฝๅ
group = pygame.sprite.RenderUpdates()
group.add(girl1)
group.add(girl2)
group.add(girl3)
group.add(girl4)
group.add(girl5)
pygame.sprite.RenderUpdates()
๏ผในใใฉใคใใ็ฎก็ใใใฐใซใผใใไฝๆใใพใใgroup.add(...)
๏ผไฝๆใใในใใฉใคใใใฐใซใผใใซ่ฟฝๅ ใใพใใ
ใกใคใณใซใผใ
running = True
while running:
clock.tick(30)
screen.fill((0, 20, 0))
group.update()
# ในใใฉใคใใฐใซใผใใๆ็ป
dirty_rects = group.draw(screen)
# ็ป้ขๆดๆฐ
pygame.display.update(dirty_rects)
group.update()
๏ผในใใฉใคใใฐใซใผใใฎไฝ็ฝฎใๆดๆฐใใพใใgroup.draw(screen)
๏ผในใใฉใคใใฐใซใผใใ็ป้ขใซๆ็ปใใพใใๅคๆฐdirty_rectsใซใฏใๅคๆดใใใ้ ๅ๏ผ็ฉๅฝข๏ผใฎใชในใใๆ ผ็ดใใใพใใ- ใชในใ
dirty_rects
ใpygame.display.update
ใซๆธกใใๅคๆดใใใ้จๅใ ใใๅๆ็ปใใใใจใงใ็ป้ขใฎๆดๆฐใๅน็็ใซ่กใใพใใ
ใ3-1ใในใใฉใคใใฎใฐใซใผใๅ ใใฎ2
Pygameใงในใใฉใคใใฐใซใผใๅใใใจใใpygame.sprite.Sprite.__init__(self, self.containers)
ใไฝฟใๆนๆณใใใใพใใ
ใใใฏใPygameใฎในใใฉใคใใฏใฉในใฎๅๆๅใกใฝใใใซใในใใฉใคใใๆๅฑใใใฐใซใผใใๆๅฎใใใใใฎใใฎใงใใใใใซใใใในใใฉใคใใไฝๆใใ้ใซ่ชๅ็ใซๆๅฎใใใใฐใซใผใใซ่ฟฝๅ ใใใพใ
ใใฎๆนๆณใฎใกใชใใใฏไปฅไธใฎใจใใใงใใ
- ใณใผใใฎ็ฐกๆฝๅ๏ผในใใฉใคใใไฝๆใใใใณใซgroup.add(…)`ใงใฐใซใผใใซ่ฟฝๅ ใใๅฟ ่ฆใใชใใชใใพใใ
- ไธ่ฒซๆงใฎ็ขบไฟ๏ผในใใฉใคใใๅธธใซๆๅฎใใใใฐใซใผใใซ่ฟฝๅ ใใใใใใ็ฎก็ใๅฎนๆใซใชใใพใใ
ใ3-1ใใตใณใใซใณใผใโข
ใตใณใใซใณใผใโกใpygame.sprite.Sprite.__init__(self, self.containers)
ใงในใใฉใคใใใฐใซใผใๅใใใจไปฅไธใฎใใใซใชใใพใใ
ใ3-2ใใตใณใใซใณใผใโขใฎ่งฃ่ชฌ
ใตใณใใซใณใผใโกใจใฎๅคๆด็ฎๆใ่งฃ่ชฌใใพใใ
1. ในใใฉใคใใฎๅๆๅ
Girlใฏใฉในใฎๅๆใกใฝใใใฎไปฅไธใฎ็ฎๆใงใใ
pygame.sprite.Sprite.__init__(self, self.containers)
pygame.sprite.Sprite.__init__(self, self.containers)
ใฏใในใใฉใคใใฏใฉในใฎ่ฆชใฏใฉในใงใใpygame.sprite.Sprite
ใฎๅๆๅใกใฝใใใๅผใณๅบใใพใใself.containers
ใฏใในใใฉใคใใๆๅฑใใใฐใซใผใใๆๅฎใใใใใฎๅผๆฐใงใใใใฎๅผๆฐใซใฏใในใใฉใคใใฐใซใผใ๏ผไพใใฐpygame.sprite.Group
ใpygame.sprite.RenderUpdates
๏ผใๆธกใใใพใใ
2. ในใใฉใคใใฐใซใผใใฎ่จญๅฎ
# ในใใฉใคใใฐใซใผใใฎไฝๆ
girl_group = pygame.sprite.RenderUpdates()
# Girlใฏใฉในใซในใใฉใคใใฐใซใผใใๅฒใๅฝใฆใ
Girl.containers = girl_group
girl_group = pygame.sprite.RenderUpdates()
๏ผในใใฉใคใใฐใซใผใใไฝๆใใพใใGirl.containers = girl_group
๏ผGirl
ใฏใฉในใฎcontainers
ๅฑๆงใซใไฝๆใใในใใฉใคใใฐใซใผใ(girl_group)ใๅฒใๅฝใฆใพใใใใใซใใใGirl
ใฏใฉในใฎใคใณในใฟใณในใไฝๆใใใใจใ่ชๅ็ใซใใฎใฐใซใผใใซ่ฟฝๅ ใใใพใใ
3. ในใใฉใคใใฎไฝๆใจ่ฟฝๅ
girl1 = Girl(GIRL1_IMG_PATH, (200, 200), (2, 0), 0)
girl1 = Girl(GIRL1_IMG_PATH, (200, 200), (2, 0), 0)
๏ผGirl
ใฏใฉในใฎใคใณในใฟใณในใไฝๆใใพใใใใฎใจใใ__init__
ใกใฝใใๅ ใงpygame.sprite.Sprite.__init__(self, self.containers)
ใๅผใณๅบใใใgirl1
ใฏ่ชๅ็ใซgirl_group
ใซ่ฟฝๅ ใใใพใใ
Pygameใงในใใฉใคใๅๅฃซใฎ่ก็ชๅคๅฎใจ่ทณใญ่ฟใใๅฎ่ฃ
ใใๆนๆณใใฝใผในใณใผใไปใใง่ฉณใใ่งฃ่ชฌใใพใใ
ใ4ใในใใฉใคใๅๅฃซใฎ่ก็ชๅคๅฎใจ่ทณใญ่ฟใ
ไปใฎใพใพใ ใจใ็ปๅใชใใธใงใฏใๅๅฃซใฎ่ก็ชๆใใใฎใพใพใใๆใใฆใใพใใพใใ
Pygameใงใฏใself.rect.colliderect
ใไฝฟใฃใฆในใใฉใคใๅๅฃซใฎ่ก็ชๅคๅฎใจ่ทณใญ่ฟใใๅฎ่ฃ
ใงใใพใใ
self.rect.colliderect(other_rect)
ใฏใ2ใคใฎ็ฉๅฝข๏ผRect
ใชใใธใงใฏใ๏ผใ่ก็ชใใฆใใใใฉใใใๅคๅฎใใใกใฝใใใงใใ
่ก็ชใใฆใใๅ ดๅใฏ True
ใ่ฟใใใใใงใชใๅ ดๅใฏ False
ใ่ฟใใพใใ
ใ4-1ใใตใณใใซใณใผใโฃ
5ใคใฎ็ปๅใชใใธใงใฏใใ่ก็ชใใใ่ทณใญ่ฟใใตใณใใซใณใผใใงใใ
ใ4-2ใใตใณใใซใณใผใโฃใฎ่งฃ่ชฌ
ไธ่จใณใผใใฎใใกใ่ก็ชๅคๅฎใจ่ทณใญ่ฟใใๅฎ่ฃ ใใฆใใ้จๅใฏไปฅไธใฎใจใใใงใใ
def update(self):
self.rect.move_ip(self.vx, self.vy)
if self.rect.left < 0 or self.rect.right > SCREEN.width:
self.vx = -self.vx
if self.rect.top < 0 or self.rect.bottom > SCREEN.height:
self.vy = -self.vy
self.rect = self.rect.clamp(SCREEN)
for sprite in self.containers:
if sprite != self and self.rect.colliderect(sprite.rect):
self.vx = -self.vx
self.vy = -self.vy
update
ใกใฝใใใงใฏใในใใฉใคใใฎไฝ็ฝฎใๆดๆฐใใ็ป้ขใฎ็ซฏใซ้ใใๅ ดๅใไปใฎในใใฉใคใใจ่ก็ชใใๅ ดๅใซ้ๅบฆใๅ่ปขใใใพใใใคใพใใในใใฉใคใใฏ็ป้ขใฎ็ซฏใไปใฎในใใฉใคใใซ่ก็ชใใใจ่ทณใญ่ฟใๅใใใใพใใself.rect.move_ip(self.vx, self.vy)
:ในใใฉใคใใฎไฝ็ฝฎใ็พๅจใฎ้ๅบฆ๏ผvx
,vy
๏ผใซๅบใฅใใฆๆดๆฐใใพใใif self.rect.left < 0 or self.rect.right > SCREEN.width:
- ในใใฉใคใใ็ป้ขใฎๅทฆ็ซฏใพใใฏๅณ็ซฏใซ้ใใๅ ดๅใ
vx
ใฎ็ฌฆๅทใๅ่ปขใใใฆๅๅฐใใใพใใ
- ในใใฉใคใใ็ป้ขใฎๅทฆ็ซฏใพใใฏๅณ็ซฏใซ้ใใๅ ดๅใ
if self.rect.top < 0 or self.rect.bottom > SCREEN.height:
- ในใใฉใคใใ็ป้ขใฎไธ็ซฏใพใใฏไธ็ซฏใซ้ใใๅ ดๅใ
vy
ใฎ็ฌฆๅทใๅ่ปขใใใฆๅๅฐใใใพใใ
- ในใใฉใคใใ็ป้ขใฎไธ็ซฏใพใใฏไธ็ซฏใซ้ใใๅ ดๅใ
self.rect = self.rect.clamp(SCREEN)
:- ในใใฉใคใใฎไฝ็ฝฎใ็ป้ขๅ ใซๅถ้ใใพใใ
- ไปใฎในใใฉใคใใจใฎ่ก็ชๅฆ็:
for sprite in self.containers:
ใงๅใใณใณใใๅ ใฎไปใฎในใใฉใคใใใซใผใใใพใใใคใพใใself.containers
ๅ ใฎไปใฎในใใฉใคใใใซใผใใใ่ชๅ่ช่บซไปฅๅคใฎในใใฉใคใใจ่ก็ชใใฆใใใใself.rect.colliderect(sprite.rect)
ใงๅคๅฎใใพใใif sprite != self and self.rect.colliderect(sprite.rect):
่ชๅ่ช่บซไปฅๅคใฎในใใฉใคใใจ่ก็ชใใๅ ดๅใvx
ใจvy
ใฎ็ฌฆๅทใๅ่ปขใใใฆๅๅฐใใใพใใ

้ข้ฃใใผใธ
Pygameใฎไฝฟใๆนใซใคใใฆใฏไปฅไธใใผใธใง่งฃ่ชฌใใฆใใพใใ

Pythonๅ จ่ฌใซใคใใฆใฏไปฅไธใใผใธใง่งฃ่ชฌใใฆใใพใใ

ใณใกใณใ
11่ก็ฎใฎใจใใใๆงๆใ้ใใจ่ฟใใใพใใ
โปๅฟๅๆง
ใณใกใณใใใใใจใใใใใพใใ
Python3ใ ใจใจใฉใผใๅบใใใใชใฎใงไฟฎๆญฃใใใใพใใใ
ๅคๆดใใใใจใใใใใพใใ
ๅคๆดใใใใจใฎใใฎใๅฎ่กใใใจไธใฎใจใฉใผใ่ตทใใพใใ
‘Sprite’ object has no attribute ‘img’
ใใใฏpyhotn3ใซใฏใชใใฎใงใใใใ๏ผ
โปๅฟๅๆง
ใณใกใณใใใใใจใใใใใพใใ
ๅฝๆนใฎ็ฐๅขใงใๅๆงใฎใจใฉใผใๅบใพใใใฎใงไฟฎๆญฃ่ดใใพใใใ