本系列博客介紹以python+pygame庫進行小遊戲的開發。有寫的不對之處還望各位海涵。html
上一個博客咱們一塊兒學習了pygame中衝突檢測技術:http://www.cnblogs.com/msxh/p/5027688.htmlpython
此次咱們來一塊兒學習在pygame遊戲裏面經常使用的一些數據結構: 數據,列表,元組,隊列,棧。數組
1、數組與列表數據結構
數組能夠理解爲簡化的列表。像咱們以前使用的pygame.sprite.Group這樣的精靈組,也是一個列表。列表的元素是可變的,它具備添加、刪除、搜索、排序等多種方法。app
一、一維列表學習
能夠在建立列表的時候一次性的定義全部元素,也能夠之後再向列表裏面添加:spa
name = ["zhangsan","lisi","wangwu"] print name ['zhangsan', 'lisi', 'wangwu']
修改元素3d
能夠經過索引號來獲取列表中的任何元素的數據,也能夠經過引用索引編號來修改元素值(索引編號是從0開始的):code
name = ["zhangsan","lisi","wangwu"] print name print name[0] name[0] = "zhaoliu" print name --------------------------------------------------- ['zhangsan', 'lisi', 'wangwu'] zhangsan ['zhaoliu', 'lisi', 'wangwu']
添加元素:htm
可使用append方法把一個元素添加到列表中:
name = ["zhangsan","lisi","wangwu"] print name name.append("zhaoliu") print name
-----------------------------------------------------
['zhangsan', 'lisi', 'wangwu']
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
也可使用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']
對元素統計:
若是一個列表中有重複的元素,可使用count()對其計數,其實就是統計一個列表中某個元素出現的次數:
num =[] num.append(10) num.append(10) num.append(90) num.append(79) num.append(10) print num.count(10) --------------------------- 3
搜索元素:
可使用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]
列表元素反轉:
使用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]
列表排序:
可使用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]
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]
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]
2、元組
元組是一種和列表相似的數據類型,可是元組的元素是隻讀的,不可更改的。一旦初始化了,裏面的元素就不能夠再進行更改了。元組的比列表的優勢就是元組的速度更快。
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
以上就是一些在pygame遊戲開發中經常使用的數據結構,很簡單,接觸過python的確定有了解的。
在下期的博客裏咱們將一塊兒製做一個酷跑類的小遊戲:《嗷大喵快跑》。效果圖以下: