Python 在pygame教程示例中用图像替换矩形

Python 在pygame教程示例中用图像替换矩形,python,pygame,blit,Python,Pygame,Blit,我正在跟随蒂姆的技术教程 在使用pygame和sockets的网络python游戏上。我有一个我认为很简单的问题,但因为我才刚刚开始,我不知道怎么做。在本教程中,他为网络上的每个玩家绘制了两个红色正方形(矩形)。每个玩家都可以用箭头控制他们的方块,并改变他们的x,y坐标。服务器使两个客户端保持同步。主要游戏代码如下 我将如何用我选择的png图像替换红方块?我知道我将需要加载图像,以某种方式使用blit来显示曲面,然后显示和更新,但仍停留在确切的方式上!非常感谢 导入pygame 从网络导入网络

我正在跟随蒂姆的技术教程

在使用pygame和sockets的网络python游戏上。我有一个我认为很简单的问题,但因为我才刚刚开始,我不知道怎么做。在本教程中,他为网络上的每个玩家绘制了两个红色正方形(矩形)。每个玩家都可以用箭头控制他们的方块,并改变他们的x,y坐标。服务器使两个客户端保持同步。主要游戏代码如下

我将如何用我选择的png图像替换红方块?我知道我将需要加载图像,以某种方式使用blit来显示曲面,然后显示和更新,但仍停留在确切的方式上!非常感谢

导入pygame 从网络导入网络

类播放器(): 宽度=高度=50

def __init__(self, startx, starty, color=(255,0,0)):
    self.x = startx
    self.y = starty
    self.velocity = 2
    self.color = color

def draw(self, g):
    pygame.draw.rect(g, self.color ,(self.x, self.y, self.width, self.height), 0)

def move(self, dirn):
    """
    :param dirn: 0 - 3 (right, left, up, down)
    :return: None
    """

    if dirn == 0:
        self.x += self.velocity
    elif dirn == 1:
        self.x -= self.velocity
    elif dirn == 2:
        self.y -= self.velocity
    else:
        self.y += self.velocity
班级游戏:

def __init__(self, w, h):
    self.net = Network()
    self.width = w
    self.height = h
    self.player = Player(50, 50)
    self.player2 = Player(100,100)
    self.canvas = Canvas(self.width, self.height, "Testing...")

def run(self):
    clock = pygame.time.Clock()
    run = True
    while run:
        clock.tick(60)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

            if event.type == pygame.K_ESCAPE:
                run = False

        keys = pygame.key.get_pressed()

        if keys[pygame.K_RIGHT]:
            if self.player.x <= self.width - self.player.velocity:
                self.player.move(0)

        if keys[pygame.K_LEFT]:
            if self.player.x >= self.player.velocity:
                self.player.move(1)

        if keys[pygame.K_UP]:
            if self.player.y >= self.player.velocity:
                self.player.move(2)

        if keys[pygame.K_DOWN]:
            if self.player.y <= self.height - self.player.velocity:
                self.player.move(3)

        # Send Network Stuff
        self.player2.x, self.player2.y = self.parse_data(self.send_data())

        # Update Canvas
        self.canvas.draw_background()
        self.player.draw(self.canvas.get_canvas())
        self.player2.draw(self.canvas.get_canvas())
        self.canvas.update()

    pygame.quit()

def send_data(self):
    """
    Send position to server
    :return: None
    """
    data = str(self.net.id) + ":" + str(self.player.x) + "," + str(self.player.y)
    reply = self.net.send(data)
    return reply

@staticmethod
def parse_data(data):
    try:
        d = data.split(":")[1].split(",")
        return int(d[0]), int(d[1])
    except:
        return 0,0
def __init__(self, w, h, name="None"):
    self.width = w
    self.height = h
    self.screen = pygame.display.set_mode((w,h))
    pygame.display.set_caption(name)

@staticmethod
def update():
    pygame.display.update()

def draw_text(self, text, size, x, y):
    pygame.font.init()
    font = pygame.font.SysFont("comicsans", size)
    render = font.render(text, 1, (0,0,0))

    self.screen.draw(render, (x,y))

def get_canvas(self):
    return self.screen

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