博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python贪吃蛇
阅读量:2069 次
发布时间:2019-04-29

本文共 3379 字,大约阅读时间需要 11 分钟。

#基于pygame设计的贪吃蛇。#想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载!import pygame,sys,randomSCREENx = 900SCREENy = 900class Snake():#蛇类    def __init__(self):        self.dirction = pygame.K_RIGHT        self.body = []        for x in range(2):            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(SCREENx):            return True        if self.body[0].y not in range(SCREENy):            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 = curkeyclass 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 = []            for pos in range(25, SCREENx - 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(size=None):    pygame.init()    Ssize = (SCREENx, SCREENy)    screen = pygame.display.set_mode(Ssize)    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)                if event.key == pygame.K_SPACE and isdead:                    return main()        screen.fill((10, 10, 10))        if not isdead:            snake.move()        for rect in snake.body:            pygame.draw.rect(screen, (255, 255, 255), rect, 0)        isdead = snake.isdead()        if isdead:            show_text(screen, (225, 400), 'press space to try again...', (225, 225, 225), False, 50)        if food.rect == snake.body[0]:            scores += 50            food.remove()            snake.addnode()        food.set()        pygame.draw.rect(screen, (255, 165, 50), food.rect, 0)        show_text(screen, (50, SCREENy-100), str(scores), (225, 225, 225))        pygame.display.update()        clock.tick(15)if __name__ == '__main__':    main()

 

转载地址:http://hinmf.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>