Python----貪吃蛇遊戲
阿新 • • 發佈:2019-01-13
# -*- coding: UTF-8 -*- #引入turtle庫,製作snake,food的動畫 from turtle import * #引入random庫,使food隨機出現 from random import randrange #引入freegames庫,這個庫中封裝了許多元素;我們可以使用正方形元素表示food,snake,用vector這個二維向量表示snake的移動 from freegames import square, vector #初始化food,snake food = vector(0, 0) snake = [vector(10, 0)] #vector(0,10)表示第一個food的位置在以snake的頭為原點,橫座標為0,縱座標為-10處 aim = vector(0, -10) #改變方向 def change(x, y): aim.x = x aim.y = y #判斷snake有沒有碰到牆壁 def inside(head): return -200 < head.x < 190 and -200 < head.y < 190 def move(): head = snake[-1].copy() head.move(aim) #考慮遊戲結束的兩種情況,head碰到牆壁/頭碰到身體 if not inside(head) or head in snake: square(head.x, head.y, 9, 'red') update() return snake.append(head) #snake吃到food,下一個food會隨機出現在畫布的另一個地方 if head == food: print('Snake:', len(snake)) food.x = randrange(-15, 15) * 10 food.y = randrange(-15, 15) * 10 # snake沒有吃到food,snake列表pop(0) else: snake.pop(0) clear() for body in snake: square(body.x, body.y, 9, 'black') square(food.x, food.y, 9, 'green') update() ontimer(move, 100) #初始畫布尺寸 setup(420, 420, 370, 0) #隱藏滑鼠 hideturtle() tracer(False) #監聽 listen() #繫結鍵盤方向 onkey(lambda: change(10, 0), 'Right') onkey(lambda: change(-10, 0), 'Left') onkey(lambda: change(0, 10), 'Up') onkey(lambda: change(0, -10), 'Down') move() done()