python第四个小程序,pygame移动的小坦克,支持键盘控制上下左右,F11全屏自动获取用户的最大分辨率,修改边框尺寸大小后初始化图片位置

本文介绍了一个使用Python和Pygame库开发的简单2D坦克移动游戏。玩家可以通过键盘控制坦克的方向并使其在屏幕上移动,当坦克触碰到屏幕边界时会自动反弹并改变方向。此外,游戏还支持全屏模式和窗口大小调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

###进击的坦克###
import pygame
import sys
from pygame.locals import *
#初始化Pygame
pygame.init()

size = width, height = 600, 400
speed = [-2, 0]
bg = (255, 255, 255)
fullscreen = False
#pygame.time.Clock()定义图像移动的帧率
clock = pygame.time.Clock()

#创建指定大小的窗口Surface
screen = pygame.display.set_mode(size, RESIZABLE)
#设置窗口标题
pygame.display.set_caption("进击的坦克!")
#加载坦克图片
tanks = pygame.image.load("tank.png")
#获得图像的位置矩形
position = tanks.get_rect()

l_head = tanks
r_head = pygame.transform.flip(tanks, True, False)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    if event.type == KEYDOWN:
        if event.key == K_LEFT:
            tanks = l_head
            speed = [-1, 0]
        if event.key == K_RIGHT:
            tanks = r_head
            speed = [1, 0]       
        if event.key == K_UP:
            speed = [0, -1]
        if event.key == K_DOWN:
            speed = [0, 1]
        #全屏F11
        if event.key == K_F11:
            fullscreen = not fullscreen
            if fullscreen:
                #获取用户端的最大分辨率
                pygame.init()#初始化
                screen_c = pygame.display.list_modes()#获取当前显示器分辨率的列表,并赋值给screen_c
                screen = pygame.display.set_mode(screen_c[0], FULLSCREEN | HWSURFACE)#screen_c[0]调用第一个分辨率
            else:
                screen = pygame.display.set_mode(size)
            screen.blit(tanks,(0,0))####初始化图片位置
            position = tanks.get_rect()###获得初始化位置后的矩形位置
            
    #用户调整窗口尺寸
    if event.type == VIDEORESIZE:

        screen.blit(tanks,(0,0))####初始化图片位置
        position = tanks.get_rect()###获得初始化位置后的矩形位置
        size = event.size
        width, hight = size
        print(size)
        screen = pygame.display.set_mode(size, RESIZABLE)


        


    #移动图像不能跨越定义好的边框
    position = position.move(speed)
    width, height = screen.get_size()#获取当前SIZE,让坦克的活动范围跟随边框变化
    if position.left < 0 or position.right > width:
        
        #翻转图像
        tanks = pygame.transform.flip(tanks, True, False)
        #反向移动
        speed[0] = -speed[0]

    if position.top < 0 or position.bottom > height:
        speed[1] = -speed[1]

    #填充背景
    screen.fill(bg)
    #更新图像
    screen.blit(tanks, position)
    #更新界面
    pygame.display.flip()
    #延迟10毫秒
    #pygame.time.delay(10)
    clock.tick(100)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值