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