-
大小: 8KB文件類型: .py金幣: 1下載: 0 次發(fā)布日期: 2021-06-01
- 語(yǔ)言: Python
- 標(biāo)簽: python??游戲開發(fā)??python案例??python項(xiàng)目??
資源簡(jiǎn)介
利用python編寫了一個(gè)經(jīng)典的貪吃蛇小游戲,運(yùn)行python代碼后可以實(shí)現(xiàn)可視化的方式玩貪吃蛇游戲,附有完整的代碼以及代碼注釋。
代碼片段和文件信息
#coding=UTF-8
from?Tkinter?import?*
from?random?import?randint
#?import?tkMessageBox
class?Grid(object):
????def?__init__(self?master=Noneheight=16?width=24?offset=10?grid_width=50?bg=“#808080“):
????????self.height?=?height
????????self.width?=?width
????????self.offset?=?offset
????????self.grid_width?=?grid_width
????????self.bg?=?bg
????????self.canvas?=?Canvas(master?width=self.width*self.grid_width+2*self.offset?height=self.height*self.grid_width+
????????????????????????????????????????????????????????????????????????????????????????????2*self.offset?bg=self.bg)
????????self.canvas.pack(side=RIGHT?fill=Y)
????def?draw(self?pos?color?):
????????x?=?pos[0]?*?self.grid_width?+?self.offset
????????y?=?pos[1]?*?self.grid_width?+?self.offset
????????#outline屬性要與網(wǎng)格的背景色(self.bg)相同,要不然會(huì)很丑
????????self.canvas.create_rectangle(x?y?x?+?self.grid_width?y?+?self.grid_width?fill=color?outline=self.bg)
class?Food(object):
????def?__init__(self?grid?color?=?“#23D978“):
????????self.grid?=?grid
????????self.color?=?color
????????self.set_pos()
????????self.type?=?1
????def?set_pos(self):
????????x?=?randint(0?self.grid.width?-?1)
????????y?=?randint(0?self.grid.height?-?1)
????????self.pos?=?(x?y)
????def?display(self):
????????self.grid.draw(self.pos?self.color)
class?Snake(object):
????def?__init__(self?grid?color?=?“#000000“):
????????self.grid?=?grid
????????self.color?=?color
????????self.body?=?[(8?11)?(8?12)?(8?13)]
????????self.direction?=?“Up“
????????for?i?in?self.body:
????????????self.grid.draw(i?self.color)
????#這個(gè)方法用于游戲重新開始時(shí)初始化貪吃蛇的位置
????def?initial(self):
????????while?not?len(self.body)?==?0:
????????????pop?=?self.body.pop()
????????????self.grid.draw(pop?self.grid.bg)
????????self.body?=?[(8?11)?(8?12)?(8?13)]
????????self.direction?=?“Up“
????????self.color?=?“#000000“
????????for?i?in?self.body:
????????????self.grid.draw(i?self.color)
????#蛇像一個(gè)指定點(diǎn)移動(dòng)
????def?move(self?new):
????????self.body.insert(0?new)
????????pop?=?self.body.pop()
????????self.grid.draw(pop?self.grid.bg)
????????self.grid.draw(new?self.color)
????#蛇像一個(gè)指定點(diǎn)移動(dòng),并增加長(zhǎng)度
????def?add(self?new):
????????self.body.insert(0?new)
????????self.grid.draw(new?self.color)
????#蛇吃到了特殊食物1,剪短自身的長(zhǎng)度
????def?cut_down(selfnew):
????????self.body.insert(0?new)
????????self.grid.draw(new?self.color)
????????for?i?in?range(03):
????????????pop?=?self.body.pop()
????????????self.grid.draw(pop?self.grid.bg)
????#蛇吃到了特殊食物2,回到最初長(zhǎng)度
????def?init(self?new):
????????self.body.insert(0?new)
????????self.grid.draw(new?self.color)
????????while?len(self.body)?>?3:
????????????pop?=?self.body.pop()
????????????self.grid.draw(pop?self.grid.bg)
?????#蛇吃到了特殊食物3,改變了自身的顏色純屬好玩
????def?change(self?new?color):
????????self.color?=?color
????????self.body.insert(0?new)
????????for?item?in?self.body:
????????????self.grid.draw(item?self.color)
class?S
評(píng)論
共有 條評(píng)論