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

用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 = Trueelif event.type == pygame.KEYDOWN:if event.key == pygame.K_UP:snake_y -= snake_speedelif event.key == pygame.K_DOWN:snake_y += snake_speedelif event.key == pygame.K_LEFT:snake_x -= snake_speedelif 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.mzph.cn/news/112800.shtml

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

相关文章

Date3

语法 Date3(year, month, day) 描述 The Date3 function accepts a date expressed as three integers: year, month, and day. It returns a corresponding Date value. If the date is invalid, the Date3 displays an error message. Warning! Make sure that you pass a…

牛客小白月赛79 D

题意&#xff1a; 给定数 x &#xff0c;每次可以选择将 x 变为 x*2 &#xff0c;或是将 x 变为 x1&#xff0c;求 x 变为 2 20 2^{20} 220倍数的最小代价。 思路&#xff1a; 因为对于 2 20 2^{20} 220次方倍数的点无意义&#xff0c;所以总共的点数只用 2 20 2^{20} 220即…

2023年中国轮胎模具需求量、竞争格局及行业市场规模分析[图]

轮胎模具是轮胎生产线中的硫化成形装备&#xff0c;是高技术含量、高精度及高附加值的个性化模具产品&#xff0c;尤其是轮胎的花纹、图案、字体以及其他外观特征的成形都依赖于轮胎模具&#xff0c;因此其制造技术难度较高。其主要功能是通过所成型材料&#xff08;主要是橡塑…

最优化:建模、算法与理论(最优性理论2

5.7 约束优化最优性理论应用实例 5.7.1 仿射空间的投影问题 考虑优化问题 min ⁡ x ∈ R n 1 2 ∣ ∣ x − y ∣ ∣ 2 2 , s . t . A x b \min_{x{\in}R^n}\frac{1}{2}||x-y||_2^2,\\ s.t.{\quad}Axb x∈Rnmin​21​∣∣x−y∣∣22​,s.t.Axb 其中 A ∈ R m n , b ∈ R m …

2024免费的苹果电脑杀毒软件cleanmymac X

苹果电脑怎么杀毒&#xff1f;这个问题自从苹果电脑变得越来越普及&#xff0c;苹果电脑的安全性问题也逐渐成为我们关注的焦点。虽然苹果电脑的安全性相对较高&#xff0c;但仍然存在着一些潜在的威胁&#xff0c;比如流氓软件窥探隐私和恶意软件等。那么&#xff0c;苹果电脑…

uniapp下载附件保存到手机(文件、图片)ios兼容

downloadFile(file)&#xff0c;其中file为下载的文件地址uni.downloadFile图片使用uni.saveImageToPhotosAlbum【安卓、ios都合适】文件使用uni.openDocument【安卓图片也可以用这个&#xff0c;ios会失败】 // 下载文件 export function downloadFile(file) {let acceptArr …

【LeetCode:2316. 统计无向图中无法互相到达点对数 | BFS + 乘法原理】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

大模型LLM相关面试题整理-PEFT

Prefix/Prompt-Tuning&#xff1a;在模型的输入或隐层添加 个额外可训练的前缀 tokens&#xff08;这些前缀是连续的伪 tokens&#xff0c;不对应真实的 tokens&#xff09;&#xff0c;只训练这些前缀参数&#xff1b; Adapter-Tuning&#xff1a;将较小的神经网络层或模块插入…

面试题 01.04. 回文排列

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;面试题 01.04. 回文排列 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 对字符串中各字符计数&#xff0c;若个数为奇数的字符个数大于 1&#xff0c;则不是回文排列&#xff0c;否则是。 …

uniapp 小程序优惠劵样式

先看效果图 上代码 <view class"coupon"><view class"tickets" v-for"(item,index) in 10" :key"item"><view class"l-tickets"><view class"name">10元优惠劵</view><view cl…

c++ 常见类内的关键字

1. override override 是一个关键字&#xff0c;用于显式地标记派生类中重写&#xff08;覆盖&#xff09;基类虚函数的意图。 override 并不会影响程序的执行结果&#xff0c;仅仅是作用于编译阶段&#xff0c;用于检查子类是否真的重写父类函数 作用&#xff1a; 帮助发现错…

基于Java的图书商城管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Hive用户中文使用手册系列(一)

Apache Hive 在标题为“Information Platforms and the Rise of the Data Scientist”的文章一文中&#xff0c;Jeff Hammerbacher把“信息平台”描述为“企业摄取(ingest)、处理(process)、生成(generate)信息的行为”与“帮助加速从经验数据中学习”的“中心”。 在Facebook…

Linux之I2C应用编程

I2C-Tools的交叉编译 tar xvf i2c-tools-4.2.tar.xz 首先解压下压缩包 cd i2c-tools-4.2 进入 i2c-tools-4.2目录 make USE_STATIC_LIB1 执行 make 将i2cset ,i2cget ,i2cdump,i2cdetect,i2ctransfer放到板子上 命令直接操作IIC设备 命令行直接操作iic向AP3216C传感器获取数据…

即时通讯或者推送消息的守护进程?开启几个进程?

进程根据状态可以分为三种进程&#xff0c;守护进程&#xff0c;僵尸进程&#xff0c;孤儿进程。今天我们着重来分析下守护进程。 1.daemon? &#xff08;1&#xff09;概念 守护进程 (daemon) 是一类在后台运行的特殊进程&#xff0c;用于执行特定的系统任务。很多守护进程…

初出茅庐的小李博客之Windows11运行Linux记录

安装教程 超简单&#xff0c;不安装虚拟机&#xff0c;Windows11运行Linuxhttps://zhuanlan.zhihu.com/p/393484912 注意事项 出现错误有可能是少了驱动 驱动下载地址 https://link.zhihu.com/?targethttps%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_updat…

Django和jQuery,实现Ajax表格数据分页展示

1.需求描述 当存在重新请求接口才能返回数据的功能时&#xff0c;若页面的内容很长&#xff0c;每次点击一个功能&#xff0c;页面又回到了顶部&#xff0c;对于用户的体验感不太友好&#xff0c;我们希望当用户点击这类的功能时&#xff0c;能直接加载到数据&#xff0c;请求…

牛客网---活动运营刷题笔记

## 第一次 1.以下哪个活动玩法&#xff0c;不是为了给APP带来新增用户&#xff1f; A打折促销 B用户认证 C裂变活动 D有奖下载 正确答案&#xff1a;B 官方解析&#xff1a;本题主要考查活动拉新的方式 打折促销&#xff0c;即通过降低商品价格&#xff0c;促进商品销售&#…

安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…

【算法训练-回溯算法 零】回溯算法解题框架

抽象地说&#xff0c;解决一个回溯问题&#xff0c;实际上就是遍历一棵决策树的过程&#xff0c;树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍&#xff0c;把叶子节点上的答案都收集起来&#xff0c;就能得到所有的合法答案。站在回溯树的一个节点上&#xff0c;你…