一、pygame的窗口制作
开发环境是vscode 1.43.0 python版本是3.7.6
代码
import pygame
from pygame.locals import *
import sys
def hello_world():
pygame.init()
pygame.display.set_mode((640,480))
pygame.display.set_caption(“hello world”)
while True:
for event in pygame.event.get():
if event.typeQUIT:
pygame.quit()
sys.exit()
pygame.display.update()
if name"main":
hello_world()
运行截图
二、游戏案例1:坦克大战
参考代码
import pygame,sys
from pygame.locals import *
def play_tank():
pygame.init()
window_size=(width,height)=(640,480)
speed=[1,1]
color_white=(255,255,255)
screen=pygame.display.set_mode(window_size)
pygame.display.set_caption(“坦克大战”)
tank_image=pygame.image.load(r’tankU.bmp’)
tank_rect=tank_image.get_rect()
while True:
for event in pygame.event.get():
if event.typepygame.QUIT:
pygame.quit()
sys.exit()
tank_rect=tank_rect.move(speed)
if(tank_rect.left<0) or (tank_rect.right>width):
speed[0]=-speed[0]
if(tank_rect.top<0) or (tank_rect.bottom>height):
speed[1]=-speed[1]
screen.fill(color_white)
screen.blit(tank_image,tank_rect)
pygame.display.update()
if name"main":
play_tank()
完善代码
import pygame,sys
from pygame.locals import *
def play_tank():
pygame.init()
window_size=(width,height)=(640,480)
speed=[1,1]
color_white=(255,255,255)
screen=pygame.display.set_mode(window_size)
pygame.display.set_caption(“坦克大战”)
tank_image=pygame.image.load(r’tankU.bmp’)
tank_rect=tank_image.get_rect()
while True:
for event in pygame.event.get():
if event.typepygame.QUIT:
pygame.quit()
sys.exit()
tank_rect=tank_rect.move(speed)
if(tank_rect.left<0) or (tank_rect.right>width):
speed[0]=-speed[0]
if(tank_rect.top<0) or (tank_rect.bottom>height):
speed[1]=-speed[1]
screen.fill(color_white)
screen.blit(tank_image,tank_rect)
pygame.display.update()
if name"main":
play_tank()
运行截图
三、精灵类测试
参考代码
import pygame,sys
pygame.init()
class Tank(pygame.sprite.Sprite):
def init(self,filename,initial_position):
pygame.sprite.Sprite.init(self)
self.image=pygame.image.load(filename)
self.rect=self.image.get_rect()
self.rect.bottomright=initial_position
screen=pygame.display.set_mode([640,480])
screen.fill([255,255,255])
fi=‘tankU.bmp’
b=Tank(fi,[150,100])
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(b.image,b.rect)
pygame.display.update()
运行截图
完善代码
import pygame
from pygame.locals import *
class MySprite(pygame.sprite.Sprite):
def init(self,target):
pygame.sprite.Sprite.init(self)
self.sprite_surface=target
self.image=None
self.master_image=None
self.rect=None
self.topleft=0,0
self.frame=0
self.old_fram=-1
self.fram_width=1
self.fram_height=1
self.first_fram=0
self.last_fram=0
self.columns=1
self.last_time=0
def load(self,filename,width,height,columns):
self.master_image=pygame.image.load(filename).convert_alpha()
self.fram_width=width
self.fram_height=height
se