Python 实践——外星人入侵小游戏(上)

Python 实践------外星人入侵小游戏(上)

目录

安装pip/pygame

先查询python路径,然后在终端输入:

/路径/python3 -m ensurepip --default-pip

通过pip安装pygame:

/路径/python3 -m pip install pygame

新建一个python文档:

import pygame

没报错就说明安装成功

1.开始项目

import sys
import pygame
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init() #初始化
    screen = pygame.display.set_mode((1200,800)) #设置屏幕大小
    pygame.display.set_caption("Alien Invasion")
    # 开始游戏的主循环
    while True:#事件(用户的操作)循环
        # 监视键盘和鼠标事件
        for event in pygame.event.get():#检测事件-操作
            if event.type == pygame.QUIT:
                sys.exit()
         # 让最近绘制的屏幕可见
        pygame.display.flip() #更新屏幕
run_game()

注意:

名称不要叫pygame.py,他会覆盖真正的pygame

pygame 开发游戏

sys 退出游戏

.get()检测事件

.display.flip() (flip快速翻动)随着操作改变,不断更新屏幕,以显示元素的新位置。

2.设置屏幕背景色

基本操作:

(1)bg_color=(,) RGB 表示

(2)调用screen.fill(bg_color),这个方法只接受一个实参(颜色)

RGB

这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255,0,0)表示红色,(0,255,0)表示绿色,而(0,0,255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(230,230,230)中,红色、蓝色和绿色量相同,它将背景设置为一种浅灰色。

3. 设置类

可以在另一个py文件中把你的规定都写好,然后直接导入到游戏文件里。

settings.py

class Setting():
    def __init__(self):
        self.screen_width= 1200
        self.screen_height= 800
        self.bg_color=(230,230,230)

alien.py

import sys
import pygame
from settings import Setting
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init() #初始化
    ai_settings=Setting()
    #传递元组
    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    while True:#事件(用户的操作)循环
        for event in pygame.event.get():#检测事件-操作
            if event.type == pygame.QUIT:
                sys.exit()
        screen.fill(ai_settings.bg_color)
        pygame.display.flip() #更新屏幕
run_game()

注意:

    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))

传递元组,而不是参数。

4. 添加飞船图像

  • 写代码之前:
    在pycharm中创建一个叫images的文件夹
    然后把图片粘贴到其中,refactor成ship.bmp
    (根据需求,可以在ps里调整一下像素大小)
    注意背景颜色要一样

  • 代码操作:
    初始化
    加载图像.image.load('路径.bmp')
    矩形处理图形 self.rect/.get_rect()
    矩形处理屏幕self.screen_rect
    放置位置 .screen_rect.位置
    def
    .blit(图形,屏幕) 位块传输,绘制

    import pygame
    class Ship():
    def init(self,screen):
    self.screen = screen
    # 加载飞船图像
    self.image = pygame.image.load('images/ship.bmp')
    #处理图形
    self.rect = self.image.get_rect()
    #处理屏幕
    self.screen_rect = screen.get_rect()
    # 将每艘新飞船放在屏幕底部中央
    self.rect.centerx = self.screen_rect.centerx
    self.rect.bottom = self.screen_rect.bottom

      def blitme(self):
          self.screen.blit(self.image, self.rect)
    

注意:

.bmp形式 位图

.表示访问属性

· get_rect():像处理矩形一样处理游戏元素.

·要将游戏元素居中,可设置相应rect对象的属性center、centerx或centery。要让游戏元素与屏幕边缘对齐,可使用属性top、bottom、left或right;要调整游戏元素的水平或垂直位置,可使用属性x和y,它们分别是相应矩形左上角的x和y坐标。

·在Pygame中,原点(0,0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800的屏幕上,原点位于左上角,而右下角的坐标为(1200,800)。

5.导入程序

基本操作:

from xx import

ship=Ship(screen) 创建实例

ship.blitme()

完整:

import sys
import pygame
from settings import Setting
from ship import Ship
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init() #初始化
    ai_settings=Setting()
    #传递元组
    screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    ship=Ship(screen)

    while True:#事件(用户的操作)循环
        for event in pygame.event.get():#检测事件-操作
            if event.type == pygame.QUIT:
                sys.exit()
        screen.fill(ai_settings.bg_color)
        ship.blitme()
        pygame.display.flip() #更新屏幕
run_game()

总结

欢迎你进入编写自己的游戏阶段!我把很长的一章切分成了几个部分。本章你在画布中导入了一个飞船的图片。你完成了如下几个部分:开始项目(初始化/循环/屏幕可见/更新屏幕);设置背景颜色;设置类(预设规定);添加飞船图像;导入程序。

相关推荐
Watermelo6171 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
古希腊掌管学习的神1 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
半盏茶香1 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J2 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB2 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
Ronin3052 小时前
11.vector的介绍及模拟实现
开发语言·c++
计算机学长大白3 小时前
C中设计不允许继承的类的实现方法是什么?
c语言·开发语言
PieroPc4 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
2401_857439697 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna7 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos