Python貪吃蛇遊戲改進版之會動的食物
阿新 • • 發佈:2019-01-13
我一直覺得貪吃蛇遊戲中食物都是靜止不動,等著蛇來吃掉有些不太合理,畢竟蛇一般吃的都是老鼠,雞等活物,它們怎麼可能坐以待斃一動不動的等著蛇來吃掉呢,所以我決定更改一下貪吃蛇的程式碼,讓食物可以自由活動,我們需要重新定義食物模組,我們假設貪吃蛇吃的是雞,這首先定義一個雞模組,同樣的,雞也是由列表組成的:
class chichken(object):
def __init__(self): self.item=[(40,20),(40,19)]
相同的,當蛇吃雞後,雞同樣需要重新生成,這端程式碼也是不變的:
def update(self,screen,enlarge,snack): if enlarge: self.item[0]=np.random.randint(1,BOARDWIDTH-2),np.random.randint(1,BOARDHEIGHT-2) while self.item in snack.item: self.item[0]=np.random.randint(1, BOARDWIDTH - 2), np.random.randint(1, BOARDHEIGHT - 2) self._draw(screen,self.item[0][0],self.item[0][1])
那麼我們如何能讓小雞自己動起來呢,參照蛇移動的原理,筆者同樣定義了一個self.y和self.x,作為小雞的朝向,利用隨機函式,使得self.y和self.x在-1到1之間隨機選取,這樣,便達到讓小雞自動的往四個方向隨機移動的目的了:最後利用pygame畫圓的功能pygame.draw.circle,,我們便有了一隻活蹦亂跳的小雞了。
def chicken_move(self): x=1 y=1 self.x=1 self.y=1 if self.x*x>0 and self.y*y>0: self.x = random.randint(-1, 1) self.y = random.randint(-1, 1) x = self.x y = self.y self.item.pop() chichken = (self.item[0][0] + self.x, self.item[0][1] + self.y) if chichken[0]==BOARDWIDTH or chichken[0]==0 or chichken[1]==BOARDHEIGHT or chichken[1]==0: chichken = np.random.randint(1, BOARDWIDTH - 2), np.random.randint(1, BOARDHEIGHT - 2) self.item.insert(0, chichken) def _draw(self,screen,q,w): color=255,255,0 radius=8 width=8 position=10+20*q,10+20*w pygame.draw.circle(screen,color,position,radius,width)