Índice
7. Variáveis globais e variáveis locais
1. A diferença entre variáveis globais e variáveis locais
2. Como usar variáveis globais em funções
8. Função de papel e função de janela
O que é pgzero?
O Python possui uma grande variedade de bibliotecas de terceiros em vários campos. Pygame é uma biblioteca de aplicativos do Python no campo do jogo, que pode ser usada para desenvolver vários jogos. Mas para iniciantes, ainda existem certos limites.
O pgzero (pygame zero) que quero compartilhar com vocês hoje é mais um pacote baseado no pygame, que torna muito conveniente o design de um jogo, especialmente adequado para o ensino na área de programação infantil e complementa o scratch.
instalação do pgzero
pip install pygame
pip install pgzero
Isso é o que chamamos de: download do terminal pgzero library
Após a instalação, crie um novo documento de texto. Para abrir digite o seguinte código:
import pgzrun
pgzrun go()
Altere o nome abaixo para .py e a codificação para UTF-8
Em seguida, clique em salvar
Encontre este arquivo, clique em:
Você encontrará:
4. O início oficial!
1. Ajuste a cor de fundo
Código de exemplo:
import pgzrun
def draw():
screen.fill((225,225,225))
pgzrun.go()
2. Importar papéis
Código de exemplo:
import pgzrun
zy = Actor('zy.png')
def draw():
zy.draw()
pgzrun.go()
#也可以用draw()功能画出背景图
Obs: Você deve criar uma nova pasta de imagens no mesmo diretório do arquivo, e colocar todas as imagens dos personagens (devem estar em formato png) nela!
3. Eventos do mouse
1. Código básico:
import pgzrun
def on_mouse_down():
#代码
pgzrun.go()
2. Obtenha a posição do mouse:
import pgzrun
def on_mouse_down(pos):
print(pos)
pgzrun.go()
3. Pressione o botão esquerdo ou direito do mouse:
import pgzrun
def on_mouse_down(button):
print(button)
pgzrun.go()
E o resultado da saída é:
mouse.LEFT#左键
#或者是:
mouse.RIGHT#右键
5. Evento chave
1. Função
A função de pressionar a tecla é on_key_down(), e a função de liberar a tecla é on_key_up() (também pode ser escrita em update() (atualizar a função de interface do jogo))
2. Teclas numéricas
A expressão das teclas numéricas em pgzero é: keyboard.K_1~8
3. Teclas de letras
O método de representação das teclas de letras é: keyboard.K_A~Z
4. Teclas de função
O método de expressão da tecla de função é: keyboard.K_(tecla de função (maiúsculas))
5. Quando o botão é pressionado, ocorre um evento
Código de amostra:
import pgzrun
def on_key_down():
if keyboard.K_1:
#代码
pgzrun.go()
6. Função de atualização
1. Atributos do personagem
Antes de falar sobre a função de atualização, deixe-me falar sobre os atributos do personagem.
Existem vários tipos de atributos de caracteres: orientação, imagem, etc.
Os atributos da classe de orientação são: x (coordenada x), y (coordenada y), bottom (linha inferior), top (linha superior), esquerda (linha esquerda), direita (linha direita)
Os atributos da classe picture são: image (imagem)
2. Introdução da função
A função de atualização é a função update(). Ele é como um loop while, usado para movimento de obstáculos e outros aspectos dos jogos de corrida. Quando o programa chamar a função update() uma vez, ele chamará a função draw() novamente!
Demonstração do código:
import pgzrun
zy = Actor('zy.png')
def draw():
zy.draw()
def update():
#让角色zy上升
zy.x += 3
pgzrun.go()
7. Variáveis globais e variáveis locais
Código de exemplo:
p1 = '手机'
def home():
p2 = '座机'
home()
1. A diferença entre variáveis globais e variáveis locais
Se houver uma função def em um programa, a variável global será uma variável fora da função def. Essa é a variável p1 no código de exemplo. Uma variável local é uma variável dentro de uma função e só pode ser usada dentro da função. Essa é a variável p2 no código de amostra.
2. Como usar variáveis globais em funções
Se você alterar um pouco o código de exemplo:
p = '手机'
def home():
p = ‘座机’
home()
print(p)
#那么输出结果是:
#手机
#如何不在home功能内使用print语句也能输出 座机 呢?
Você vê os requisitos agora. Se você quiser usar variáveis fora da função na função, você deve inseri-la na linha abaixo da instrução def:
global (variável global)
Dessa forma, o valor da variável global p é alterado para um telefone fixo e a saída também é um telefone fixo.
Nota: Este ponto de conhecimento deve ser lembrado, pois este conhecimento será muito comum.
8. Função de papel e função de janela
1. Função do papel
Funções de personagem são funções para criação de personagem, como um personagem tocando outro personagem e um personagem tocando um ponto na janela do jogo.
1, função colidir ()
A função colliderect() é para determinar se o personagem colide com outro personagem.
Código de amostra:
import pgzrun
player1 = Actor('1.png',[400,300])
player2 = Actor('2.png',[400,250])
def draw():
player1.draw()
player2.draw()
if player1.colliderect(player2):#角色1.colliderect(角色2)(也可以这样:角色1.colliderect(角色2))
exit()#退出游戏
2, função de ponto de colisão ()
A função de collidepoint() é julgar se o personagem colide com um ponto.
Código de amostra:
import pgzrun
player1 = Actor('1.png)
2. Função de janela
9, fim
Compartilhe um código feito com pygame
#友情提示:请不要更改任何代码,谢谢!
import pgzrun
WIDTH = 1136
HEIGHT = 640
TITLE = 'P1 VS P2'
global bossX
bossX = 10
global zyX
zyX = 10
bg = Actor('bg.png')
zy = Actor('zy.png', [200, 420])
boss = Actor('boss.png', [900, 420])
def draw():
bg.draw()
zy.draw()
boss.draw()
# 写角色名字
screen.draw.text('P1:' + str(zyX), [180, 30],fontsize=30,color='red')
screen.draw.text('P2:' + str(bossX), [850, 30],fontsize=30,color='blue')
#判断胜负
if bossX == 0:
print('P1玩家获胜')
exit()
elif zyX == 0:
print('P2玩家获胜')
exit()
def update():
# 判断壮猿移动
if keyboard.K_A:
zy.x = 200
if keyboard.K_D:
zy.right = 558
# 判断boss移动
if keyboard.K_LEFT:
boss.left = 548
if keyboard.K_RIGHT:
boss.x = 900
# 判断壮猿攻击、防御状态时,切换图片
if keyboard.K_W:
zy.image = 'zy1.png'
elif keyboard.K_S:
zy.image = 'zy2.png'
else:
zy.image = 'zy.png'
# 判断boss攻击、防御状态时,切换图片
if keyboard.K_UP:
boss.image = 'boss1.png'
elif keyboard.K_DOWN:
boss.image = 'boss2.png'
else:
boss.image = 'boss.png'
# 判断壮猿是否和boss发生碰撞
if zy.colliderect(boss):
if zy.image == 'zy1.png' and boss.image == 'boss.png':
boss.x += 250
global bossX
bossX -= 1
if boss.image == 'boss1.png' and zy.image == 'zy.png':
zy.x -= 250
global zyX
zyX -= 1
if zy.image == 'zy1.png' and boss.image == 'boss1.png':
zy.x -= 250
boss.x += 250
pgzrun.go()
#行数自己数!