如何解决pygame教程示例中用图片替换矩形
我正在通过 Tim 的教程关注 Tech
https://github.com/techwithtim/Network-Game-Tutorial
关于使用 pygame 和套接字的联网 python 游戏。我和我认为这是一个简单的问题,但因为我才刚刚开始,我不知道该怎么做。在本教程中,他为网络上的每个玩家绘制了两个红色方块(矩形)。每个玩家都可以用箭头控制他们的方格并改变他们的 x,y 坐标。服务器保持两个客户端同步。主要游戏代码如下。
如何用我选择的 png 图像替换红色方块?我知道我需要加载图像,以某种方式使用 blit 来显示表面,然后显示和更新,但坚持到底如何!非常感谢。
导入pygame 从网络导入网络
类播放器(): 宽度 = 高度 = 50
def __init__(self,startx,starty,color=(255,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,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))
self.screen.draw(render,(x,y))
def get_canvas(self):
return self.screen
def draw_background(self):
self.screen.fill((255,255,255))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。