python贪吃蛇游戏代码详解外加中文_贪吃蛇java详解

python贪吃蛇游戏代码详解外加中文_贪吃蛇java详解在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN博客另一篇文章上。这里就不详细说了。下边时运行游戏界面。下边是详细的代码和注释importpygame,sys,random,timefrompygame.localsimport*#从pygame模块导入常用的函数和常量#定义颜色变量black_colour…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在写Python游戏项目时,最重要的时python中的pygame库。安装pygame库和用法在我CSDN博客另一篇文章上。这里就不详细说了。下边时运行游戏界面。

python贪吃蛇游戏代码详解外加中文_贪吃蛇java详解

下边是详细的代码和注释

import pygame,sys,random,time
from pygame.locals import *   #从pygame模块导入常用的函数和常量
#定义颜色变量
black_colour = pygame.Color(0,0,0)
white_colour = pygame.Color(255,255,255)
red_colour = pygame.Color(255,0,0)
grey_colour = pygame.Color(150,150,150)
#定义游戏结束函数
def GameOver(gamesurface):
    #设置提示字体的格式
    GameOver_font = pygame.font.SysFont("MicrosoftYaHei", 16)
    #设置提示字体的颜色
    GameOver_colour = GameOver_font.render('Game Over',True,grey_colour)
    #设置提示位置
    GameOver_location = GameOver_colour.get_rect()
    GameOver_location.midtop = (320,10)
    #绑定以上设置到句柄
    gamesurface.blit(GameOver_colour,GameOver_location)
    #提示运行信息
    pygame.display.flip()
    #休眠5秒
    time.sleep(5)
    #退出游戏
    pygame.quit()
    #退出程序
    sys.exit()
#定义主函数
def main():
    #初始化pygame,为使用硬件做准备
    pygame.init()
    pygame.time.Clock()
    ftpsClock = pygame.time.Clock()
    #创建一个窗口
    gamesurface = pygame.display.set_mode((640,480))
    #设置窗口的标题
    pygame.display.set_caption('tanchishe snake')
    #初始化变量
    #初始化贪吃蛇的起始位置
    snakeposition = [100,100]
    #初始化贪吃蛇的长度
    snakelength = [[100,100],[80,100],[60,100]]
    #初始化目标方块的位置
    square_purpose = [300,300]
    #初始化一个数来判断目标方块是否存在
    square_position = 1
    #初始化方向,用来使贪吃蛇移动
    derection = "right"
    change_derection = derection
    #进行游戏主循环
    while True:
        #检测按键等pygame事件
        for event in pygame.event.get():
            if event.type==QUIT:
                #接收到退出事件后,退出程序
                pygame.quit()
                sys.exit()
            elif event.type==KEYDOWN:
                #判断键盘事件,用w,s,a,d来表示上下左右
                if event.key==K_RIGHT or event.key==ord('d'):
                    change_derection = "right"
                if event.key==K_LEFT or event.key==ord('a'):
                    change_derection = "left"
                if event.key==K_UP or event.key==ord('w'):
                    change_derection = "up"
                if event.key==K_DOWN or event.key==ord('s'):
                    change_derection = "down"
                if event.key==K_ESCAPE:
                    pygame.event.post(pygame.event.Event(QUIT))
        #判断移动的方向是否相反
        if change_derection =='left'and not derection =='right':
            derection = change_derection
        if change_derection =='right'and not derection =='left':
            derection = change_derection
        if change_derection == 'up' and not derection =='down':
            derection = change_derection
        if change_derection == 'down' and not derection == 'up':
            derection = change_derection
        #根据方向,改变坐标
        if derection == 'left':
            snakeposition[0] -= 20
        if derection == 'right':
            snakeposition[0] += 20
        if derection == 'up':
            snakeposition[1] -= 20
        if derection == 'down':
            snakeposition[1] += 20
        #增加蛇的长度
        snakelength.insert(0,list(snakeposition))
        #判断是否吃掉目标方块
        if snakeposition[0]==square_purpose[0] and snakeposition[1]==square_purpose[1]:
            square_position = 0
        else:
            snakelength.pop()
        #重新生成目标方块
        if square_position ==0:
            #随机生成x,y,扩大二十倍,在窗口范围内
            x = random.randrange(1,32)
            y = random.randrange(1,24)
            square_purpose = [int(x*20),int(y*20)]
            square_position = 1
        #绘制pygame显示层
        gamesurface.fill(black_colour)
        for position in snakelength:
            pygame.draw.rect(gamesurface,white_colour,Rect(position[0],position[1],20,20))
            pygame.draw.rect(gamesurface,red_colour,Rect(square_purpose[0],square_purpose[1],20,20))
        #刷新pygame显示层
        pygame.display.flip()
        #判断是否死亡
        if snakeposition[0]<0 or snakeposition[0]>620:
            GameOver(gamesurface)
        if snakeposition[1]<0 or snakeposition[1]>460:
            GameOver(gamesurface)
        for snakebody in snakelength[1:]:
            if snakeposition[0]==snakebody[0] and snakeposition[1]==snakebody[1]:
                GameOver(gamesurface)
        #控制游戏速度
        ftpsClock.tick(5)

if __name__ == "__main__":
    main()








 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169539.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 树莓派 Ubuntu 18.04 启动2.4Ghz或5Ghz热点及部分5G信道启动失败解决方法「建议收藏」

    树莓派 Ubuntu 18.04 启动2.4Ghz或5Ghz热点及部分5G信道启动失败解决方法「建议收藏」配置热点1.建立wifi热点建立2.4GHz热点sudonmclicaddtypewifiifname<wifi-device>con-name<connection-name>autoconnectnossid<hotspot-ssid>新建热点sudonmcliconnectionmodify<connection-name>802-11-wireless.modeap802-11-wireless.

    2022年5月29日
    72
  • java 4种 布局方法_JAVA布局模式:GridBagConstraints终极技巧

    java 4种 布局方法_JAVA布局模式:GridBagConstraints终极技巧JAVA布局模式:GridBagConstraints终极技巧(2006-11-1421:07:33)最近正在修改《公交线路查询系统》,做系统的时候都是用NULL布局,由于NULL布局调用windows系统的API,所以生成的程序无法在其他平台上应用,而且如果控件的数量很多,管理起来也比较麻烦,最近我发现一个非常强大的布局模式:GridBagConstraints布局,先发一个实例:gridx…

    2022年9月9日
    3
  • java人力外包的流程总结

    java人力外包的流程总结互联网高科技的快速发展加快了企业信息化进程,而很多企业在信息化进程中需要大量的软件人才,特别是java人才,存在很大的缺口,对java人才需求旺盛的企业很难招聘到合格的java人员,加上为了控制java人力成本、灵活发展公司业务,会选择和专业的it人力外包公司合作,那么java人力外包的流程是怎样的呢?一般来说,java人力外包流程分为以下几步:1、用人单位提出用人需求;2、用人单位与it人力外包公司签订技术服务框架协议;3、it人力外包公司安排候选java人员到用人单位参加面试;4、面试通

    2022年5月19日
    106
  • 运维架构体系搭建系列-目录篇[通俗易懂]

    运维架构体系搭建系列-目录篇[通俗易懂]前言:去年新加入的一家公司,传统企业这里就不说名字了,不过公司规模还是有的,鄙人来之前基本上用的都是saas产品,加上疫情原因,没及时跳坑,做为一个半吊子自动化运维开发当然是选择先混日子,后面等来了一个新的技术团队,开始做自己的系统和产品。一、云选型及网络规划1、云产品选型2、网络规划二、devops相关服务搭建1、cicd工具链搭建2、项目管理三、db&中间件1、数据库管理2、中间件管理四、k8s环境及微服务治理1、k8s选型及搭建2、mse管理五、监控&日志

    2022年7月17日
    15
  • 【MySQL笔记】正确的理解MySQL的MVCC及实现原理

    【MySQL笔记】正确的理解MySQL的MVCC及实现原理MVCC多版本并发控制前提概要MVCC实现原理MVCC相关问题前提概要什么是MVCC?MVCCMVCC,全称Multi-VersionConcurrencyControl,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQLInnoDB中的实现主要是为了提高数据库并发性能…

    2022年4月30日
    54
  • 计算机用户名和密码怎么查_计算机名在哪看

    计算机用户名和密码怎么查_计算机名在哪看有时外人随意使用翻看办公电脑的问题,特别是当电脑里面存储了一些保密文件的时候,是不能随便让人看的,所以小设置电脑开机密码是有发要的。下面是学习小编给大家整理的有关介绍windowsxp电脑设置、修改开机密码的方法,希望对大家有帮助!windowsxp电脑设置、修改开机密码的方法首先,点击【开始】菜单,然后选择”控制面板“选项。在控制面板的对话框中找到”用户账户“选项,并点击进入。在用户账户对话…

    2022年10月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号