外星人入侵之武装飞船(1)

简介: 本文是关于使用Python编程语言开发游戏《外星人入侵》的项目介绍。分享了自己学习Python的心得,并决定通过该项目来提升自己的编程技能,文章详细讲解了如何安装Pygame库,并逐步展示了创建游戏窗口、设置游戏标题、监听用户输入(包括键盘和鼠标事件)、处理关闭窗口的请求以及不断更新屏幕以实现平滑动画效果的代码。通过这些步骤,构建了一个基础的游戏框架。最后,文章总结了已完成的工作,并预告了接下来的开发计划。注意:以上内容是摘要,原始文章包含更多详细解释和代码示例。

前言


版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_72543266/article/details/132517009

 

经过几个月的学习,自己也有了一些学习python的经验,想通过几个稍微大一点的项目的来对自己的开发能力进行训练和评估,从今天开始进行学习和练习Python编程从入门到实践这本书里面的项目。本项目中,自己会对项目中使用的一些方法和构造进行解读,自己学会就是自己的东西。

思维导图

image.gif

1,规划项目

                           这就是这个游戏的背景以及游戏里面的大概细节。

   在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家 可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出

现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星 人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了 玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。 在第一个开发阶段,我们将创建一艘可左右移动的飞船,这艘飞船在用户按空格键时能够开

火。设置好这种行为后,我们就能够将注意力转向外星人,并提高这款游戏的可玩性。  

 在第一个开发阶段,我们将创建一艘可左右移动的飞船,这艘飞船在用户按空格键时能够开火。设置好这种行为后,我们就能够将注意力转向外星人,并提高这款游戏的可玩性。

2,安装pygame

这里我们使用

pip install pygame

image.gif

 如果你使用的是pygame可以按照上面链接里我写的一篇文章里的安装方法进行安装。

3,开始游戏项目

3.1、创建 Pygame 窗口以及响应用户输入

3.1.1、导入模块

首先我们先导入模块,其中模块对应的使用内容用注释已经写出

# 创建 Pygame 窗口以及响应用户输入
import sys  # 使用sys模块进行退出游戏
import pygame  # 我们整个项目的重要模块

image.gif

3.1.2、创建运行游戏函数与初始化屏幕

接下来我们创建一个运行游戏的函数,然后初始化创建屏幕对象

# 定义一个运行游戏的函数
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()  # 初始化背景设置,让Pygame能够正确地工作

image.gif

接下来有一个重要的知识点,

 对象screen是一个surface(Surface 是一个用于绘制图像的对象。它表示一个可见的区域,可以在其上进行绘制操作,并将其显示在屏幕上。Surface 对象可以是窗口、图片、文本或其他可视元素。)在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中,每个元素(如外星人或飞船)都是一个surface。display.set_mode()返回的surface表 示整个游戏窗口。我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface。

# 创建一个名为screen的显示窗口,实参(1200, 800)是一个元组,指定了游戏窗口的尺寸,宽1200像素,高800像素
    screen = pygame.display.set_mode((1200, 800))

image.gif

3.1.3、设置游戏名

就是游戏左上角的应用名

image.gif

pygame.display.set_caption("外星人入侵")
image.gif

3.1.4、开始游戏的主循环

# 开始游戏的主循环
    while True:  # 永真使得游戏一直执行
        # 监听键盘和鼠标事件
        for event in pygame.event.get():  # 使用方法pygame.event.get()。所有键盘和鼠标事件都将促使for循环运行
            if event.type == pygame.QUIT:  # 如果玩家单机游戏窗口关闭按钮,则将检测到pygame.QUIT事件
                sys.exit()  # 坚持到事件后,退出游戏

image.gif

这里也就几行代码,解读一下:

第一行:先让游戏一直循环,作用嘛一是一直使得监听一直进行,二是还没展示的那行。

第二行,循环获取键盘和鼠标的按键操作,循环给event。

第三行,如果事件的类型为点击关闭,那么调用sys模块中的 exit()方法退出游戏。

3.1.5、不断更新屏幕营造平滑效果

  Pygame的命令让最近绘制的屏幕可见。在这里,它在每次执行while循环时都绘制一个空屏幕,并擦去旧屏幕,使得只有新屏幕可见。在我们移动游戏元 素时,pygame.display.flip()将不断更新屏幕,以显示元素的新位置,并在原来的位置隐藏元素,从而营造平滑移动的效果。

# 让最近绘制的屏幕可见
        pygame.display.flip()

image.gif

3.1.6,运行游戏

调用运行游戏函数

# 运行游戏
run_game()

image.gif

运行后的效果

image.gif 编辑

3.1.7,完整代码

# 创建 Pygame 窗口以及响应用户输入
import sys  # 使用sys模块进行退出游戏
import pygame
# 定义一个运行游戏的函数
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()  # 初始化背景设置,让Pygame能够正确地工作
    # 创建一个名为screen的显示窗口,实参(1200, 800)是一个元组,指定了游戏窗口的尺寸,宽1200像素,高800像素
    screen = pygame.display.set_mode((1200, 800))
    """对象screen是一个surface(Surface 是一个用于绘制图像的对象。它表示一个可见的区域,可以在其上进行绘制操作,并将其显示在屏幕上。Surface 对象可以是窗口、图片、文本或其他可视元素。)
    。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中,每个元素(如外星人或飞船)都是一个surface。display.set_mode()返回的surface表
示整个游戏窗口。我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface。"""
    pygame.display.set_caption("外星人入侵")
    # 开始游戏的主循环
    while True:  # 永真使得游戏一直执行
        # 监听键盘和鼠标事件
        for event in pygame.event.get():  # 使用方法pygame.event.get()。所有键盘和鼠标事件都将促使for循环运行
            if event.type == pygame.QUIT:  # 如果玩家单机游戏窗口关闭按钮,则将检测到pygame.QUIT事件
                sys.exit()  # 坚持到事件后,退出游戏
        # 让最近绘制的屏幕可见
        pygame.display.flip()
        """命令Pygame让最近绘制的屏幕可见。在这里,它在每次执行while循环时都绘制一个空屏幕,并擦去旧屏幕,使得只有新屏幕可见。在我们移动游戏元
素时,pygame.display.flip()将不断更新屏幕,以显示元素的新位置,并在原来的位置隐藏元素,从而营造平滑移动的效果。"""
# 运行游戏
run_game()

image.gif

到这里,我们就完成了创建窗口,以及响应用户的输入。

4,总结

  这次制作主要是通过pygame中的方法函数进行创建窗口,以及对键盘和鼠标事件进行获取推动游戏进行,进一步操作,通过sys模块的方法进行退出游戏操作,搭建了一个运行游戏开始的框架,接下来,将会一步一步进行操作,直至完成整个项目。


每日一言

尽管眼下十分艰难,可日后这段经历说不定就会开花结果。

 

相关文章
|
3天前
|
存储 Python
外星人入侵之武装飞船(2)
文章介绍了如何使用Python进行游戏开发,特别是通过创建外星人入侵游戏来学习Python编程。并提供了项目的思维导图。文章分为几个部分,首先介绍了如何设置游戏屏幕的背景色,通过调用pygame.display.set_caption()和screen.fill(bg_color)方法实现。接着,作者创建了一个名为`Settings`的类,存储游戏设置,如屏幕尺寸和背景颜色,以便于管理和修改。通过这种方式,初学者不仅可以学习Python编程基础,还能了解到类和对象的概念,以及如何组织代码以实现更复杂的功能。文章还鼓励读者自己寻找合适的图片资源,以避免侵权,并提供了一个简单的飞船图片作为参考。
|
3天前
|
存储 Python
外星人入侵之武装飞船(3)
经过几个月的学习,自己也有了一些学习python的经验,想通过几个稍微大一点的项目的来对自己的开发能力进行训练和评估,从今天继续进行学习和练习Python编程从入门到实践这本书里面的项目。本项目中,自己会对项目中使用的一些方法和构造进行解读,自己学会就是自己的东西。本文章主要是对前面写的一些代码的重构,方便对后续越来越多功能,与代码的简化,为后续代码的进一步管理提供了便利.也增加了飞船向右移动的功能,并增加了按着按键不动,飞船会一直向右移动,使得游戏更加合理,总的来说都是对我在项目制作过程中的一种思路的培养,使我对于项目开发的流程有了更加清晰的了解.
|
5月前
|
Python
外星人入侵游戏-(创新版)
外星人入侵游戏-(创新版)
37 1
|
12月前
|
SQL 安全 前端开发
|
安全 机器人 网络安全
盘点3款高端大气上档次的黑客游戏
盘点3款高端大气上档次的黑客游戏
120 0
盘点3款高端大气上档次的黑客游戏
|
C#
C#黎明前的黑暗
  学习编程已经很久了,然而技术还停留在远古时代,丝毫没有什么进步的痕迹,平常也就写一些小软件来处理工作上面遇到的一些很繁杂的问题,天生愚笨或许就是说的我。   黎明前的黑暗期,真的太长了,烂烂的文章就像烂烂的代码一样,没有逻辑感,没有篇幅,简简短短的几行就草草的解决着一个又一个的小问题,却没有一套完整或者大一点的程序。
835 0
|
安全
恶意软件“玻璃老鼠”隐藏数年之久专门攻击中国
本文讲的是恶意软件“玻璃老鼠”隐藏数年之久专门攻击中国,RSA本周公布了一个隐藏了数年之久的远程访问木马(RAT),目标是与跨国公司有联系的中国公民。
1257 0