学习小甲鱼第82个,83个视频

简介: 学习小甲鱼第82个,83个视频

第82


查询电脑分辨率方法


>>> import pygame
>>>> pygame.init()
>>>> pygame.display.list_modes()



得知自己的为1920×1080


设置全屏游戏


import pygame
import sys
pygame.init()  # 初始化Pygame
size = width, height = 600, 400   # size为元组
speed = [-2, 1]
bg = (255, 255, 255)  # RGB
fullscreen = False  # 设置一个决定全屏的变量
# 实例化Pygame 的time 模块的 Clock 对象
clock = pygame.time.Clock()    # 设置帧率需要
# 创建指定大小的窗口 Surface
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("初次见面,请大家多多关照!")
# 加载图片
turtle = pygame.image.load("18.gif")
# 获得图像的位置矩形
position = turtle.get_rect()
l_head = turtle     # 原图像
r_head = pygame.transform.flip(turtle, True, False)  # 翻转后
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:  # 按下方向键左键
                turtle = l_head  # 调头
                speed = [-1, 0]  # 左移
            if event.key == pygame.K_RIGHT:
                turtle = r_head  # 调头
                speed = [1, 0]   # 右移
            if event.key == pygame.K_UP:
                speed = [0, -1]
            if event.key == pygame.K_DOWN:
                speed = [0, 1]
            # 全屏(F11)
            if event.key == pygame.K_F11:
                fullscreen = not fullscreen
                if fullscreen:
                    screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN | pygame.HWSURFACE)
                    width, height = 1920, 1080  # 重新设置宽高
                else:
                    screen = pygame.display.set_mode(size)  # size变量是原来的尺寸
                    width, height = size  # 把size赋值给宽高
    # 移动图像
    position = position.move(speed)
    if position.left < 0 or position.right > width:
        # 翻转图像
        turtle = pygame.transform.flip(turtle, True, False)  # 就是r_head
        # 反方向移动
        speed[0] = -speed[0]
    if position.top < 0 or position.bottom > height:
        speed[1] = -speed[1]
    # 填充背景
    screen.fill(bg)
    # 更新图像
    screen.blit(turtle, position)
    # 更新界面
    pygame.display.flip()
    # 延迟10毫秒
    pygame.time.delay(10)
    # 设置帧率
    #clock.tick(200)


设置缩放图像大小


这个没做出来


让图像在上下左右边界移动


import pygame
import sys  # 退出游戏需要
pygame.init()  # 初始化Pygame
size = width, height = 600, 400  # 窗口尺寸
bg = (255, 255, 255)  # RGB,窗口背景颜色
fullscreen = False  # 初始化全屏为False
# 创建指定大小的窗口 Surface
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("小黑黑打架吗?")
# 加载图片
turtle = pygame.image.load("18.gif")
# 获得图像的位置矩形
position = turtle.get_rect()
speed = [5, 0]     # 原始乌龟图像速度x=5,y=0,向右走
"""其他三个乌龟图像"""
turtle_right = pygame.transform.rotate(turtle, 90)  # 旋转的角度,在右边,向下走
turtle_top = pygame.transform.rotate(turtle, 180)   # 180度,在上边,向左走
turtle_left = pygame.transform.rotate(turtle, 270)  # 270度,在左边,向上走
turtle_bottom = turtle
turtle = turtle_top    # 初始从上边开始
while True:
    for event in pygame.event.get():     # 遍历事件
        if event.type == pygame.QUIT:    # ×掉窗口
            sys.exit()                   # 退出
        if event.type == pygame.KEYDOWN:  # 按下键
            # 全屏(F11)
            if event.key == pygame.K_F11:  # F11
                fullscreen = not fullscreen  # 全屏改为True
                if fullscreen:  # 如果全屏
                    screen = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN | pygame.HWSURFACE)
                    width, height = 1920, 1080  # 重置窗口高宽
                else:           # 不全屏
                    screen = pygame.display.set_mode((600, 400))  # 复原
                    width, height = 600, 400  # 重置宽高
    # 移动图像
    position = position.move(speed)
    if position.right > width:   # 右边大于窗口宽度
        turtle = turtle_right    # 图像在右边了
        position = turtle_rect = turtle.get_rect()  # 重置位置
        position.left = width - turtle_rect.width
        speed = [0, 5]  # 重置速度,向下走
    if position.bottom > height:     # 底部大于窗口高度
        turtle = turtle_bottom       # 换乌龟图像
        position = turtle_rect = turtle.get_rect()  # 重置位置
        position.left = width - turtle_rect.width
        position.top = height - turtle_rect.height
        speed = [-5, 0]  # 重置速度,向左走
    if position.left < 0:           # 左边出去了
        turtle = turtle_left        # 换成左边的乌龟
        position = turtle_rect = turtle.get_rect()  # 重置位置
        position.top = height - turtle_rect.height
        speed = [0, -5]  # 重置速度,向上走
    if position.top < 0:            # 到了最上边
        turtle = turtle_top         # 换上边的图像
        position = turtle_rect = turtle.get_rect()  # 重置位置
        speed = [5, 0]  # 重置速度,向右走
    # 填充背景
    screen.fill(bg)
    # 更新图像
    screen.blit(turtle, position)
    # 更新界面
    pygame.display.flip()
    # 延迟10毫秒
    pygame.time.delay(10)


以下是游戏的一个截图



第83


这个看不懂。。。


import pygame
import sys     # 退出需要
from pygame.locals import *
pygame.init()  # 初始化
size = width, height = 400, 400
bg = (255, 255, 255)  # 背景颜色
clock = pygame.time.Clock()                # 设置帧率需要
screen = pygame.display.set_mode(size)     # 设置窗口大小
pygame.display.set_caption("Python Demo")  # 设置窗口名
turtle = pygame.image.load("18.gif")   # 加载图片
# 0 -> 未选择,1 -> 选择中,2 -> 完成选择
select = 0     # 选择初始赋值为0
select_rect = pygame.Rect(0, 0, 0, 0)
# 0 -> 未拖拽,1 -> 拖拽中,2 -> 完成拖拽
drag = 0      # 初始化
position = turtle.get_rect()   # 获取位置
position.center = width // 2, height // 2   # 整除取整数,中心位置
while True:  # 死循环
    for event in pygame.event.get():  # 遍历事件
        if event.type == QUIT:
            sys.exit()                # 退出游戏
        elif event.type == MOUSEBUTTONDOWN:   # 鼠标点下
            if event.button == 1:             # 点下第一次
                # 第一次点击,选择范围
                if select == 0 and drag == 0:  # 如果为第一次
                    pos_start = event.pos      # 获取原始位置
                    select = 1                 # 表示选择中
                # 第二次点击,推拽图像
                elif select == 2 and drag == 0:
                    capture = screen.subsurface(select_rect).copy()
                    cap_rect = capture.get_rect()
                    drag = 1
                # 第三次点击,初始化
                elif select == 2 and drag == 2:
                    select = 0
                    drag = 0
        elif event.type == MOUSEBUTTONUP:    # 鼠标松下
            if event.button == 1:            # 松下第一次
                # 第一次释放,结束选择
                if select == 1 and drag == 0:  # 如果是第一次
                    pos_stop = event.pos       # 结束位置
                    select = 2                 # 表示完成选择
                # 第二次释放,结束拖拽
                if select == 2 and drag == 1:
                    drag = 2
    screen.fill(bg)
    screen.blit(turtle, position)
    # 实时绘制选择框
    if select:  # 不为0时
        mouse_pos = pygame.mouse.get_pos()  # 得到鼠标当前位置
        if select == 1:  # 选择中
            pos_stop = mouse_pos  # 获取结束坐标
        select_rect.left, select_rect.top = pos_start
        select_rect.width, select_rect.height = pos_stop[0] - pos_start[0], pos_stop[1] - pos_start[1]
        pygame.draw.rect(screen, (0, 0, 0), select_rect, 1)   # 画一个矩形,(000)黑线,宽度1像素
    # 拖拽裁剪的图像
    if drag:  # 不为0时
        if drag == 1:
            cap_rect.center = mouse_pos
        screen.blit(capture, cap_rect)
    pygame.display.flip()
    clock.tick(30)


图像效果:



推荐博客


博客一


博客二

相关文章
|
1月前
|
Python
小甲鱼 模块与包上 笔记
小甲鱼 模块与包上 笔记
23 0
|
4月前
|
C语言
c语言编程练习题:7-13 后天
如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
35 0
|
6月前
|
Python
西安石油大学Python期末复习
西安石油大学Python期末复习
103 0
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言(三)
算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言(三)
130 1
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1020-1040)C语言(三)
算法竞赛入门【码蹄集新手村600题】(MT1020-1040)C语言(三)
59 0
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1040-1060)C语言(二)
算法竞赛入门【码蹄集新手村600题】(MT1040-1060)C语言(二)
73 1
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1120-1140)C语言(三)
算法竞赛入门【码蹄集新手村600题】(MT1120-1140)C语言(三)
86 0
|
7月前
|
算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言(一)
算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言
66 0
|
1月前
|
自然语言处理 Java C#
C程序设计内容与例题讲解 -- 第一章(第五版)谭浩强
C程序设计内容与例题讲解 -- 第一章(第五版)谭浩强
|
7月前
|
机器学习/深度学习 算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1220-1240)C语言(一)
算法竞赛入门【码蹄集新手村600题】(MT1220-1240)C语言
131 0