python ### 刚学了python不久,发现了一个好玩的库pygame
使用pygame模块 利用面向对象的思想编写贪吃蛇,主要用到pygame.sprite:
游戏主类
import pygame,sys
from snake_sprite import Game_sprite,Snake,Food
SCREEN_RECT=pygame.Rect(0,0,828,600)
IMG_URL="./image/bg.jpg"
#主类
class Snakegame(object):
def __init__(self):
self.screen=pygame.display.set_mode(SCREEN_RECT.size)
self.clock=pygame.time.Clock()
self.__create_sprites()
def __create_sprites(self):
bg=Game_sprite(IMG_URL)
self.snake=Snake()
for pos in self.snake.snake_point:
self.screen.blit(self.snake.image,pos)
food=Food()
self.bg_group=pygame.sprite.Group(bg)
self.snake_group=pygame.sprite.Group(self.snake)
self.food_group = pygame.sprite.Group(food)
def start_game(self):
while True:
#1.时钟设置
self.clock.tick(30)
#2.事件监听
self.__event_handler()
#3.碰撞检测
self.__check_collide()
#4.精灵更新
self.__update_sprites()
#5.屏幕更新
pygame.display.update()
def __event_handler(self):
for event in pygame.event.get():
if event.type==pygame.QUIT:
Snakegame.__game_over()
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT and \
self.snake.direction !='L':
self.snake.speedy = 0
self.snake.speedx = 1
self.snake.direction = 'R'
elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT and \
self.snake.direction !='R':
self.snake.speedy = 0
self.snake.speedx = -1
self.snake.direction = 'L'
elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP and \
self.snake.direction !='D':
self.snake.speedx = 0
self.snake.speedy = -1
self.snake.direction = 'U'
elif event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN and \
self.snake.direction !='U':
self.snake.speedx=0
self.snake.speedy=1
self.snake.direction=