ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ZZA的项目学习开发文档5/1

2021-05-01 18:31:48  阅读:162  来源: 互联网

标签:ZZA 游戏 screen 学习 bg1 文档 pygame 100 rect


游戏循环 和 游戏时钟

游戏中的动画效果实质上是在屏幕上进行的快速的绘制图像
每次被绘制的结果被称为帧( F r a m e Frame Frame)

游戏的两个重要组成部分:
在这里插入图片描述

简单动画的实现:

游戏循环的作用:

1.保证游戏能一直运行下去,不会出现运行完自动退出的情况。

2.变化图像位置 ——动画效果
①:每隔····秒移动一下图像的位置。
②:调用pygame.display.update()更新屏幕显示。

3.检测用户交互——利用键盘或者鼠标实现对游戏的控制。

游戏时钟的作用:

pygame中专门有控制帧率的类:pygame.time.Clock(),可以进行控制帧率。

要使用时钟对象需要两步:
1.游戏初始化创建一个时钟对象
2.在游戏循环中调用tick()

举例代码实现:

import pygame, sys

from pygame.locals import *

pygame.init()

# 时钟对象的初始创建
clock = pygame.time.Clock() 

screen = pygame.display.set_mode((800, 800))

bg1 = pygame.image.load(r'C:\Users\TOMMY\Desktop\carrot.png')

# rect型的创建,表示要移动的图像的位置属性,再循环中方便利用他的属性来实现图像的移动

bg1_rect = pygame.Rect(0, 0, 100, 100)

# 2> 绘制在屏幕
screen.blit(bg1, (100, 100))

pygame.display.update()  #刷新屏幕内容

while True:
    clock.tick(60)

    bg1_rect.y -= 1

    if bg1_rect.y + bg1_rect.height <= 0:
        bg1_rect.y = 700

    screen.blit(bg1, bg1_rect)

    pygame.display.update()

    for event in pygame.event.get():   # 循环获取事件
        if event.type == QUIT:  # 若检测到事件类型为退出,则退出系统
            pygame.quit()
            sys.exit()


这样写会有一个错误,那就是没有保证绘制过程中的背景的更新,就会出现以下情况:
在这里插入图片描述
他所扫过的一片,背景都会被抹掉,要解决以上问题,要在循环内加一个背景更新的语句,并且这个语句要放在其他图像更新语句的前面:

import pygame, sys

from pygame.locals import *

pygame.init()

clock = pygame.time.Clock()

screen = pygame.display.set_mode((610, 610))

bg1 = pygame.image.load(r'C:\Users\TOMMY\Desktop\carrot.png')

bg_screen = pygame.image.load(r'C:\Users\TOMMY\Desktop\love.png')

bg1_rect = pygame.Rect(100, 100, 100,    100)

while True:
    clock.tick(60)

    bg1_rect.y -= 1

    if bg1_rect.y + bg1_rect.height <= 0:
        bg1_rect.y = 700

    screen.blit(bg_screen, (0, 0))

    screen.blit(bg1, bg1_rect)

    pygame.display.update()

    for event in pygame.event.get():   # 循环获取事件
        if event.type == QUIT:  # 若检测到事件类型为退出,则退出系统
            pygame.quit()
            sys.exit()

运行图片如下所示:
在这里插入图片描述
及时运行中经过背景图片也不会被抹去,所以一定要先对screen进行重绘制(更新)

注意:要操作并进行移动的图像一定要提前定义为rect模式,因为只有这样才能操作他的坐标进行移动操作

游戏循环中的 监听 和 事件

事件: 就是开始游戏后,用户针对游戏所做的操作,例如点击关闭按钮,点击鼠标,点击键盘

监听: 在游戏中,判断用户的具体操作,因为只有捕获到用户的具体操作,才能作出具体的响应。

pygame 中通过 pygame.event.get()可以获得 用户当前所做动作的事件列表

代码如下:
注解:所有的监听代码都大同小异,差不多都是如下模式,可以理解为模板:

# 游戏循环
while True:
    # 事件监听
    for event in pygame.event.get():
    
        # 判断用户是否点击了关闭按钮
        if event.type == pygame.QUIT:
            print("退出游戏...")

            pygame.quit()

            # 直接退出系统
            exit()

标签:ZZA,游戏,screen,学习,bg1,文档,pygame,100,rect
来源: https://blog.csdn.net/qq_51960163/article/details/116331337

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有