外星人入侵之武装飞船(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模块的方法进行退出游戏操作,搭建了一个运行游戏开始的框架,接下来,将会一步一步进行操作,直至完成整个项目。


每日一言

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

 

相关文章
|
7月前
|
存储 Python
外星人入侵之武装飞船(2)
文章介绍了如何使用Python进行游戏开发,特别是通过创建外星人入侵游戏来学习Python编程。并提供了项目的思维导图。文章分为几个部分,首先介绍了如何设置游戏屏幕的背景色,通过调用pygame.display.set_caption()和screen.fill(bg_color)方法实现。接着,作者创建了一个名为`Settings`的类,存储游戏设置,如屏幕尺寸和背景颜色,以便于管理和修改。通过这种方式,初学者不仅可以学习Python编程基础,还能了解到类和对象的概念,以及如何组织代码以实现更复杂的功能。文章还鼓励读者自己寻找合适的图片资源,以避免侵权,并提供了一个简单的飞船图片作为参考。
|
7月前
|
存储 Python
外星人入侵之武装飞船(3)
经过几个月的学习,自己也有了一些学习python的经验,想通过几个稍微大一点的项目的来对自己的开发能力进行训练和评估,从今天继续进行学习和练习Python编程从入门到实践这本书里面的项目。本项目中,自己会对项目中使用的一些方法和构造进行解读,自己学会就是自己的东西。本文章主要是对前面写的一些代码的重构,方便对后续越来越多功能,与代码的简化,为后续代码的进一步管理提供了便利.也增加了飞船向右移动的功能,并增加了按着按键不动,飞船会一直向右移动,使得游戏更加合理,总的来说都是对我在项目制作过程中的一种思路的培养,使我对于项目开发的流程有了更加清晰的了解.
|
12月前
|
Python
外星人入侵游戏-(创新版)
外星人入侵游戏-(创新版)
53 1
|
安全 机器人 网络安全
盘点3款高端大气上档次的黑客游戏
盘点3款高端大气上档次的黑客游戏
140 0
盘点3款高端大气上档次的黑客游戏
|
机器学习/深度学习 机器人 芯片
全球首例!通过植入电极向腿部发射信号,让瘫痪者重新行走、游泳、骑行
五年前,Michel Roccati在一次摩托车事故中瘫痪。由于脊髓完全被切断,他的腿之后再也没有任何感觉。 不过最近,他又可以重新走路了。通过一次手术,研究者将一块电子芯片植入物连接到他的脊椎上,代替脊髓向腿部肌肉发射信号。
188 0
全球首例!通过植入电极向腿部发射信号,让瘫痪者重新行走、游泳、骑行
|
安全 机器人
帮纽约警察营救人质!被征警的波士顿动力狗,会成为没有感情的“监视工具”吗?
帮纽约警察营救人质!被征警的波士顿动力狗,会成为没有感情的“监视工具”吗?
145 0
珍爱生命,远离大论战
  前几天小学聚会,想起来了一些小时候的趣事。有一同学,他学习能力强,学东西快,老师讲的课程他都会了,作业也都写完了。然后呢呆着没事,找他同桌闲聊,放学了还拉着他疯玩。结果呢,第二天要交作业,他是没事了,可是他同桌惨了,忘记写作业了。
934 0
|
安全
奥巴马专用直升机被曝飞机蓝图被伊朗P2P用户分享
一家专业检测p2p文件共享网络的公司发现一个美国总统奥巴马专用直升机的潜在的严重安全漏洞,安全人员发现了一个P2P文件共享程序,程序的IP地址设置的为伊朗首都德黑兰,奥巴马专机"海军陆战队一号"的蓝图与航空电子设备完全的被共享.
1042 0