pygame - 2djump - 项目备份2022-4-16


import pygame import os from pygame.locals import * from sys import exit

# 声明全局变量 SCREEN_WIDTH = 1600 # 窗口分辨率 SCREEN_HEIGHT = 900 keylist_ad = [pygame.K_a, pygame.K_d] # 按键列表 FPS = 60 # 刷新率
# 初始化游戏 pygame.init() # 初始化pygame screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT]) # 初始化窗口 clock = pygame.time.Clock() # 初始化时钟对象 pygame.display.set_caption('This is my first pygame-program') # 设置窗口标题
# 载入背景图 background = pygame.image.load('assets/background - 1600x900.png') # 载入精灵图 player_img = pygame.image.load('assets/sprite - player - 1.png') rock_img = pygame.image.load('assets/sprite - rock - 1.png')
# 初始化对象属性: player player_rect = pygame.Rect(0, 64, 0, 64) #  player_mask = [0, 0, 64, 64] # 碰撞检测用的遮罩(x1,y1,x2,y2) player_pos = [800, 450] # 初始位置 player_hspeed = 10 # 横向速度绝对值 player_vspeed = 0 # 纵向速度初始化 player_gravity = 1.5 # 重力系数 # 初始化键盘时刻 (ticks)  ticks_K_a = 0 ticks_K_d = 0 # 初始化横向移动系数 [1,-1] sign_direction_horizonal = 0
# 初始化对象属性: rock rock_rect = pygame.Rect(0, 64, 0, 64) rock_mask = [0, 0, 64, 64] rock_pos = [800, 600]

# 主事件循环 while True:     # 设置刷新频率     clock.tick(FPS)
    # 检测键盘按住的键位 累加键盘时刻     list_key_pressed = pygame.key.get_pressed()     if list_key_pressed[pygame.K_a]:         ticks_K_a += 1     else:         ticks_K_a = 0     if list_key_pressed[pygame.K_d]:         ticks_K_d += 1     else:         ticks_K_d = 0
    # 当a和d的键盘时刻都不为0时 取两键盘时刻的较小者 作为有效按键 修改横向速度方向系数     if ticks_K_a != 0 and ticks_K_d != 0:         if ticks_K_a <= ticks_K_d:             sign_direction_horizonal = -1         else:             sign_direction_horizonal = 1
    # 当a或d两个键其中一个键的键盘时刻不为0时 若另一个为0 则取不为0者作为有效按键     # 修改横向速度方向系数     if ticks_K_a > ticks_K_d and ticks_K_d == 0:         sign_direction_horizonal = -1     if ticks_K_a < ticks_K_d and ticks_K_a == 0:         sign_direction_horizonal = 1
    # 当两个键的键盘时刻都为0时 修改横向速度方向系数为0     if ticks_K_a == 0 and ticks_K_d == 0:         sign_direction_horizonal = 0
    # 绘制背景     screen.blit(background, (0, 0))
    # 遍历游戏事件     for event in pygame.event.get():
        # 处理游戏退出         if event.type == pygame.QUIT:             pygame.quit()             exit()

    # 计算对象属性     player_hspeed = sign_direction_horizonal * 10     player_vspeed += player_gravity
    # 计算精灵位置     player_pos[0] += player_hspeed     player_pos[1] += player_vspeed
    # 绘制精灵     screen.blit(player_img, player_pos)     screen.blit(rock_img, rock_pos)
    # 更新屏幕     pygame.display.update()
    # 刷新控制台     # os.system('cls')

相关