`

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实现贪吃蛇小游戏

    利用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 使用...

    python代码贪吃蛇.txt

    最简单的python代码实现贪吃蛇,人生苦短,请用python,入门基础的python小游戏开发,贪吃蛇这个游戏很简单,屏幕上随机出现一个点,表示“食物”,上下左右控制“蛇”的移动,吃到“食物”以后“蛇”的身体加长,“蛇”...

    【python代码实现】决策树分类算法、朴素贝叶斯分类算法以及人工神经网络分类算法的代码及数据

    1、资源配合博文《【python代码实现】决策树分类算法》、《【python代码实现】朴素贝叶斯分类算法》、《【python代码实现】人工神经网络分类算法及其实战案例(股票价格波动分析)》实操可掌握: 2、决策树分类算法...

Global site tag (gtag.js) - Google Analytics