pygame精灵组有哪些方法_Python游戏开发:pygame游戏开发常用数据结构

本文介绍了Python游戏开发中pygame常用的数据结构,包括数组与列表的使用,如列表的添加、删除、搜索、排序等操作,并探讨了元组的特性。文章通过实例讲解了如何在pygame中管理游戏元素,为后续的pygame游戏开发打下基础。
摘要由CSDN通过智能技术生成

一、数组与列表

数组可以理解为简化的列表。像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表。列表的元素是可变的,它具有添加、删除、搜索、排序等多种方法。

1、一维列表

可以在创建列表的时候一次性的定义所有元素,也可以以后再向列表里面添加:

name = ["zhangsan","lisi","wangwu"]
print name
['zhangsan', 'lisi', 'wangwu']

修改元素

可以通过索引号来获取列表中的任何元素的数据,也可以通过引用索引编号来修改元素值(索引编号是从0开始的):

name = ["zhangsan","lisi","wangwu"] print name print name[0] name[0] = "zhaoliu" print name --------------------------------------------------- ['zhangsan', 'lisi', 'wangwu'] zhangsan ['zhaoliu', 'lisi', 'wangwu']

344ee51fbbc1d8170a62ba8a6ef3a740.png

添加元素:

可以使用append方法把一个元素添加到列表中:

name = ["zhangsan","lisi","wangwu"] print name name.append("zhaoliu") print name ----------------------------------------------------- ['zhangsan', 'lisi', 'wangwu'] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']

344ee51fbbc1d8170a62ba8a6ef3a740.png

也可以使用insert(index,value)方法把一个元素插入到列表的中间,index代表索引参数,value代表值。

name = ["zhangsan","lisi","wangwu"] print name name.insert(0,"zhaoliu") print name name.insert(1,"liuqi") print name ------------------------------------------------- ['zhangsan', 'lisi', 'wangwu'] ['zhaoliu', 'zhangsan', 'lisi', 'wangwu'] ['zhaoliu', 'liuqi', 'zhangsan', 'lisi', 'wangwu']

344ee51fbbc1d8170a62ba8a6ef3a740.png

对元素统计:

如果一个列表中有重复的元素,可以使用count()对其计数,其实就是统计一个列表中某个元素出现的次数:

num =[] num.append(10) num.append(10) num.append(90) num.append(79) num.append(10) print num.count(10) ---------------------------

344ee51fbbc1d8170a62ba8a6ef3a740.png

搜索元素:

可以使用index()方法来搜索一个元素在列表中第一次出现的位置:

num =[90,10,89,78,30,40,90,10]

print (num.index(10))
-----------------------------------------
1

删除元素:

使用remove()方法可以删除列表中的一个元素。

num =[90,10,89,78,30,40,90,10] print (num) num.remove(10) print (num) -------------------------------------------- [90, 10, 89, 78, 30, 40, 90, 10] [90, 89, 78, 30, 40, 90, 10]

344ee51fbbc1d8170a62ba8a6ef3a740.png

列表元素反转:

使用reverse()方法可以将整个列表翻转:

num =[90,10,89,78,30,40,90,10] print (num) num.reverse() print (num) ------------------------------------------ [90, 10, 89, 78, 30, 40, 90, 10] [10, 90, 40, 30, 78, 89, 10, 90]

344ee51fbbc1d8170a62ba8a6ef3a740.png

列表排序:

可以使用sort方法对列表中元素进行排序(默认是升序排列):

num =[9,11,35,2,49,12,8,5,99] print (num) num.sort() print (num) --------------------------------------- [9, 11, 35, 2, 49, 12, 8, 5, 99] [2, 5, 8, 9, 11, 12, 35, 49, 99]

344ee51fbbc1d8170a62ba8a6ef3a740.png

2.栈式列表

栈使用后进先出的方法来管理元素。pop方法可以弹出栈顶的元素(列表中的最后一项),append用来将一个元素压入栈中:

stack = [] for i in range(10): stack.append(i) print (stack) stack.append(10) print (stack) j = stack.pop() k = stack.pop() print (j,k) print (stack) ------------------------------------------ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (10, 9) [0, 1, 2, 3, 4, 5, 6, 7, 8]

344ee51fbbc1d8170a62ba8a6ef3a740.png

3.队列式列表:

队列使用的是先进先出的模式管理元素,python中有一个名为queue的模块实现了队列的功能,为了便于说明我们这里使用一个列表来代替队列:

queue = [] for i in range(10): queue.append(i) print (queue) queue.append(89) queue.append(70) print (queue) n = queue[0] queue.remove(n) print (queue) ---------------------------------- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 70] [1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 70]

344ee51fbbc1d8170a62ba8a6ef3a740.png

二、元组

元组是一种和列表类似的数据类型,但是元组的元素是只读的,不可更改的。一旦初始化了,里面的元素就不可以再进行更改了。元组的比列表的优点就是元组的速度更快。

1.初始化一个元组

创建一个元组的过程叫做打包:

tup = (1,2,3,4,5)
print tup
---------------------
(1, 2, 3, 4, 5)

如果此时你尝试修改元组中的元素的话,程序会报错。

Traceback (most recent call last):
  File "C:/Users/Administrator/Desktop/1.py", line 4, in <module>
    tup[0]=20
TypeError: 'tuple' object does not support item assignment

2.解包元组

读取一个元素的过程叫做解包

3.搜索元素

可以使用index方法来返回一个元素第一次出现的位置。也可以使用in()方法来搜索一个元素是否在元组中:

tup = (1,2,3,4,5) print (10 in tup) print (2 in tup) -------------------- False True

344ee51fbbc1d8170a62ba8a6ef3a740.png

以上就是一些在pygame游戏开发中常用的数据结构,很简单,接触过python的肯定有了解的。

在下期的博客里我们将一起制作一个酷跑类的小游戏:《嗷大喵快跑》。效果图如下:

c24655cbe6ce19396154b814ce40fe08.png

344ee51fbbc1d8170a62ba8a6ef3a740.png

091689c06d3a49c08d78f6f749c2a975.png

344ee51fbbc1d8170a62ba8a6ef3a740.png

c660d983fd29514e760eca4c29887324.png

344ee51fbbc1d8170a62ba8a6ef3a740.png

e4254d60c3b3f4dcd3fa4d2a829411b9.png

344ee51fbbc1d8170a62ba8a6ef3a740.png

8ae1766d4940bebc62580e47f815ffe8.png

344ee51fbbc1d8170a62ba8a6ef3a740.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值