蓝色天空
创建一个背景为蓝色的Pygame窗口。
#coding:utf-8
import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("蓝色天空")
screen.fill((64,64,255))
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
pygame.display.flip()
报错点:pygame.error: video system not initialized 看导入模块后有没有调用 init 函数以及缩进问题
游戏角色
找一幅你喜欢的游戏角色位图图像或将一幅图像转换为位图。创建一个类,将该角色绘制到屏幕中央,并将该图像的背景色设置为屏幕背景色,或将 屏幕背景色设置为该图像的背景色。
#coding:utf-8
import pygame
class Game:
def __init__(self,screen):
self.screen=screen
self.image=pygame.image.load('1.png').convert_alpha()
self.rect=self.image.get_rect()
self.screen_rect=screen.get_rect()
self.rect.centerx=self.screen_rect.centerx
self.rect.centery=self.screen_rect.centery
self.screen.blit(self.image,self.rect)
pygame.init()
screen=pygame.display.set_mode((1200,800))
pygame.display.set_caption("游戏角色")
screen.fill((64,64,255))
game=Game(screen)
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
pygame.display.flip()
图片png本身背景是透明的
火箭
编写一个游戏,开始时屏幕中央有一个火箭,而玩家可使用四个方向键上下左右移动火箭。请务必确保火箭不会移到屏幕外面。
#coding:utf-8
import pygame
class Rocket:
def __init__(self,screen):
self.screen=screen
self.image=pygame.image.load('2.png').convert_alpha()
self.rect=self.image.get_rect()
self.screen_rect=screen.get_rect()
self.rect.centerx=self.screen_rect.centerx
self.rect.centery=self.screen_rect.centery
self.move_right=False
self.move_left=False
self.move_up=False
self.move_down=False
def check_event(self):
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
elif event.type==pygame.KEYDOWN:
self.check_event_down(event)
elif event.type==pygame.KEYUP:
self.check_event_up(event)
def update(self):
if self.move_right and self.rect.right<self.screen_rect.right:
self.rect.centerx+=1
if self.move_left and self.rect.left>0:
self.rect.centerx-=1
if self.move_up and self.rect.top>0:
self.rect.centery-=1
if self.move_down and self.rect.bottom<self.screen_rect.bottom:
self.rect.centery+=1
def check_event_down(self,event):
if event.key==pygame.K_RIGHT:
self.move_right=True
if event.key==pygame.K_LEFT:
self.move_left=True
if event.key==pygame.K_UP:
self.move_up=True
if event.key==pygame.K_DOWN:
self.move_down=True
def check_event_up(self,event):
if event.key==pygame.K_RIGHT:
self.move_right=False
if event.key==pygame.K_LEFT:
self.move_left=False
if event.key==pygame.K_UP:
self.move_up=False
if event.key==pygame.K_DOWN:
self.move_down=False
def blitme(self):
self.screen.blit(self.image,self.rect)
pygame.init()
screen=pygame.display.set_mode((1200,800))
pygame.display.set_caption("火箭")
rocket=Rocket(screen)
while True:
screen.fill((96,96,96))
rocket.blitme()
rocket.check_event()
rocket.update()
pygame.display.flip()
按键
创建一个程序,显示一个空屏幕。在事件循环中,每当检测到pygame.KEYDOWN 事件时都打印属性event.key 。运行这个程序,并按各种键,看看 Pygame如何响应
#coding:utf-8
import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("按键")
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
elif event.type==pygame.KEYDOWN:
print(event.key)
pygame.display.flip()
出来的是对应的ASCII码
侧面射击
编写一个游戏,将一艘飞船放在屏幕左边,并允许玩家上下移动飞船。在玩家按空格键时,让飞船发射一颗在屏幕中向右穿行的子弹,并在子弹离开 屏幕而消失后将其删除。
#coding:utf-8
import pygame
from pygame