資源簡介
【實例簡介】
【實例
【核心代碼】
【實例
【核心代碼】
代碼片段和文件信息
#?encoding:?utf-8
import?pygame
import?sys
import?random
#?全局定義
SCREEN_X?=?600
SCREEN_Y?=?600
#?蛇類
#?點以25為單位
class?Snake(object):
????#?初始化各種需要的屬性?[開始時默認向右/身體塊x5]
????def?__init__(self):
????????self.dirction?=?pygame.K_RIGHT
????????self.body?=?[]
????????for?x?in?range(5):
????????????self.addnode()
????#?無論何時?都在前端增加蛇塊
????def?addnode(self):
????????left?top?=?(0?0)
????????if?self.body:
????????????left?top?=?(self.body[0].left?self.body[0].top)
????????node?=?pygame.Rect(left?top?25?25)
????????if?self.dirction?==?pygame.K_LEFT:
????????????node.left?-=?25
????????elif?self.dirction?==?pygame.K_RIGHT:
????????????node.left?+=?25
????????elif?self.dirction?==?pygame.K_UP:
????????????node.top?-=?25
????????elif?self.dirction?==?pygame.K_DOWN:
????????????node.top?+=?25
????????self.body.insert(0?node)
????#?刪除最后一個塊
????def?delnode(self):
????????self.body.pop()
????#?死亡判斷
????def?isdead(self):
????????#?撞墻
????????if?self.body[0].x?not?in?range(SCREEN_X):
????????????return?True
????????if?self.body[0].y?not?in?range(SCREEN_Y):
????????????return?True
????????#?撞自己
????????if?self.body[0]?in?self.body[1:]:
????????????return?True
????????return?False
????#?移動!
????def?move(self):
????????self.addnode()
????????self.delnode()
????#?改變方向?但是左右、上下不能被逆向改變
????def?changedirection(self?curkey):
????????LR?=?[pygame.K_LEFT?pygame.K_RIGHT]
????????UD?=?[pygame.K_UP?pygame.K_DOWN]
????????if?curkey?in?LR+UD:
????????????if?(curkey?in?LR)?and?(self.dirction?in?LR):
????????????????return
????????????if?(curkey?in?UD)?and?(self.dirction?in?UD):
????????????????return
????????????self.dirction?=?curkey
#?食物類
#?方法:?放置/移除
#?點以25為單位
class?Food:
????def?__init__(self):
????????self.rect?=?pygame.Rect(-25?0?25?25)
????def?remove(self):
????????self.rect.x?=?-25
????def?set(self):
????????if?self.rect.x?==?-25:
????????????allpos?=?[]
????????????#?不靠墻太近?25?~?SCREEN_X-25?之間
????????????for?pos?in?range(25?SCREEN_X-25?25):
????????????????allpos.append(pos)
????????????self.rect.left?=?random.choice(allp
評論
共有 條評論