`

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()

 

 

 

 

分享到:
评论

相关推荐

    PYTHON做贪吃蛇代码

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

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

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

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

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

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

    标题中的“100行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贪吃蛇游戏的实现,包括代码和基本的游戏逻辑解析。虽然这是一个基础版本,但它为进一步的扩展和优化提供...

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

    200行Python代码实现俄罗斯方块所有功能(源码) 200行Python代码实现俄罗斯方块所有功能(源码) 200行Python代码实现俄罗斯方块所有功能(源码) 200行Python代码实现俄罗斯方块所有功能(源码) 200行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版遗传算法详解 附...

    Python 贪吃蛇游戏 Python源码

    Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码Python 贪吃蛇游戏 Python源码...

    Python设计贪吃蛇大作战游戏

    Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计贪吃蛇大作战游戏 Python设计...

    Python版贪吃蛇

    Python 版贪吃蛇游戏是一个功能强大、代码完整的游戏项目,使用 Python 语言和 Tkinter 库实现图形用户界面。该游戏具有较高的可玩性和学习价值,适合学习 Python 基础知识和图形编程的朋友借鉴。 一、游戏设计...

    教你一步步利用python实现贪吃蛇游戏

    ### 如何利用Python实现贪吃蛇游戏 #### 0. 引言 贪吃蛇游戏作为经典的手机游戏之一,在很多人的童年记忆里占有重要地位。本文将详细介绍如何使用Python编程语言来实现一个简单的贪吃蛇游戏。通过这篇文章,读者...

Global site tag (gtag.js) - Google Analytics