PYTHON下载了PYGAME窗口怎么打开

PYTHON下载了PYGAME窗口怎么打开,第1张

Python与Pygame程序标准框架:

import pygame, sys

from pygame.locals import *

pygame.init()

SCREEN = pygame.display.set_mode((*1*, *2*))

pygame.display.set_caption("*3*")

while True:

    for event in pygame.event.get():

        if event.type == QUIT:

            pygame.quit()

            sys.exit()

在*1*处输入你的窗口的宽度,

在*2*处输入你的窗口的高度,

在*3*处输入你的窗口的顶部显示的标题。

如果运行时你看到一个黑色的窗口,顶部写着你在*3*处写的文字,那么——恭喜你!你的Pygame安装成功了!

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

《Python编程: 从入门到实践》第12章武装飞船,开始学习管理包含多个文件的项目。我们将重构很多代码,以提高代码的效率,并管理文件的内容,以确保项目组织有序。本节介绍创建Pygame窗口以及响应用户输入。

12.3 开始游戏项目

现在来开始开发游戏《外星人入侵》。首先创建一个空的Pygame窗口,供后面用来绘制游戏元素,如飞船和外星人。我们还将让这个游戏响应用户输入、设置背景色以及加载飞船图像。

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

首先,我们创建一个空的Pygame窗口。使用Pygame编写的游戏的基本结构如下:

alien_invasion.py

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()

首先,我们导入了模块sys和pygame。模块pygame包含开发游戏所需的功能。玩家退出时,我们将使用模块sys来退出游戏。

游戏《外星人入侵》的开头是函数run_game()。u处的代码行pygame.init()初始化背景设置,让Pygame能够正确地工作。在v处,我们调用pygame.display.set_mode()来创建一个名为screen的显示窗口,这个游戏的所有图形元素都将在其中绘制。实参(1200, 800)是一个元组,指定了游戏窗口的尺寸。通过将这些尺寸值传递给pygame.display.set_mode(),我们创建了一个宽1200像素、高800像素的游戏窗口(你可以根据自己的显示器尺寸调整这些值)。

对象screen是一个surface。在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这个游戏中,每个元素(如外星人或飞船)都是一个surface。display.set_mode()返回的surface表示整个游戏窗口。我们激活游戏的动画循环后,每经过一次循环都将自动重绘这个surface。

这个游戏由一个while循环(见w)控制,其中包含一个事件循环以及管理屏幕更新的代码。事件是用户玩游戏时执行的 *** 作,如按键或移动鼠标。为让程序响应事件,我们编写一个事件循环,以侦听事件,并根据发生的事件执行相应的任务。x处的for循环就是一个事件循环。

为访问Pygame检测到的事件,我们使用方法pygame.event.get()。所有键盘和鼠标事件都将促使for循环运行。在这个循环中,我们将编写一系列的if语句来检测并响应特定的事件。例如,玩家单击游戏窗口的关闭按钮时,将检测到pygame.QUIT事件,而我们调用sys.exit()来退出游戏(见y)。

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

在这个基本的游戏结构中,最后一行调用run_game(),这将初始化游戏并开始主循环。

如果此时运行这些代码,你将看到一个空的Pygame窗口。

event英文翻译是事件 get 获取  type是样式,类型的意思,所以他这个都是有规律的,但是有顺序事件在前,后面跟属性

同时也有父子(层级)关系

event.get() 获取到的事件

event.type() 事件类型

event.key() 按键事件

一般都是写在while里面,因为这是个不断循环的过程,不然,只执行一便达不到实际要求,这是Pygame里面设定好的

这是贪吃蛇游戏的一段代码(一部分):

txt = font.render('GAME OVER', True, (255, 0, 0))

screen.blit(txt, (size[0]/6, size[1]*2/5-20))   # (0, 0)   (size[0]/6, size[1]*2/5)100号字中心位置

direction = 'right'    # 初始方向,向右

changeDirection = direction    # 定义一个改变方向的变量,按键

running = True

while Trunning:   

    for event in pygame.event.get():    # 从队列中获取事件        

        if event.type == QUIT:    # 判断事件类型是否为退出事件

            # pygame.quit()

            sys.exit()    

            

        elif event.type == KEYDOWN:    # 如果按键被按下(事件)

            

            if event.key == K_RIGHT or event.key == K_d: # 如果是右键头或者是d,蛇向右移动

                changeDirection = 'right'            

            if event.key == K_LEFT or event.key == K_a:  # 如果是左键头或者是a,蛇向左移动

                changeDirection = 'left'

            if event.key == K_UP or event.key == K_w:

                changeDirection = 'up'

            if event.key == K_DOWN or event.key == K_s:

                changeDirection = 'down'

            #这下面一行可以忽略,

            if event.key == K_ESCAPE:    # 对应键盘上的Esc键,表示退出

                pygame.event.post(pygame.event.Event(QUIT))

    # 绘制文本,刷新显示

    screen.blit(txt, (20, 10))

    screen.fill(blackColor)  #放在for语句一列,属于while的(子)层级,循环不断的刷新


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8109588.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存