def __init__(self):
self.parameters = Parameters("Config/default.ini")
if isfile("Config/config.ini") :
self.parameters.Load("Config/config.ini")
# screen mode
screenMode = self.parameters["screenMode"]
if(screenMode == Screen_mode.Fullscreen) :
args = pygame.HWSURFACE | pygame.FULLSCREEN | pygame.DOUBLEBUF
elif(screenMode == Screen_mode.Borderless) :
os.environ['SDL_VIDEO_WINDOW_POS'] = '0,0'
args = pygame.NOFRAME
else:
args = 0
os.environ["SDL_VIDEO_CENTERED"] = "1"
# window icon
self.icon = pygame.image.load("Assets/icon.png")
self.icon = pygame.transform.scale(self.icon, (32, 32))
pygame.display.set_icon(self.icon)
# window parameters
self.width = self.parameters["windowWidth"]
self.height = self.parameters["windowHeight"]
# some managers and important things
self.screen = pygame.display.set_mode((self.width, self.height), args)
pygame.display.set_caption("Lovely Space")
self.clock = pygame.time.Clock()
self.input = input.Input(self)
self.audio = audio.Audio()
self.size = size.Size(self.width, self.height, 1920, 1080)
# a random font
self.fpsFont = pygame.font.SysFont("Arial", 25)
# drunk shit
self.iniPosition = pygame.math.Vector2(0, 200)
self.drunkY = 1
self.drunkX = 1
# pause things
self.pause = None
self.isPaused = False
self.mode = titlescreen.TitleScreen(self)
#self.mode = game.Game(self)
python类DOUBLEBUF的实例源码
def _get_screen(xwin=False):
"""Initializes a new pygame screen using the framebuffer"""
if display_mocked:
xwin = True
# Based on "Python GUI in Linux frame buffer"
# http://www.karoltomala.com/blog/?p=679
disp_no = os.getenv("DISPLAY")
if disp_no:
logging.info("Running under X display %s", disp_no)
# Make sure that SDL_VIDEODRIVER is set
if xwin:
driver = 'x11'
else:
driver = 'directfb' # alternatives: 'fbcon', 'svgalib'
if not os.getenv('SDL_VIDEODRIVER'):
os.putenv('SDL_VIDEODRIVER', driver)
try:
pygame.display.init()
except pygame.error:
logging.exception("Display init failed using driver: %s", driver)
raise
if xwin:
size = (320, 200)
options = 0
else:
# fullscreen
info = pygame.display.Info()
size = (info.current_w, info.current_h)
logging.info("Framebuffer size: %d x %d", size[0], size[1])
options = pygame.FULLSCREEN | pygame.DOUBLEBUF
screen = pygame.display.set_mode(size, options)
# Clear the screen to start
screen.fill((0, 0, 0))
pygame.mouse.set_visible(False)
# Render the screen
pygame.display.update()
return screen
def show(Runner, arg=None, fps=24, rows=17, cols=165, scale=8, withArgs=False):
import pygame, sys
FPS = fps
fpsClock = pygame.time.Clock()
board_dimensions = (cols, rows)
#yep
disp_size = (cols * scale, rows * scale)
pygame.init()
screen_opts = pygame.RESIZABLE | pygame.DOUBLEBUF
screen = pygame.display.set_mode(disp_size, screen_opts)
changed = False
if arg is None:
runner = Runner(board_dimensions)
else:
runner = Runner(board_dimensions, arg)
font = pygame.font.Font('slkscr.ttf', 32)
while True:
events = pygame.event.get()
for e in events:
if e.type == pygame.QUIT:
sys.exit()
if e.type == pygame.VIDEORESIZE:
disp_size = e.dict['size']
screen = pygame.display.set_mode(disp_size, screen_opts)
screen.fill((0, 0, 0))
# draw the pixels
txts = ["FPS: {0:.2f}".format(fpsClock.get_fps())]
if withArgs:
pixels, txt = runner.run(events)
txts.append(txt)
else:
pixels = runner.run()
if type(pixels) is tuple:
pixels, txt = pixels
txts.append(txt)
temp_surface = pygame.Surface(board_dimensions)
pygame.surfarray.blit_array(temp_surface, pixels)
pygame.transform.scale(temp_surface, disp_size, screen)
i = 1
for txt in txts:
for line in txt.splitlines():
screen.blit(font.render(line.replace('[', '').replace(']', '').strip(), 1, (255, 255, 255)),
(30, 30 * i))
i += 1
pygame.display.flip()
fpsClock.tick(FPS)
def main():
pygame.init()
size = 800, 600
pygame.display.set_mode(size, pygame.DOUBLEBUF | pygame.OPENGL)
io = imgui.get_io()
io.fonts.add_font_default()
io.display_size = size
renderer = PygameRenderer()
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
renderer.process_event(event)
imgui.new_frame()
if imgui.begin_main_menu_bar():
if imgui.begin_menu("File", True):
clicked_quit, selected_quit = imgui.menu_item(
"Quit", 'Cmd+Q', False, True
)
if clicked_quit:
exit(1)
imgui.end_menu()
imgui.end_main_menu_bar()
imgui.show_test_window()
imgui.begin("Custom window", True)
imgui.text("Bar")
imgui.text_colored("Eggs", 0.2, 1., 0.)
imgui.end()
# note: cannot use screen.fill((1, 1, 1)) because pygame's screen
# does not support fill() on OpenGL sufraces
gl.glClearColor(1, 1, 1, 1)
gl.glClear(gl.GL_COLOR_BUFFER_BIT)
imgui.render()
pygame.display.flip()
def __init__(self):
pygame.init()
# Used to manage how fast the screen updates
self._clock = pygame.time.Clock()
# Set the width and height of the screen [width, height]
self._infoObject = pygame.display.Info()
self._screen = pygame.display.set_mode(
(self._infoObject.current_w >> 1, self._infoObject.current_h >> 1),
pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE, 32
)
pygame.display.set_caption("Guess your Age!")
# Loop until the user clicks the close button.
self._done = False
# Kinect runtime object, we want only color and body frames
if PyKinectRuntime and USE_KINECT:
self._kinect = PyKinectRuntime.PyKinectRuntime(
PyKV2.FrameSourceTypes_Color |
PyKV2.FrameSourceTypes_Body
)
frame_dimension = (
self._kinect.color_frame_desc.Width,
self._kinect.color_frame_desc.Height
)
else:
self._kinect = None
frame_dimension = 800, 600
# back buffer surface for getting Kinect color frames, 32bit color,
# width and height equal to the Kinect color frame size
self._frame_surface = pygame.Surface(frame_dimension, 0, 32)
# here we will store skeleton data
self._bodies = None
self._stored_bodies = {}
self._faces = []
self._face_bodies = []
self._update_oxford = 0
self.python_logo_image = pygame.image.load('pylogo.png')
self.msft_logo_image = pygame.image.load('microsoftlogo.png')
self.bg_color = pygame.Color(55, 117, 169)
def __init__(self, text, width=640, height=400, fps=30, textcolor=(0,0,255),
bgcolor=(255,255,255), font=('mono', 24, True), new_init=True, bg_filename=None):
"""Initialize pygame, window, background, font,...
default arguments
"""
#pygame.mixer.pre_init(44100, -16, 2, 2048)
if new_init:
pygame.init()
#jump = pygame.mixer.Sound(os.path.join('data','jump.wav')) #load sound
#self.sound1 = pygame.mixer.Sound(os.path.join('data','Pickup_Coin.wav'))
#self.sound2 = pygame.mixer.Sound(os.path.join('data','Jump.wav'))
#self.sound3 = pygame.mixer.Sound(os.path.join('data','mix.wav'))
pygame.display.set_caption("Press ESC to quit, curosr keys / PgUp, PgDown to scroll")
self.text = text
self.bgcolor = bgcolor
self.textcolor = textcolor
self.lines = text.split("\n")
self.width = width
self.height = height
self.screen = pygame.display.set_mode((self.width, self.height), pygame.DOUBLEBUF)
self.background = pygame.Surface(self.screen.get_size()).convert()
if bg_filename is None:
self.background.fill(self.bgcolor) # fill background white
else:
try:
print("i try to load:", bg_filename)
self.background = pygame.image.load(bg_filename)
self.background = pygame.transform.scale(self.background, (self.width, self.height))
except:
print("exception while processing:", bg_filename)
self.background.fill(self.bgcolor) # fill background white
self.clock = pygame.time.Clock()
self.fps = fps
self.playtime = 0.0
self.offset_y = self.height - 10
self.x = 100
self.dy = 50
self.text_height = len(self.lines) * self.dy
self.bold = font[2]
self.font = pygame.font.SysFont(font[0], font[1], self.bold)