Python-Pygame实践:《杀死冠状病毒》

2023-10-27

          2020年春节前后,冠状病毒爆发,遂编写这个游戏,希望武汉人民加油,中国人民加油,杀死病毒,获得胜利。
          游戏的内容参考的是Eric Matthes的《Python编程从入门到实践》中的项目1外星人入侵,稍作修改。

以下是书中对该游戏的描述:

        “在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。”

  • alien_invation.py
  • alien.py
  • bullet.py
  • button.py
  • game_functions.py
  • game_stats.py
  • scoreboard.py
  • settings.py
  • ship.py
  • images

下图是整个游戏的文件分布:

             

        下述代码是alien_invation.py,是整个游戏的主代码。“主文件alien_invasion.py创建一系列整个游戏都要用到的对象,它还包含游戏的主循环,要玩《外星人入侵》,只需运行该文件,其它文件包含的代码被直接或间接地导入到这个文件中。”

import pygame
from settings import Settings 
from ship import Ship
import game_functions as gf 
from pygame.sprite import Group
from alien import Alien
from game_stats import GameStats
from button import Button
from scoreboard import ScoreBoard

def run_game():
	"""初始化游戏并创建一个屏幕对象"""
	#1、初始化
	#2、设置窗口尺寸
	#3、设置窗口标题
	#4、获得键盘和鼠标事件
	#5、设置退出条件
	#6、展示窗口

	pygame.init()
	ai_settings=Settings()#初始化设置对象
	screen=pygame.display.set_mode(
		(ai_settings.screen_width,ai_settings.screen_height))
	pygame.display.set_caption("杀死冠状病毒")#标题文字
	#创建一个用于存储游戏统计信息的实例
	stats=GameStats(ai_settings)
	ship=Ship(screen,ai_settings)
	bullets=Group()
	aliens=Group()
	button=Button(screen,'武汉加油!')
	gf.create_fleet(screen,ai_settings,aliens,ship)
	sb=ScoreBoard(stats,ai_settings,screen)

	#开始游戏的主循环
	while True:
		#监视键盘和鼠标事件
		gf.check_events(ship,ai_settings,screen,bullets,button,stats,aliens,sb)
		if stats.game_active:
			#让最近绘制的屏幕可见
			ship.update()
			gf.update_bullets(bullets,aliens,screen,ai_settings,ship,stats,sb)
			gf.update_aliens(aliens,screen,ai_settings,ship,stats,bullets,sb)
		gf.update_screen(screen,ship,ai_settings,bullets,aliens,button,stats,sb)

run_game()

以下代码是alien.py,每个外星人的行为都由Alien类控制。 

import pygame
from pygame.sprite import Sprite

class Alien(Sprite):
	'''表示单个外星人的类'''
	def __init__(self,screen,ai_settings):
		'''初始化外星人并设置其初始位置'''
		super().__init__()
		self.ai_settings=ai_settings
		self.screen=screen
		#加载外星人图像,并设置其rect属性
		self.image=pygame.image.load('images/alien.png')
		self.rect=self.image.get_rect()
		#每个外星人最初都在屏幕左上角附近
		self.image=pygame.transform.scale(self.image,(int(self.rect.width/4),int(self.rect.height/4)))
		self.rect=self.image.get_rect()
		self.rect.x=self.rect.width
		self.rect.y=self.rect.height

	def blitme(self):
		'''在指定位置绘制外星人'''
		self.screen.blit(s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-Pygame实践:《杀死冠状病毒》 的相关文章

随机推荐

  • 入站规则和出站规则_关于防火墙入站(inbound)出站(outbound)方式的解释

    防火墙是一个重要的安全模块 它能够限制网络的访问 现在有一个要求那就是要让主机A能够访问主机B 主机B不能访问主机A 那么防火墙能够做到么 答案是可以的 当主机A的防火墙入站规则限制了主机B 那么主机B想访问主机A的时候 发出的网络包确实会
  • Echart 地图开启缩放之后,中心点位置偏移

    把 geo center 设为 undefined geo map china center undefined roam true
  • Nginx流控限制

    Nginx流控 流量限制 rate limiting 是Nginx中一个非常实用 却经常被错误理解和错误配置的功能 我们可以用来限制用户在给定时间内HTTP请求的数量 请求 可以是一个简单网站首页的GET请求 也可以是登录表单的POST请求
  • .ajax表单校验插件,表单验证插件——validate

    表单验证插件 表单验证插件 邮箱 function frmV validate 自定义验证规则 rules 错误提示位置 errorPlacement function error element error appendTo tip di
  • 什么是用户增长? (超详细)

    一 概况 原因 随着人口红利的衰减 互联网流量红利的马太效应显现 这意味着成本的大幅度增加 企业必须改变过去粗放型的营销和运营方式 用更高效更低成本实现快速增长 定义 通过实验和数据驱动 聚焦整个用户生命周期的方法论 在任何一家公司 任何业
  • jetbrains全家桶

    到期时间 19年6月份 SXXI7H41YN eyJsaWNlbnNlSWQiOiJTWFhJN0g0MVlOIiwibGljZW5zZWVOYW1lIjoicGF5bmUgd2FuZyIsImFzc2lnbmVlTmFtZSI6IiIsI
  • C++项目:高并发内存池

    文章目录 项目介绍 什么是内存池 池化技术 内存池 malloc 页 定长的内存池 对比测试 高并发内存池整体框架设计 thread cache 整体设计 哈希桶映射对齐规则 TLS无锁访问 Central Cache Span SpanL
  • 时分秒与时间戳相互转化(sys.argv)

    import sys 把时分秒转化为时间戳 def countDown time s 0 hour time split 0 min time split 1 sec time split 2 s int hour 3600 int min
  • MKL的矩阵运算

    矩阵与矩阵的乘法 分为双精度的cblas sgemm和单精度的cblas sgemm 两个函数的参数意义一样 只是类型不一样 运算式 C alpha A B beta C 一般取alpha 1 0 beta 0 0 即计算式 C A B c
  • LateX环境安装与配置--包括常见安装失败错误更正(TeX Live 2021及TexStudio)

    目录 一 前言 二 下载镜像文件 1 打开网址 点击 On DVD 2 点击下载ISO镜像文件 3 选择一个最近的镜像网站进行下载 4 下载镜像文件 5 打开镜像文件 三 安装 1 修改安装内容及目录 2 出错问题 lt 1 gt 此电脑
  • pandas从mongo中导出数据存入excel或csv

    import pandas as pd import pymongo mongo不带密码连接 con pymongo MongoClient ip mongo带密码连接 con pymongo MongoClient mongodb for
  • SQL_les0/基础知识/联合注入常用语句与相关技巧

    SQL注入 一种针对数据库的攻击方式 危害 数据被破坏 数据被篡改 原理 攻击者通过构造不同的SQL语句来实现对数据库的操作 常见数据库 Oracle SQL Server DB2 PostgreSQL MySQL Access 使用SQL
  • 【图像去雾】Contrastive Learning for Compact Single Image Dehazing阅读

    论文 https arxiv org pdf 2104 09367 pdfhttps arxiv org pdf 2104 09367 pdf 代码 https github com GlassyWu AECR Nethttps githu
  • MongoDB修改数据库名,collection名库名

    修改数据库名 db copyDatabase test test1 db copyDatabase old name new name use test use old name db
  • Qt之读写文件

    1 思路 读写文件的基本操作 读文件 写文件 打开文件 打开文件 读取文件 写入文件 关闭文件 关闭文件 2 QFile实现读写文件 QFile类提供读写文件的接口 它的构造函数如下 QFile const QString name QFi
  • iOS架构师_观察者模式

    定义 观察者模式 有时又被称为模型 视图 View 模式 源 收听者 Listener 模式或从属者模式 一个目标物件管理所有相依于它的观察者物件 并且在它本身的状态改变时主动发出通知 这通常透过呼叫各观察者所提供的方法来实现 此种模式通常
  • 初学java笔记(含遇到的问题及解决方法)

    java浮点数保留n个小数位问题 法一 import java text DecimalFormat DecimalFormat res new DecimalFormat 0 000 System out println res form
  • 神经网络算法开发学习总结--算法应用及优化

    1 算法目标设定 首先要确定一个算法目标及约束条件 比如运行时间 硬件内存限制 准确度等选择算法 学习效果一般尽量采用单个指标进行评估 对于 N 个评价指标 选择其中一个指标作为优化指标 选择剩下的 N 1 个指标作为满足指标 比如针对分类
  • 【计算机网络】HTTP协议详解

    目录 1 HTTP协议概述 2 HTTP协议的工作过程 3 使用抓包工具观察HTTP协议格式 3 1 Fiddler抓包工具 3 2 HTTP协议格式 4 解析HTTP请求 4 1 URL 4 2 请求方法 4 2 1 GET方法 4 2
  • Python-Pygame实践:《杀死冠状病毒》

    2020年春节前后 冠状病毒爆发 遂编写这个游戏 希望武汉人民加油 中国人民加油 杀死病毒 获得胜利 游戏的内容参考的是Eric Matthes的 Python编程从入门到实践 中的项目1外星人入侵 稍作修改 以下是书中对该游戏的描述 在游