[pygame] pygame设计联机对战桌游(四)

本系列总目录:https://blog.csdn.net/wxlxy316/article/details/104246724

内容概要

一、学习pygame提供的官方教程(3)

官方教程

4. 图像的移动

4.1 为了消除残影,先想象一串数字

为了便于想象,我们假设玩家操纵的小人是数字8,并在一串数字上移动

>>> screen = [1, 1, 2, 2, 2, 1]
>>> print screen
[1, 1, 2, 2, 2, 1]

>>> playerpos = 3
>>> screen[playerpos] = 8
>>> print screen
[1, 1, 2, 8, 2, 1]

>>> playerpos = playerpos - 1
>>> screen[playerpos] = 8
>>> print screen
[1, 1, 8, 2, 2, 1]

若只是简单的移动小人坐标并再次绘制,小人会留下一串残影

>>> background = [1, 1, 2, 2, 2, 1]
>>> for i in range(6):
...     screen[i] = background[i]
>>> print screen
[1, 1, 2, 8, 2, 1]

>>> screen[playerpos] = background[playerpos]
>>> playerpos = playerpos - 1
>>> screen[playerpos] = 8
>>> print screen
[1, 1, 8, 2, 2, 1]

使用以上代码可以消除残影,处理思路为,先将旧位置上的小人使用background对应位置数字消除,再移动小人,并再次绘制

4.2 从一串数字到屏幕图像

要将上面我们看到的代码用作示例,并使它们与pygame一起使用非常简单。我们假装已经加载了一些漂亮的图形,并将它们命名为“ terrain1”,“ terrain2”和“ hero”。在我们将数字分配给列表之前,现在将图形拖到屏幕上。另一个大变化是,现在我们需要一个二维坐标,而不是将位置用作单个索引(0到5)。我们假设游戏中的每个图形都是10像素宽。

>>> background = [terrain1, terrain1, terrain2, terrain2, terrain2, terrain1]
>>> screen = create_graphics_screen()
>>> for i in range(6):
...     screen.blit(background[i], (i*10, 0))
>>> playerpos = 3
>>> screen.blit(playerimage, (playerpos*10, 0))
4.3 平滑移动

通过以上代码,英雄实现了地图格间的移动,但是英雄一格一格的移动显然是不合理的,因此我们又使用了以下代码来使得英雄实现平滑移动

>>> screen = create_screen()
>>> player = load_player_image()
>>> background = load_background_image()
>>> screen.blit(background, (0, 0))        #draw the background
>>> position = player.get_rect()
>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值