用python写一个贪吃蛇的程序能运行能用键盘控制

news2024/11/19 20:41:33

用python写一个贪吃蛇的程序能运行能用键盘控制

    • 1.源码
    • 2.运行效果

1.源码

开发库使用:pygame random
直接在终端运行:pip install pygame
pycharm安装库:文件-设置-项目-Python 解释器
在这里插入图片描述
在这里插入图片描述

import pygame
import random

# 初始化pygame
pygame.init()

# 设置窗口大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置标题
pygame.display.set_caption("Snake Game")

# 设置蛇的初始位置
snake_x = 350
snake_y = 350

# 设置蛇的速度
snake_speed = 20

# 设置蛇的身体
snake_body = [(snake_x, snake_y)]

# 设置食物的位置
food_x = random.randint(0, screen_width - 10)
food_y = random.randint(0, screen_height - 10)

# 设置字体
font = pygame.font.SysFont(None, 25)

# 设置游戏结束标志
game_over = False

# 游戏主循环
while not game_over:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                snake_y -= snake_speed
            elif event.key == pygame.K_DOWN:
                snake_y += snake_speed
            elif event.key == pygame.K_LEFT:
                snake_x -= snake_speed
            elif event.key == pygame.K_RIGHT:
                snake_x += snake_speed

    # 移动蛇的身体
    snake_body.insert(0, (snake_x, snake_y))

    # 检查蛇是否碰到墙壁
    if snake_x < 0 or snake_x >= screen_width - 10 or snake_y < 0 or snake_y >= screen_height - 10:
        game_over = True

    # 检查蛇是否碰到自己
    #if蛇身体中的任何两个点重叠:
     #   game_over = True

    # 检查蛇是否吃到食物
    if snake_x == food_x and snake_y == food_y:
        food_x = random.randint(0, screen_width - 10)
        food_y = random.randint(0, screen_height - 10)
        snake_body.append((food_x, food_y))

    # 绘制背景
    screen.fill((0, 0, 0))

    # 绘制蛇的身体
    for x, y in snake_body[1:]:
        pygame.draw.rect(screen, (0, 255, 0), (x, y, 10, 10))

    # 绘制食物
    pygame.draw.rect(screen, (255, 0, 0), (food_x, food_y, 10, 10))

    # 更新屏幕
    pygame.display.flip()

# 游戏结束
pygame.quit()

2.运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十九天 | 647. 回文子串、516.最长回文子序列

647. 回文子串 链接&#xff1a; 代码随想录 &#xff08;1&#xff09;代码 516.最长回文子序列 链接&#xff1a; 代码随想录 &#xff08;1&#xff09;代码

文件上传漏洞靶场前十关

pass1&#xff1a; 只能上传照片 用burp抓包改一下数据包试试&#xff1a; 上传成功 菜刀getshell Pass2&#xff1a; 寄 Png可以&#xff0c;抓包&#xff1a; 跟pass1一样阿 Pass3&#xff1a; 又寄 这里用抓包改数据包&#xff0c;发现仍然不可以 说明后端还有对文件名后缀…

springboot中@scheduled的使用

1.主要实现类ScheduledAnnotationBeanPostProcessor 在postProcessAfterInitialization(Object bean,String beanName)方法中找到所有bean中有注解为Scheduled的方法&#xff0c;组装成task,添加到调度线程池中 2.Task先按线程池接口类型TaskScheduler去容器中寻找taskSchedu…

freeipa server副本同步中断,两主节点数据不一致

/var/log/messages 和/var/log/dirsrv/slapd-testhadoop-COM 日志都出现以下日志: If replication stops, the consumer may need to be reinitialized. [27/Jun/2023:05:15:09.469361922 0800] - ERR - NSMMReplicationPlugin - changelog program - repl_plugin_name_cl - a…

【vue+nestjs】qq第三方授权登录【超详细】

项目场景&#xff1a; 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.代码演示 特别注意: 如果你跟我一样是前后端分离的模式开发的…

17、监测数据采集物联网应用开发步骤(12.2)

阶段性源码将于本章节末尾给出下载 监测数据采集物联网应用开发步骤(12.1) 新建web数据接口http-request解析类com.zxy.tcp.Request.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import urllib.parse,json from com.zxy.comm…

华为OD机试 - 根据某条件聚类最少交换次数 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

解决ubuntu系统运行pyside2或6的问题

解决ubuntu系统运行pyside2或6时出现的问题 当运行程序时&#xff0c;出现“qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “/usr/local/lib/python3.6/dist-packages/cv2/qt/plugins” even though it was found. This application failed to start bec…

全志R128软件配置——RTOS 软件包配置

RTOS 软件包配置 本文将介绍 RTOS 软件包、地址&#xff0c;内核配置等。 Kconfig 简介 有过 linux 内核开发经验的人&#xff0c;对 menuconfig 不会陌生。对于各类内核&#xff0c;只要是支持 menuconfig 配置界面&#xff0c;都是使用 Kconfig。 换言之&#xff1a; me…

c++_learning-c++标准库STL和boost库

c的标准库 STL标准库&#xff1a;#include<iostream>&#xff1a;#include<iomanip>&#xff1a;#include<cstdlib>&#xff1a;#include<cmath>&#xff1a;#include<tuple>&#xff1a;利用可变参数模板&#xff0c;借助“递归继承”或“递归组…

AD画板时,元器件跑到屏幕左下角,看不见啦,咋办?

解决办法&#xff1a; EDIT---------------->SELECT---------------->ALL 然后鼠标选中&#xff0c;整体移动----》OK

手机主流存储器件的分析与发展

一、前言 存储器件作为系统中存储数据的物理单元&#xff0c;承担着非常重要的责任&#xff0c;它的运行状态时刻影响着整个系统的运行效率&#xff0c;存储容量和数据安全。所以整个产业针对存储器件的寿命&#xff0c;稳定性&#xff0c;容量&#xff0c;性能以及价格等方面进…

紫光展锐携中国联通完成RedCap芯片V517孵化测试

近日&#xff0c;紫光展锐携手中国联通5G物联网OPENLAB开放实验室&#xff08;简称“OPENLAB实验室”&#xff09;共同完成RedCap芯片V517创新孵化&#xff0c;并实现在联通5G全频段3.5GHz、2.1GHz、900MHz下的端到端业务验证测试。 V517是一款基于紫光展锐5G成熟平台设计与研发…

电脑技巧:推荐八个实用的在线学习网站

目录 1、程序员英语词汇宝典 2、国图公开课 4、Maspeak 5、Visuwords 6、Learning Music 7、考试酷 8、好知网 今天给大家分享8个非常使用的学习网站&#xff0c;值得收藏&#xff01; 1、程序员英语词汇宝典 官网&#xff1a;https://learn-english.dev/ 程序员英语词…

【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

一.介绍 1.1 前置知识 1.1.1 in-context learning At the limit, GPT-3 (Brown et al, 2020) can be deployed using in-context learning, which is a form of prompting, without modifying any LM parameters. "部署" 指的是将 GPT-3 模型用于实际应用或特定任务…

项目添加以vue为后缀名的vue文件,怎么解析打包

我们都知道&#xff0c;将css文件打包起来&#xff0c;需要加载css-loader和style-loader&#xff0c;那么vue文件打包也需要 下载插件&#xff1a; npm install vue-loader vue-template-compiler --save -dev 下载过程&#xff1a; 下载成功样子&#xff1a; 下载完之后&am…

学信息系统项目管理师第4版系列33_信息化发展

1. 企业信息化发展战略要点 1.1. 【高22下选12】 1.2. 以信息化带动工业化 1.3. 信息化与企业业务全过程的融合、渗透 1.4. 信息产业发展与企业信息化良性互动 1.5. 充分发挥政府的引导作用 1.6. 高度重视信息安全 1.7. 企业信息化改组改造和形成现代企业制度有机结合 …

Leetcode 剑指 Offer II 049. 求根节点到叶节点数字之和

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个二叉树的根节点 root &#xff0c;树中每个节点都存放有…

基于孔雀优化的BP神经网络(分类应用) - 附代码

基于孔雀优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于孔雀优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.孔雀优化BP神经网络3.1 BP神经网络参数设置3.2 孔雀算法应用 4.测试结果&#xff1a;5.M…

基于SpringBoot的招生管理系统

基于SpringBoot的招生管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 基于SpringBoot的招生管理系统是一款现…