python 贪吃蛇

在这里插入图片描述

main.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import pygame  # 导入pygame模块from  setting import Setting
import  startmain as sm
from  pygame.sprite import  Groupdef InitGame():print("InitGame")pygame.init() #初始化pygameai_settings = Setting()#创建类实例screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))#元组填参pygame.display.set_caption("start")start = Group()moon = Group()sm.create_start(ai_settings, screen, start)sm.create_moon(ai_settings, screen, moon)while True:sm.check_events(ai_settings,screen,start,moon)sm.update_start(ai_settings,screen,start)sm.update_moon(ai_settings, screen, moon)sm.hit_fun(ai_settings, screen, start, moon)sm.update_screen(ai_settings,screen,start,moon)InitGame()

seeting.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import sys
import pygame  # 导入pygame模块
class Setting():# 存储该项目所有设置的类def __init__(self):# 初始化游戏的设置# 屏幕设置self.screen_width = 1024self.screen_height = 850self.bg_color = (123 ,198 ,241)self.start_width = 10self.start_height = 10self.start_num = 5self.start_color = 178, 34, 34self.start_speed_min = -20self.start_speed_max = 20self.moon_speed = 1

startmain.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import sys
import pygame  # 导入pygame模块
from start import Start
from moon import Moon
from time import sleep
import randomdef update_start(ai_settings, screen,start):#所有星星消失后 重新绘制星星if len(start) == 0:create_start(ai_settings, screen, start)# 更新星星位置# start.update()# sleep(1)def create_start(ai_settings, screen,start):for a in range(ai_settings.start_num):new_start = Start(ai_settings, screen)new_start.rect.x = random.randint(0, ai_settings.screen_width)new_start.rect.y = random.randint(0, ai_settings.screen_height)start.add(new_start)def check_keydown_events(event,ai_settings,screen,start,moon):if event.key == pygame.K_RIGHT:for m in moon.copy():m.moving_right = Trueelif event.key == pygame.K_LEFT:for m in moon.copy():m.moving_left = Trueelif event.key == pygame.K_UP:for m in moon.copy():m.moving_up = Trueelif event.key == pygame.K_DOWN:for m in moon.copy():m.moving_down = Truedef check_keyup_events(event, ai_settings, screen, start, moon):if event.key == pygame.K_RIGHT:for m in moon.copy():m.moving_right = Falseelif event.key == pygame.K_LEFT:for m in moon.copy():m.moving_left = Falseelif event.key == pygame.K_UP:for m in moon.copy():m.moving_up = Falseelif event.key == pygame.K_DOWN:for m in moon.copy():m.moving_down = Falsedef check_events(ai_settings,screen,start,moon):for event in pygame.event.get():if event.type == pygame.QUIT:  # 玩家单击游戏窗口关闭按钮时检测到sys.exit()elif event.type == pygame.KEYDOWN:#按下按键if event.key == pygame.K_1:# 处理左键按下事件print("1 key pressed")sys.exit()else:# print(" key pressed")check_keydown_events(event,ai_settings,screen,start,moon)elif event.type == pygame.KEYUP:#释放按键check_keyup_events(event, ai_settings, screen, start, moon)def create_moon(ai_settings, screen,moon):m = Moon(ai_settings,screen)m.rect.x = random.randint(0, ai_settings.screen_width)m.rect.y = random.randint(0, ai_settings.screen_height)moon.add(m)
def update_moon(ai_settings, screen,moon1):moon1.update()def hit_fun(ai_settings, screen,start,moon):# 两个组相撞 是否消失collisions = pygame.sprite.groupcollide(start, moon, True, False)def update_screen(ai_settings, screen,start,moon):screen.fill(ai_settings.bg_color)for start in start.sprites():start.start_draw()#自己绘制图形的绘制方式moon.draw(screen)#图片的绘制方式pygame.display.flip()

start.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import sys
import pygame  # 导入pygame模块
from start import Start
from moon import Moon
from time import sleep
import randomdef update_start(ai_settings, screen,start):#所有星星消失后 重新绘制星星if len(start) == 0:create_start(ai_settings, screen, start)# 更新星星位置# start.update()# sleep(1)def create_start(ai_settings, screen,start):for a in range(ai_settings.start_num):new_start = Start(ai_settings, screen)new_start.rect.x = random.randint(0, ai_settings.screen_width)new_start.rect.y = random.randint(0, ai_settings.screen_height)start.add(new_start)def check_keydown_events(event,ai_settings,screen,start,moon):if event.key == pygame.K_RIGHT:for m in moon.copy():m.moving_right = Trueelif event.key == pygame.K_LEFT:for m in moon.copy():m.moving_left = Trueelif event.key == pygame.K_UP:for m in moon.copy():m.moving_up = Trueelif event.key == pygame.K_DOWN:for m in moon.copy():m.moving_down = Truedef check_keyup_events(event, ai_settings, screen, start, moon):if event.key == pygame.K_RIGHT:for m in moon.copy():m.moving_right = Falseelif event.key == pygame.K_LEFT:for m in moon.copy():m.moving_left = Falseelif event.key == pygame.K_UP:for m in moon.copy():m.moving_up = Falseelif event.key == pygame.K_DOWN:for m in moon.copy():m.moving_down = Falsedef check_events(ai_settings,screen,start,moon):for event in pygame.event.get():if event.type == pygame.QUIT:  # 玩家单击游戏窗口关闭按钮时检测到sys.exit()elif event.type == pygame.KEYDOWN:#按下按键if event.key == pygame.K_1:# 处理左键按下事件print("1 key pressed")sys.exit()else:# print(" key pressed")check_keydown_events(event,ai_settings,screen,start,moon)elif event.type == pygame.KEYUP:#释放按键check_keyup_events(event, ai_settings, screen, start, moon)def create_moon(ai_settings, screen,moon):m = Moon(ai_settings,screen)m.rect.x = random.randint(0, ai_settings.screen_width)m.rect.y = random.randint(0, ai_settings.screen_height)moon.add(m)
def update_moon(ai_settings, screen,moon1):moon1.update()def hit_fun(ai_settings, screen,start,moon):# 两个组相撞 是否消失collisions = pygame.sprite.groupcollide(start, moon, True, False)def update_screen(ai_settings, screen,start,moon):screen.fill(ai_settings.bg_color)for start in start.sprites():start.start_draw()#自己绘制图形的绘制方式moon.draw(screen)#图片的绘制方式pygame.display.flip()

moon.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import sys
import pygame  # 导入pygame模块
from pygame.sprite import Sprite
class Moon(Sprite):def __init__(self, ai_settings, screen):super(Moon, self).__init__()self.screen = screenself.ai_settings = ai_settingsself.image = pygame.image.load('./img/moon2.png')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()# 放在屏幕底部中央self.rect.centerx = self.screen_rect.centerxself.rect.centery = self.screen_rect.centeryself.centerx = float(self.rect.centerx)self.centery = float(self.rect.centery)# 移动标志self.moving_right = Falseself.moving_left = Falseself.moving_up = Falseself.moving_down = Falsedef update(self):if self.moving_right and self.rect.right < self.screen_rect.right:  # 标志为True时向右移动self.centerx += self.ai_settings.moon_speedif self.moving_left and self.rect.left > 0:  # 标志为True时向左移动self.centerx -= self.ai_settings.moon_speedif self.moving_up and self.rect.top > 0:  # 标志为True时向右移动self.centery -= self.ai_settings.moon_speedif self.moving_down and self.rect.bottom <self.screen_rect.bottom:  # 标志为True时向左移动self.centery += self.ai_settings.moon_speed# 根据self.center更新rect对象self.rect.centerx = self.centerxself.rect.centery = self.centery

图片

在这里插入图片描述
这里自取更好
https://www.iconfont.cn/

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

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

相关文章

【图轮】【 最小生成树】【 并集查找】1489. 找到最小生成树里的关键边和伪关键边

本文涉及知识点 图轮 最小生成树 并集查找 关键边 1489. 找到最小生成树里的关键边和伪关键边 给你一个 n 个点的带权无向连通图&#xff0c;节点编号为 0 到 n-1 &#xff0c;同时还有一个数组 edges &#xff0c;其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 to…

书生·浦语全链路开源开放体系 第二期

文章目录 大模型背景大模型开发流程InternLM 2.0SFT与RLHFInternLM2主要亮点 书生浦语全链路开源开放体系数据-书生万卷InternLM-Train微调 XTuner评测工具 OpenCompass部署 LMDeploy智能体 Lagent智能体工具箱 AgentLego 大模型背景 专用模型&#xff1a;针对特定的任务&…

【Web】NSSCTF Round#20 Basic 个人wp

目录 前言 真亦假&#xff0c;假亦真 CSDN_To_PDF V1.2 前言 感谢17&#x1f474;没让我爆零 真亦假&#xff0c;假亦真 直接getshell不行&#xff0c;那就一波信息搜集呗&#xff0c;先开dirsearch扫一下 扫的过程中先试试常规的robots.txt,www.zip,shell.phps,.git,.sv…

使用Docker Compose一键部署前后端分离项目(图文保姆级教程)

一、安装Docker和docker Compose 1.Docker安装 //下载containerd.io包 yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm //安装依赖项 yum install -y yum-utils device-mapper-persistent-data l…

求整数各个数位上的数字之和 C语言

对于任意输入的整数&#xff0c;计算其各个数位上的数字之和。 输入格式 输入一个正整数 N。 输出格式 输出 N 的各个位上的数字之和。 数据范围 1 < N < 2^31 #include <stdio.h> #include <stdlib.h> int shu(int x){ int sum0; while(x>0)…

百度云加速方法「Cheat Engine」

加速网盘下载 相信经常玩游戏的小伙伴都知道「Cheat Engine」这款游戏内存修改器&#xff0c;它除了能对游戏进行内存扫描、调试、反汇编 之外&#xff0c;还能像变速齿轮那样进行本地加速。 这款专注游戏的修改器&#xff0c;被大神发现竟然还能加速百度网盘资源下载&#xf…

c++前言

目录 1. 什么是 C 2. C 发展史 3. C 的重要性 4. 如何学习 C 5. 关于本门课程 1. 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的 程序&#xff0c;需要高度的抽象和建模时&#xff0c; C 语言则不合适…

【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类​​​​​​​名称)

这篇文章,主要介绍如何使用JavaParser解析Java源代码中的类信息(javadoc注释、类名称)。 目录 一、JavaParser依赖库 1.1、引入依赖 1.2、获取类注释信息

【Python进阶(一)】——异常与错误

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

python | 输出n位数的各位位数

xinput(请输入一位n位数:)print(*map(int,x)) 在Python中&#xff0c;input() 函数接收用户的输入并返回一个字符串。当你执行 x input(请输入一位n位数:) 时&#xff0c;x 将包含用户输入的字符序列。 接下来&#xff0c;map(int, x) 会对字符串 x 中的每一个字符应用 int 函…

【uC/OS-III篇】uC/OS-III 移植到 STM32 简明教程

uC/OS-III 移植到 STM32 简明教程 一、uC/OS-III 介绍 二、获取UCOS-III源码 三、建立项目工程 四、解决工程编译报错 五、修改项目文件 下一篇博客&#xff1a; 【uC/OS-III篇】uC/OS-III 创建第一个任务&#xff08;For STM32&#xff09; 移植后的工程自取方式&#xf…

玩转Django分页器

一、Pagination 分页器编程步骤 View, 导入django.core.paginator.Paginator类&#xff0c;创建Paginator 对象时&#xff0c;输入qs对象&#xff0c;以及每页显示条数。 接收 URL, 从请求参数中读取page数值 &#xff0c;通过 paginator.page(page_num) 返回请求页的page_obj…

从 PG 技术峰会南京站汲取的那些干货

3月30日下午&#xff0c;“PostgreSQL 数据库技术峰会”南京站圆满举办。 这场峰会同步在线上直播&#xff0c;近 2000 人在线观看。 感谢各位大佬带来精彩演讲。 1. 可观测性 第一场正式演讲是白鳝前辈带来的《PostgreSQL 数据库的可观测性能力》。 数据库的可观测性的重要性不…

Mysql数据库:MHA高可用架构

目录 前言 一、MHA概述 1、什么是MHA 2、MHA的特点 3、MHA的组成 4、MHA的工作原理 5、故障切换备选主库的算法 二、部署MHA高可用架构 1、环境部署 2、部署主从同步 2.1 修改主配置文件并创建软链接 2.1.1 master 修改主配置文件并创建软连接 2.1.2 slave1 修改主…

os模块篇(四)

专栏目录 文章目录 专栏目录os.setregid(rgid, egid, /)os.setreuid(ruid, euid, /)os.getsid(pid, /)os.setsid()os.setuid(uid, /)os.strerror(code, /)os.umask(mask, /)os.uname()os.unsetenv(key, /)os.unshare(flags) os.setregid(rgid, egid, /) os.setregid(rgid, egi…

算法学习——LeetCode力扣补充篇5 (52. N 皇后 II、649. Dota2 参议院、1221. 分割平衡字符串、5. 最长回文子串)

算法学习——LeetCode力扣补充篇5 52. N 皇后 II 52. N 皇后 II - 力扣&#xff08;LeetCode&#xff09; 描述 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的…

免费!微软推出全球第一个生成式AI认证

微软在官网宣布一项新的人工智能计划&#xff0c;包括与 LinkedIn联合推出免费的生成式AI课程和专业认证证书&#xff1b;微软与数据平台data.org、开源社区GitHub 等合作&#xff0c;发一起全球生成式AI挑战赛&#xff0c;为参赛的组织提供资金、技术、培训等帮助。 用户学习…

视觉SLAM理论与实践的学习链接汇总

仅供学习&#xff0c;在此感谢所有乐于分享知识的大佬们~ 一、 ORB_SLAM理论 视觉SLAM 前端 后端 回环 建图 1、 前端视觉里程计 1.1 特征点法 一文带你搞懂相机内参外参(Intrinsics & Extrinsics)-知乎 VSLAM 笔记——我们如何通过图像来计算位姿的变化&#xff…

文生图大模型三部曲:DDPM、LDM、SD 详细讲解!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有&#xff1a; 文生图大模型&#xff1a;如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型&#xff1a;如CLIP、Chinese CLIP、…

力扣刷题Days28-第二题-11.盛水最多的容器(js)

目录 1&#xff0c;题目 2&#xff0c;代码 3&#xff0c;学习与总结 3.1思路回顾 1&#xff0c;如何遍历 2&#xff0c;算法流程 3.2剖析问题 1&#xff0c;题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, h…