# 设置全屏以及按esc键退出
import sys
import pygame
pygame.init()
vInfo=pygame.display.Info()
size=width,height=vInfo.current_w,vInfo.current_h
# print(pygame.display.Info())
screen=pygame.display.set_mode(size,pygame.FULLSCREEN) # 将窗口显示到屏幕上
# print(pygame.display.Info()) # 在set_mode前后调用是有区别的
pygame.display.set_caption("Pygame壁球") # 设置壁球
# color=(0,0,0) # 设置刷新的颜色
black=0,0,0
ball=pygame.image.load("ball.png") # 加载图片
"""
这里的ball可以理解为surface对象,对象.get_rect()可以形成一个和对象内切的一个对象
这样就可以方便的使用坐标了
"""
ballrect=ball.get_rect() # 获取矩形区域
fps=300 # 1秒钟小球运行300个像素
fclock=pygame.time.Clock()
speed=[1,1] # 设置移动的X轴,Y轴的矩形 左上角的坐标是(0,0)
# clock=pygame.time.Clock() # 设置时钟
"""
运行上述代码,会出现一个一闪而过的黑色窗口,这是因为程序执行完成后,会自动关闭,如果让窗口一直显示,需要
使用while True让程序一直执行,此外,还需要设置关闭按钮
"""
while True:
# clock.tick(60) # 每秒执行60次
# 检查事件
for event in pygame.event.get():
if event.type==pygame.QUIT: # 如果单机关闭窗口,则退出
sys.exit()
elif event.type==pygame.KEYDOWN:
if 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] # 这里的0代表的是第一个索引,不是速度为0
# 碰到上下边缘
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(black) # 填充颜色
screen.blit(ball,ballrect) # 将图片画到那个矩形区域里面
fclock.tick(fps)
pygame.display.update() # 更新全部显示
# pygame.quit()
窗口可以伸缩
import sys
import pygame
pygame.init()
size=width,height=640,480 # 设置窗口的大小
# print(pygame.display.Info())
screen=pygame.display.set_mode(size) # 将窗口显示到屏幕上
# print(pygame.display.Info()) # 在set_mode前后调用是有区别的
pygame.display.set_caption("Pygame壁球") # 设置壁球
# color=(0,0,0) # 设置刷新的颜色
black=0,0,0
ball=pygame.image.load("ball.png") # 加载图片
"""
这里的ball可以理解为surface对象,对象.get_rect()可以形成一个和对象内切的一个对象
这样就可以方便的使用坐标了
"""
ballrect=ball.get_rect() # 获取矩形区域
fps=300 # 1秒钟小球运行300个像素
fclock=pygame.time.Clock()
speed=[1,1] # 设置移动的X轴,Y轴的矩形 左上角的坐标是(0,0)
# clock=pygame.time.Clock() # 设置时钟
"""
运行上述代码,会出现一个一闪而过的黑色窗口,这是因为程序执行完成后,会自动关闭,如果让窗口一直显示,需要
使用while True让程序一直执行,此外,还需要设置关闭按钮
"""
while True:
# clock.tick(60) # 每秒执行60次
# 检查事件
for event in pygame.event.get():
if event.type==pygame.QUIT: # 如果单机关闭窗口,则退出
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] # 这里的0代表的是第一个索引,不是速度为0
# 碰到上下边缘
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(black) # 填充颜色
screen.blit(ball,ballrect) # 将图片画到那个矩形区域里面
fclock.tick(fps)
pygame.display.update() # 更新全部显示
# pygame.quit()
设置窗口图标
感知窗口是否被图表化
图标化,最小化返回false
Pygame提供了两个刷新屏幕的函数
filp函数将重新绘制正在屏幕对应的窗口
update()仅仅绘制窗口中有变化的区域
所以update执行的速度更快
import sys
import pygame
pygame.init()
size=width,height=640,480 # 设置窗口的大小
# print(pygame.display.Info())
screen=pygame.display.set_mode(size) # 将窗口显示到屏幕上
# print(pygame.display.Info()) # 在set_mode前后调用是有区别的
pygame.display.set_caption("Pygame壁球") # 设置壁球
# color=(0,0,0) # 设置刷新的颜色
black=0,0,0
ball=pygame.image.load("ball.png") # 加载图片
"""
这里的ball可以理解为surface对象,对象.get_rect()可以形成一个和对象内切的一个对象
这样就可以方便的使用坐标了
"""
ballrect=ball.get_rect() # 获取矩形区域
fps=300 # 1秒钟小球运行300个像素
fclock=pygame.time.Clock()
speed=[1,1] # 设置移动的X轴,Y轴的矩形 左上角的坐标是(0,0)
# clock=pygame.time.Clock() # 设置时钟
"""
运行上述代码,会出现一个一闪而过的黑色窗口,这是因为程序执行完成后,会自动关闭,如果让窗口一直显示,需要
使用while True让程序一直执行,此外,还需要设置关闭按钮
"""
while True:
# clock.tick(60) # 每秒执行60次
# 检查事件
for event in pygame.event.get():
if event.type==pygame.QUIT: # 如果单机关闭窗口,则退出
sys.exit()
elif event.type==pygame.VIDEORESIZE:
size=width,height=event.size[0],event.size[1]
screen=pygame.display.set_mode(size,pygame.RESIZABLE)
# 设置图标最小化
if pygame.display.get_active():
ballrect=ballrect.move(speed[0],speed[1]) # 移动小球
# 碰到左右边缘
if ballrect.left<0 or ballrect.right>width:
speed[0]=-speed[0] # 这里的0代表的是第一个索引,不是速度为0
# 碰到上下边缘
if ballrect.top<0 or ballrect.bottom>height:
speed[1]=-speed[1]
screen.fill(black) # 填充颜色
screen.blit(ball,ballrect) # 将图片画到那个矩形区域里面
fclock.tick(fps)
pygame.display.update() # 更新全部显示
# pygame.quit()