目录
屏幕控制
幕控制需求
幕控制的重要函数
幕模式函数
pygame.display.set_mode(r=(0,0), flags=0)
r是游戏屏幕的分辨率,采用(width, height)方式输入
• flags用来控制显示类型,可用|组合使用,常用显示标签如下:
† pygame.RESIZABLE 窗口大小可调
† pygame.NOFRAME 窗口没有边界显示
† pygame.FULLSCREEN 窗口全屏显示
pygame.display.set_mode(r=(0,0), flags=0)
注意:每种显示方式要配合相应的处理机制
幕设置为大小可调
幕设置为全屏
幕信息函数
import pygame, sys
import math
pygame.init()
vinfo = pygame.display.Info()
# size = width, height = 600, 400
size = width, height = vinfo.current_w, vinfo.current_h
speed = [2, 2]
BLACK = 0, 0, 0
# print(pygame.display.Info())
screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
# screen = pygame.display.set_mode((600, 400), pygame.FULLSCREEN)
# screen = pygame.display.set_mode((600, 400), pygame.RESIZABLE)
# screen = pygame.display.set_mode((600, 400), pygame.NOFRAME)
# print(pygame.display.Info())
pygame.display.set_caption("Pygame for Game")
ball = pygame.image.load("PYG02-ball.gif")
ballRect = ball.get_rect()
fps = 100
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: # 如果减为零就不用减了
speed[0] == speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] -1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] -1
elif event.key == pygame.K_DOWN:# 如果减为零就不用减了
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
ballRect = ballRect.move(speed[0], speed[1])
if ballRect.left < 0 or ballRect.right > width:
speed[0] = -speed[0]*abs(math.cos(ballRect.left))
if ballRect.top < 0 or ballRect.bottom > height:
speed[1] = -speed[1]
screen.fill(BLACK)
screen.blit(ball, ballRect)
pygame.display.update()
fclock.tick(fps)
小游戏(伸缩型)
import pygame, sys
import math
pygame.init()
# size = width, height = 600, 400
size = 600, 400
speed = [2, 2]
BLACK = 0, 0, 0
# print(pygame.display.Info())
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
# screen = pygame.display.set_mode((600, 400), pygame.FULLSCREEN)
# screen = pygame.display.set_mode((600, 400), pygame.RESIZABLE)
# screen = pygame.display.set_mode((600, 400), pygame.NOFRAME)
# print(pygame.display.Info())
pygame.display.set_caption("Pygame for Game")
ball = pygame.image.load("PYG02-ball.gif")
ballRect = ball.get_rect()
fps = 100
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT: # 如果减为零就不用减了
speed[0] == speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] -1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] -1
elif event.key == pygame.K_DOWN:# 如果减为零就不用减了
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1]
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
ballRect = ballRect.move(speed[0], speed[1])
if ballRect.left < 0 or ballRect.right > width:
speed[0] = -speed[0]*abs(math.cos(ballRect.left))
if ballRect.top < 0 or ballRect.bottom > height:
speed[1] = -speed[1]
screen.fill(BLACK)
screen.blit(ball, ballRect)
pygame.display.update()
fclock.tick(fps)