`

100多行python代码实现贪吃蛇游戏

 
阅读更多
# encoding: utf-8  
import pygame
import sys
import random

# 全局定义
SCREEN_X = 600
SCREEN_Y = 600


# 蛇类
# 点以25为单位
class Snake(object):
    # 初始化各种需要的属性 [开始时默认向右/身体块x5]
    def __init__(self):
        self.dirction = pygame.K_RIGHT
        self.body = []
        for x in range(5):
            self.addnode()

    # 无论何时 都在前端增加蛇块
    def addnode(self):
        left,top = (0,0)
        if self.body:
            left,top = (self.body[0].left,self.body[0].top)
        node = pygame.Rect(left,top,25,25)
        if self.dirction == pygame.K_LEFT:
            node.left -= 25
        elif self.dirction == pygame.K_RIGHT:
            node.left += 25
        elif self.dirction == pygame.K_UP:
            node.top -= 25
        elif self.dirction == pygame.K_DOWN:
            node.top += 25
        self.body.insert(0,node)

    # 删除最后一个块
    def delnode(self):
        self.body.pop()

    # 死亡判断
    def isdead(self):
        # 撞墙
        if self.body[0].x  not in range(SCREEN_X):
            return True
        if self.body[0].y  not in range(SCREEN_Y):
            return True
        # 撞自己
        if self.body[0] in self.body[1:]:
            return True
        return False

    # 移动!
    def move(self):
        self.addnode()
        self.delnode()

    # 改变方向 但是左右、上下不能被逆向改变
    def changedirection(self,curkey):
        LR = [pygame.K_LEFT,pygame.K_RIGHT]
        UD = [pygame.K_UP,pygame.K_DOWN]
        if curkey in LR+UD:
            if (curkey in LR) and (self.dirction in LR):
                return
            if (curkey in UD) and (self.dirction in UD):
                return
            self.dirction = curkey


# 食物类
# 方法: 放置/移除
# 点以25为单位
class Food:
    def __init__(self):
        self.rect = pygame.Rect(-25,0,25,25)

    def remove(self):
        self.rect.x=-25

    def set(self):
        if self.rect.x == -25:
            allpos = []
            # 不靠墙太近 25 ~ SCREEN_X-25 之间
            for pos in range(25,SCREEN_X-25,25):
                allpos.append(pos)
            self.rect.left = random.choice(allpos)
            self.rect.top  = random.choice(allpos)
            print(self.rect)


def show_text(screen, pos, text, color, font_bold = False, font_size = 60, font_italic = False):
    #获取系统字体,并设置文字大小
    cur_font = pygame.font.SysFont("宋体", font_size)
    #设置是否加粗属性
    cur_font.set_bold(font_bold)
    #设置是否斜体属性
    cur_font.set_italic(font_italic)
    #设置文字内容
    text_fmt = cur_font.render(text, 1, color)
    #绘制文字
    screen.blit(text_fmt, pos)


def main():
    pygame.init()
    screen_size = (SCREEN_X,SCREEN_Y)
    screen = pygame.display.set_mode(screen_size)
    pygame.display.set_caption('Snake')
    clock = pygame.time.Clock()
    scores = 0
    isdead = False

    # 蛇/食物
    snake = Snake()
    food = Food()

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                snake.changedirection(event.key)
                # 死后按space重新
                if event.key == pygame.K_SPACE and isdead:
                    return main()


        screen.fill((255,255,255))

        # 画蛇身 / 每一步+1分
        if not isdead:
            scores+=1
            snake.move()
        for rect in snake.body:
            pygame.draw.rect(screen,(20,220,39),rect,0)

        # 显示死亡文字
        isdead = snake.isdead()
        if isdead:
            show_text(screen,(100,200),'YOU DEAD!',(227,29,18),False,100)
            show_text(screen,(150,260),'press space to try again...',(0,0,22),False,30)

        # 食物处理 / 吃到+50分
        # 当食物rect与蛇头重合,吃掉 -> Snake增加一个Node
        if food.rect == snake.body[0]:
            scores+=50
            food.remove()
            snake.addnode()

        # 食物投递
        food.set()
        pygame.draw.rect(screen,(136,0,21),food.rect,0)

        # 显示分数文字
        show_text(screen,(50,500),'Scores: '+str(scores),(223,223,223))

        pygame.display.update()
        clock.tick(10)


if __name__ == '__main__':
    main()

 

 

 

 

分享到:
评论

相关推荐

    100行Python代码的贪吃蛇小游戏源码.zip

    100行Python代码的贪吃蛇小游戏源码100行Python代码的贪吃蛇小游戏源码100行Python代码的贪吃蛇小游戏源码100行Python代码的贪吃蛇小游戏源码100行Python代码的贪吃蛇小游戏源码100行Python代码的贪吃蛇小游戏源码...

    PYTHON做贪吃蛇代码

    PYTHON做贪吃蛇代码 PYTHON做贪PYTHONPYTHON做贪吃蛇代码做贪吃蛇代码 吃蛇代码 PYTHON做贪吃蛇代码PYTHON做贪吃蛇代码PYPYTHON做贪吃蛇代码THON做贪吃蛇代码PYTHON做贪吃蛇代码PYTHON做PYTHON做贪吃蛇代码贪吃蛇...

    python代码学习贪吃蛇游戏实现

    python代码实现贪吃蛇小游戏,很好玩哦!!! from random import randrange # 导入随机函数 from freegames import vector,square # 导入向量函数与绘图函数 import turtle # 导入绘图海龟模块 turtle.onkey...

    一个简单的贪吃蛇游戏的完整 Python 代码

    python贪吃蛇完整代码,一个简单的贪吃蛇游戏的完整 Python 代码; python贪吃蛇完整代码,一个简单的贪吃蛇游戏的完整 Python 代码; python贪吃蛇完整代码,一个简单的贪吃蛇游戏的完整 Python 代码; python...

    (深信息)用python实现贪吃蛇小游戏毕业设计报告 .docx

    在本篇毕业设计报告中,学生将探讨如何利用Python编程语言来实现经典的“贪吃蛇”小游戏。Python因其简洁明了的语法和丰富的第三方库,成为实现此类项目的理想选择。在这一项目中,主要使用的库是Pygame,这是一个...

    python制作的贪吃蛇小游戏程序+代码

    python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python制作的贪吃蛇小游戏python...

    使用 Python 和 Pygame 实现的简单贪吃蛇游戏的完整代码

    使用 Python 和 Pygame 实现的简单贪吃蛇游戏的完整代码 使用 Python 和 Pygame 实现的简单贪吃蛇游戏的完整代码 使用 Python 和 Pygame 实现的简单贪吃蛇游戏的完整代码 使用 Python 和 Pygame 实现的简单贪吃蛇...

    贪吃蛇游戏python代码

    直接下载运行即可,贪吃蛇游戏python代码

    200行Python代码实现俄罗斯方块游戏所有功能源码.zip

    200行Python代码实现俄罗斯方块所有功能源码200行Python代码实现俄罗斯方块所有功能源码200行Python代码实现俄罗斯方块所有功能源码200行Python代码实现俄罗斯方块所有功能源码200行Python代码实现俄罗斯方块所有...

    Python实现贪吃蛇游戏项目源码.rar

    6. **动画和帧率控制**:为了实现游戏的流畅运行,需要控制每秒绘制图像的次数,即帧率。pygame库提供了一个时间模块,可以帮助我们实现这个功能。 7. **游戏循环**:游戏通常包含一个主循环,负责处理用户的输入、...

    Python实现贪吃蛇游戏:从零到完整的开发指南(含基础代码)

    本文将提供一个完整的Python贪吃蛇游戏的代码实现,并详细解析代码的各个部分。 本文提供了一个完整的Python贪吃蛇游戏的实现,包括代码和基本的游戏逻辑解析。虽然这是一个基础版本,但它为进一步的扩展和优化提供...

    Python贪吃蛇实训报告.doc

    4. 实现游戏循环,处理用户输入,更新蛇和食物的位置。 5. 使用pygame库的绘图功能绘制蛇、食物和得分。 6. 检查碰撞条件,判断游戏是否结束。 7. 更新游戏屏幕并控制帧率,以确保游戏流畅运行。 通过以上设计,一...

    Python100行代码实现贪吃蛇小游戏-游戏开发入门

    Python100行代码实现贪吃蛇小游戏-游戏开发入门 需要简单安装一下头文件引用的库 具有漂亮的可视化界面,可以自动积分,调整游戏难度

    快速排序.py python代码实现

    快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python代码实现快速排序.py python...

    桶排序.py 使用python代码实现

    桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶排序.py 使用python代码实现桶...

    归并排序.py 使用python代码实现

    归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用python代码实现归并排序.py 使用...

    python实现贪吃蛇小游戏

    利用python编写了一个经典的贪吃蛇小游戏,运行python代码后可以实现可视化的方式玩贪吃蛇游戏,附有完整的代码以及代码注释。

    2024版遗传算法详解 附python代码实现

    2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附python代码实现2024版遗传算法详解 附...

    堆排序13.py 使用python代码实现

    堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用...

Global site tag (gtag.js) - Google Analytics