贪吃蛇小游戏,这个游戏里面涉及到了面向对象,for 、if 、while循环,关联,继承等,包含nolocal,装饰器,包装器,随机数等。
例:贪吃蛇,撞墙,吃球,控制方向等
from random import randint
from abc import ABCMeta, abstractmethod
import pygame
BLACK_COLOR = [0, 0, 0]
FOOD_COLOR = [100, 202, 80]
GREEN_COLOR = [48, 172, 80]
UP = 0
RIGHT = 1
DOWN = 2
LEFT = 3
class GameObject(object, metaclass=ABCMeta):
def __init__(self, x, y, color):
self._x = x
self._y = y
self._color = color
@property
def x(self):
return self._x
@property
def y(self):
return self._y
@abstractmethod
def draw(self, screen):
pass
class Food(GameObject):
def __init__(self, x, y, size, color=FOOD_COLOR):
super(Food, self).__init__(x, y, color)
self._size = size
self._hidden = False
def draw(self, screen):
if not self._hidden:
pygame.draw.circle(screen, self._color,
(self._x + self._size // 2, self._y + self._size // 2)
, self._size // 2, 0)
self._hidden = not self._hidden
class Wall