【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?

news2024/9/20 18:52:17

导语

Hello,大家好呀!我是木木子吖~

一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。

听说关注我的人会一夜暴富发大财哦~

(哇哇哇 这真的爱😍😍)

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

之前也给大家写过几款蛇蛇大作战,也就是类似手机游戏的贪吃蛇游戏,大家还记得嘛❗❗

不记得也没关系等下给大家拉出来回忆一下啦~(*^▽^*)💨

项目2.7 贪吃蛇小游戏

Pygame实战:用 Python 写个贪吃蛇大冒险,保姆级教程。

项目6.1 《贪吃蛇大作战》系列一

【Pygame小游戏】刷爆朋友圈的《贪吃蛇大作战》附上史上最强攻略,请查收~(附:源码合集)

项目6.2 《AI贪吃蛇》系列二

超魔性的国民游戏,贪吃蛇大作战,老板出4000元现金悬赏谁是贪吃蛇之神:这不是我嘛?

项目6.9 《贪吃蛇大作战》系列三

【全是套路】这才是贪吃蛇大作战最有趣的版本,你确定不看?

病毒版贪吃蛇进化论——

今天给大家制作的游戏蛇蛇进行了进化——操作其实就和之前写的游戏差不多了,都是去操控

一个物体去吞噬,迅速让自己变得强大避免撞到自己挂掉。

玩家出生之后是一条很小的蛇(小方块),通过吃地图上的很多(点点)病毒来使自己变大。

这里的游戏规则并不是大蛇吃小蛇,而是谁撞自己就GG啦。

玩过贪吃蛇的不会陌生,在这款病毒版蛇蛇大作战中不管玩家有多大,只要是碰到自己,自己

就会死亡哦~

写此游戏就是提醒大家:当前疫情防控工作形势依然严峻复杂,大家要以最坚决的态度,不要

放松,全力做好疫情防控的工作哦~

正文

据说这游戏有毒(病毒般蛇蛇大作战已上线)同事们都玩到欲罢不能,连宝贵的午睡时间都奉

献给它了,你们还不信,哪来试试试究竟吧,没想到 这个坑掉下去根本爬不出来!一!秒!

爱!上!哦!

一、环境安装

小编使用的环境:Python3、Pycharm社区版、pygame模块,部分自带的就不一一 展示啦。

 模块安装:pip install -i https://pypi.douban.com/simple/+模块名 

二、代码实战

1)病毒类,随机分布在屏幕一个位置

import pygame
from random import randint
class Virus():

	def __init__(self,screen,settings):
		self.screen=screen
		self.settings=settings
		#加载病毒图像并获取外接矩形,病毒的图片放在images文件夹下
		self.image=pygame.image.load('images/virus.png')
		#病毒的图片太大,这里将病毒的图片缩小
		self.image=pygame.transform.scale(self.image,(settings.virus_width,settings.virus_height))
		self.rect=self.image.get_rect()
		self.screen_rect=screen.get_rect()
		#将病毒放在屏幕任意一个位置
		self.update()

	def update(self):
		#将病毒放在屏幕任意一个位置
		#创建两个随机数,随机数在0到屏幕的长宽之间,确保病毒的位置在屏幕内
		self.randx=randint(0,self.settings.screen_width)
		self.randy=randint(0,self.settings.screen_height)
		self.rect.centerx=self.randx
		self.rect.centery=self.randy

	def blitme(self):
		'''在指定位置绘制病毒'''
		self.screen.blit(self.image,self.rect)

2)按键类,当玩家点开按钮时开始游戏

import pygame

class Button():
	def __init__(self,screen):
		self.screen=screen
		#设置按钮的属性和尺寸
		self.width,self.height=200,50
		self.button_color=(73,132,213)
		self.text_color=(255,255,255)
		#开始按钮上面的文字所用的字体放在fonts文件夹下
		self.font=pygame.font.Font('fonts/FZLTCXHJW.TTF',48)
		#创建按钮的rect对象,并使其居中
		self.rect=pygame.Rect(0,0,self.width,self.height)
		self.rect.center=self.screen.get_rect().center
		#将文字渲染成图像,并使其在按钮上居中
		self.msg_image=self.font.render('愿疫情早日结束',True,self.text_color,self.button_color)
		self.msg_image_rect=self.msg_image.get_rect()
		self.msg_image_rect.center=self.rect.center

	def draw_button(self):
		'''将按钮画在屏幕上'''
		self.screen.fill(self.button_color,self.rect)
		self.screen.blit(self.msg_image,self.msg_im

3)保存游戏过程中的一些统计信息

class GameStats():
	def __init__(self,settings):
		self.settings=settings
		#游戏活动的标志,开始时设置成否,要求玩家在点开开始键时才开始游戏
		self.active_flag=False
		#这里把增加速度的变量引用到游戏统计信息是为了在重新开始游戏后,可以清空设置
		#尽量不改变settings里的值,从打开到结束settings里保存的值都尽量不变
		#在重新开始游戏时,只改变统计信息里面的值
		self.reset_stats()

	def read_high_score(self):
		'''读取游戏的最高分'''
		#用一个with保证打开文件后会自动关闭,用一个try是保证如果读取错误,没有该文件时返回最高分0		
		try:
			with open('score.txt','r') as rs:
				score_str=rs.read()
				return(int(score_str))
		except:
			return 0

	def write_high_score(self,high_score):
		'''将最高分写进文件'''
		with open('score.txt','w') as ws:
			ws.write(str(high_score))

	def reset_stats(self):
		'''在游戏重新开始时,重置统计信息'''
		self.increase_speed=self.settings.snake_increase_speed
		#重新开始游戏时,要重新读取最高分
		self.high_score=self.read_high_score()

4)运行主程序

import pygame
import sys
from settings import Settings
from snake import Snake
import game_function as gf
from virus import Virus
from pygame.sprite import Group
from game_stats import GameStats
from button import Button
from score_board import ScoreBoard

def run_game():
	'''贪吃蛇游戏主体'''
	pygame.init()
	#创建设置类对象
	settings=Settings()
	#设置游戏画面的长宽和背景颜色以及标题
	screen=pygame.display.set_mode((settings.screen_width,settings.screen_height))
	screen.fill(settings.screen_bg_color)
	pygame.display.set_caption("病毒版蛇蛇大作战")
	#创建贪吃蛇对象,并将该对象加入到编组中
	snakes=Group()
	snake=Snake(settings,screen,snakes)
	#创建病毒对象
	virus=Virus(screen,settings)
	#调整速度
	move_clock=pygame.time.Clock()
	#创建一个统计游戏信息的对象
	game_stats=GameStats(settings)
	#创建一个按钮的对象
	button=Button(screen)
	#创建一个记分板对象
	score_board=ScoreBoard(settings,screen,snakes,game_stats)

	#游戏主循环
	while True:
		#检测事件:退出
		gf.check_events(snakes,settings,button,game_stats)
		#检测事件是整个游戏进程中都要进行的,而下面的代码是在点了开始键后才进行
		if game_stats.active_flag:
			#更新贪吃蛇的位置
			snakes.update()
			#检测贪吃蛇和病毒的碰撞
			gf.check_snakes_virus(virus,snakes,settings,screen,game_stats,score_board)
			#检测贪吃蛇到达画面边界时做出的反应
			gf.check_snakes_border(snakes,settings)
			#检测贪吃蛇的死亡条件
			snake=gf.check_die(snake,snakes,game_stats,virus,settings,screen,score_board)
		#更新画面
		gf.draw_screen(screen,settings,snakes,virus,move_clock,game_stats,button,score_board)

run_game()

三、效果实现

1)游戏界面

​2)初始化

3)随机截图

总结

嘿嘿,还有很多隐藏的东西哦~就不给大家透底啦,留给你们自己探索~

这款游戏主要是超级锻 炼反应能力哦,百分往上速度更快,当然分数也越高,还有透墙穿梭功

能等等,安啦,如果有心动的话,赶紧找我拿来代码试试玩叭~

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目1.0  超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

项目1.2   魂斗罗

Pygame实战:多年后“魂斗罗”像素风归来 不止是经典与情怀@全体成员

项目1.4  水果忍者

【Pygame实战】风靡全球的切水果游戏升级版“水果忍者”上线啦,你敢来PK嘛?

🎄文章汇总——

汇总合集  Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)

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

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

相关文章

Android中JVM七大垃圾收集器【解析】

概述 GC垃圾收集器的种类 新生代:年轻代用来存放最近创建的对象老年代:主要存放应用程序中生命周期长的内存对象永久代:内存的永久保存区域(类和元数据),GC不参与回收Serial收集器:串行收集器…

web网页设计—— 中国餐饮协会(HTML+CSS)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

CentOS8使用阿里云yum源异常问题及解决方法

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站 Linux安装git时发生如下错误 [rootraoyuuuu maven]# dnf install git Repository extras is listed more than once in the configuration Repository epel is listed more than once in the configuration CentOS-8 - B…

关于windows的文件监控管理系统(Java)

目 录 摘 要 I Abstract II 1.绪论 1 1.1课题背景 1 1.2系统开发的目的和意义 2 1.3国内外概况 3 1.4研究主要内容 3 2.windows文件监控管理系统相关技术介绍 4 2.1 API 4 2.2 API HOOK 5 2.3 Java 5 2.4 DLL 6 2.4 Windows系统的Socket编程 6 2.4.1使用WinSock API 6 2.4.2 使…

【 C++ 】IO流

目录 1、C语言的输入输出 2、流是什么 3、CIO流 3.1、C标准IO流 3.2、C文件IO流 文件操作步骤 以二进制的形式操作文件 以文本的形式操作文件 4、stringstream的介绍 1、C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a…

[前端基础] JavaScript 基础篇(下)

DOM 和 BOM DOM 指的是文档对象模型,它指的是把文档当做一个对象来对待,这个对象主要定义了处理网页内容的方法和接口。BOM 指的是浏览器对象模型,它指的是把浏览器当做一个对象来对待,这个对象主要定义了与浏览器进行交互的法和…

Node核心模块之Stream

Node.js诞生之初就是为了提高IO性能,文件操作系统和网络模块实现了流接口,Node.js中流就是处理流式数据的抽象接口。 那么应用程序为什么使用流来处理数据? 常见问题 同步读取资源文件,用户需要等待数据读取完成资源文件最终一次…

【Windows】windows10时间显示秒数

一般情况下windows10的电脑时间只显示小时和分钟,但是有的用户想要时间显示更加精细,那么windows10时间怎么显示秒呢?大家可以通过修改注册表的方式进行设置:打开注册表编辑器,定位到Advanced,右键新建DWOR…

【第十四篇】Camunda系列-多人会签【多实例】

多人会签 Multiple Instance 也叫多实例任务。 1.会签说明 多实例活动是为业务流程中的某个步骤定义重复的一种方式。在编程概念中,多实例与 for each 结构相匹配:它允许对给定集合中的每个项目按顺序或并行地执行某个步骤或甚至一个完整的子流程。 多实例是一个有额外属性…

注解(Annotation)

注解 注解也被称为元数据(MateDate),用于修饰或解释包,类,方法,属性,构造器,局部变量等数据信息和注释一样,注解不会影响程序逻辑,但是注解可以被编译或者运行&#xff…

如何定义需求优先级?

本文将围绕以下问题展开:1、什么是需求优先级排序,目的是什么?2、优先级排序的8大依据;3、需求优先级排序面临的挑战;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序,目的是什么?…

Mybatis-plus 用法

本文主要介绍 mybatis-plus 这款插件,针对 springboot 用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。 关于 mybatis-plus 是什么,不多做介绍了,看…

大一作业HTML网页作业:简单的旅游 1页 (旅游主题)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&…

94-98-Hadoop-MapReduce工作流程(重要)

Hadoop-MapReduce工作流程(重要): 上面的流程是整个 MapReduce 最全工作流程,但是 Shuffle 过程只是从第 7 步开始到第 16 步结束,具体 Shuffle 过程详解,如下: (1)Map…

Java 动态判断数组维数并取值

一、背景 技术交流群里有同学提了一个看似基础但挺有意思的问题。 问题描述: 一个对象是一个未知的数组类型,可能是 short 二维数组,可能是 int 的三维数组等。 诉求: 想要遍历修改(获取)它的值不想写太多…

springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用

目录 介绍 开搞 先logback.xml相关的 pom.xml application.yml 配置 启动配置 类中编写 引入 Slf4j logback.xml 重点介绍 logback项目名称 最大保存时间 365天 lOGGER PATTERN 根据个人喜好选择匹配 控制台输出 滚动文件 过滤器 可以选择自己要的日志级别 不选…

【机器学习数据集制作】视频转图片(代码注释,思路推导)

目录数据集效果资源下载实现思路代码实战总结『机器学习』分享机器学习0基础的数据集制作过程。 欢迎关注 『机器学习』 系列,持续更新中 欢迎关注 『机器学习』 系列,持续更新中 数据集效果 资源下载 拿来即用,所见即所得。 项目仓库&#…

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件 有没有办法从另一个VI或可执行文件访问正在运行的LabVIEW可执行文件。例如,从显示控件获取值,为控件设置值,以及初始化运行LabVIEW可执行文件VI的前面板。 在正在运行的可执行文…

IOS逆向初探

前言 这些文章用于记录学习路上的点点滴滴,也希望能给到刚入门的小伙伴们一点帮助。爱而所向,不负所心。 环境 iphone 6 MacOS Monterey 12.3.1 一、IOS开发语言 Objective-C Objective-C是iOS操作系统运用的软件开发语言。Objective-C的流行完全是因…

免费下载word简历模板的网站

我这里分享了6个免费简历网站,分享给各位。 1.OfficePlus 微软官方出品的 office 免费模板网站https://www.officeplus.cn/ 2.简历设计网 2000Word模板免费下载,每个用于每天可下载10篇免费模板。https://www.jianlisheji.com/ 3.办公资源…