Python 简单实现贪吃蛇小游戏

python学习网 2020-09-26 06:00:03

 

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

1. pygame库的简介

PyPoice是SDL多媒体库的Python包装模块。它包含Python函数和类,这些类和类允许使用SDL对CDROM、音频和视频输出、键盘、鼠标和操纵杆输入进行支持。
Pygame是一个利用SDL库的写就的游戏库, 是一组用来开发游戏软件的 Python 程序模块。SDL,全名Simple DirectMedia Layer,SDL是用C写的,不过它也可以使用C++进行开发,当然还有很多其它的语言,Pygame就是Python中使用它的一个库。pygame允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,是一个高可移植性的模块可以支持多个操作系统,用它来开发小游戏非常适合。

2. pygame库的安装

命令行pip安装,换国内源

pip install pygame -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

3. python代码实现贪吃蛇小游戏

利用python的pygame第三方库和面向对象编程的方法,实现简单的贪吃蛇小游戏,还可用pyinstaller打包成exe,方便自己想玩的时候直接点开或者分享给别人。

import pygame
import sys
import random
from pygame.locals import *


class Snake(object):

    # 制作背景和蛇、果实的的颜色, 0-255,  0,0,0,是代表黑色,  255,255,255代表白色
    def __init__(self):
        self.black = pygame.Color(0, 0, 0)
        self.red = pygame.Color(255, 0, 0)
        self.white = pygame.Color(255, 255, 255)


    def gameover(self):
        pygame.quit()
        sys.exit()


    def initialize(self):
        pygame.init()
        # 定义蛇运动的速度
        clock = pygame.time.Clock()
        # 定义一个游戏界面
        playSurface = pygame.display.set_mode((800, 600))
        # 设置界面名字
        pygame.display.set_caption('python贪吃蛇小游戏')
        # 初始化变量
        snakePosition = [80, 80]  # 贪吃蛇起始位置,前面的参数数水平方向的距离,后面的参数是垂直方向的距离
        # 贪吃蛇的长度,设定为方块的三百,每个方块的长度为25
        snakebody = [[80, 80], [60, 80], [40, 80]]
        targetPosition = [200, 400]  # 方块的初始位置
        targetflag = 1       # 定义一个标记,目的用来判断果实是否被吃掉
        direction = 'right'  # 初始化运动方向
        changeDirection = direction  # 改变方向变量
        self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)


    def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock):
        while True:
            # 用循环来获得pygame中的所有事件
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                # 创建一个键盘的事件
                elif event.type == KEYDOWN:
                    # 判断键盘的方向
                    if event.key == K_RIGHT:
                        changeDirection = 'right'
                        print('向右')
                    if event.key == K_LEFT:
                        changeDirection = 'left'
                        print("向左")
                    if event.key == K_DOWN:
                        print('向下')
                        changeDirection = 'down'
                    if event.key == K_UP:
                        print('向上')
                        changeDirection = 'up'
                    # 判断是否按下了esc键
                    if event.key == K_ESCAPE:
                        pygame.event.post(pygame.event.Event(QUIT))

            # 判断蛇的方向
            if changeDirection == 
阅读(3538) 评论(0)