B1 · 第27集 · 5:11
Pyxel游戏开发入门
本集讲解Pyxel框架中update与draw函数的作用,以及如何用btnp检测按键、用cls清屏、用rect绘制图形。
来源:jmbarbier / peertube.solidev.net · 许可:CC BY-SA 4.0
字幕
Donc c'est pour ça, c'est décomposé en deux parties.
因此,原因就在于此,它被分成了两个部分。
Logiquement, les opérations un peu lourdes, on va les faire dans update.
从逻辑上讲,较耗资源的操作,我们放在 update 函数中执行。
Et puis draw, c'est juste vraiment des appels de fonctions de dessin pour dessiner
而 draw 函数,仅负责调用绘图函数,
ce qui a été décidé dans update.
绘制在 update 中已确定的内容。
PixelRun, on lance le jeu et on lui fournit comme argument,
PixelRun:我们启动游戏时,需向它传入参数——
donc l'argument de la fonction run ici,
也就是此处 run 函数的参数,
c'est la fonction update qui est là et la fonction draw qui est là.
即这里的 update 函数和 draw 函数。
Qu'est- ce qui se passe dans ces fonctions?
那么,这些函数内部究竟发生了什么?
Le programme tourne.
程序开始运行。
Et il fait une boucle update draw, update draw,
它不断循环执行 update 和 draw,
à plusieurs dizaines de fois par seconde.
每秒数十次。
Donc update draw, update draw, update draw,
update、draw,update、draw,update、draw……
et c'est cette boucle de update draw qui fait que votre jeu se lance et que vous
正是这个 update-draw 循环,
allez pouvoir jouer à l'intérieur.
让游戏得以启动,并让您能进入其中游玩。
programmer un comportement de jeu à l'intérieur.
您还可以在其中编写游戏行为逻辑。
Donc si on regarde qu'est- ce qui se passe, le update, on a juste ici un
我们来看 update 函数里发生了什么:这里只有一行代码——
pixel btnpa. Alors qu'est- ce que c'est que btnp?
pixel.btnp()。那么 btnp 是什么呢?
Vous pouvez les regarder dans la documentation, BNP, ça fait partie des.
您可在文档中查阅:BNP 属于……
chose qui permet de regarder si un bouton a été pressé.
用于检测某个按键是否被按下的功能之一。
Je peux aussi regarder dans la doc de Pixel.
我也可以查阅 Pixel 的文档。
BTNP. renvoie vrai si la touche qui, donc la touche qui est
btnp 返回 true,表示当前时刻,
donnée en premier argument
第一个参数所指定的按键,
est enfoncé à cet instant sinon ça renvoie false et
正处于按下状态;否则返回 false。
après il y a des arguments quand on a un argument comme ça entre crochets c'est
另外,当某个参数用方括号标注时,
qu'il est optionnel vous pouvez ne pas le mettre si vous le précisez hold et repeat
说明它是可选的:您可以省略它;若指定 hold 和 repeat 参数,
c'est pendant que la touche a été enfoncée pendant plus de n images
则表示:当该按键持续按下超过 n 帧时,
et Dans ce cas- là, pendant un certain nombre d'images,
在接下来的若干帧内,
on va renvoyer que vrai ou pas.
函数将持续返回 true 或 false。
Si vous voulez avoir la liste des touches,
如果您想查看按键列表,
voilà la liste des touches.
这就是按键列表。
Donc pixel point, si vous voulez tester par exemple si c'est la page F12 qui a été
接下来是 pixel.point 函数:比如您想测试是否按下了 F12 键,
faite, pixel point qui F12.
就用 pixel.point('F12')。
Là ici, on va tester.
这里我们将进行测试。
Q. Donc, qu'est- ce qui se passe dans le update?
Q 键。那么,在 update 函数中会发生什么?
Ici on a le if, le pixel bouton, donc on vérifie si le bouton,
这里有个 if 语句和 pixel.button 函数,用于检测某个按键,
la touche du clavier est enfoncée, quelle touche?
即键盘上的某个键,是否被按下?
Q. Dans ce cas- là, si la touche Q est enfoncée, pixel quit,
Q 键。此时,如果按下了 Q 键,就执行 pixel.quit,
on va quitter le jeu.
游戏就会退出。
De l'autre côté, on a la fonction draw.
另一部分是 draw 函数。
Qu'est- ce qui va se passer dans la fonction draw?
draw 函数中会执行什么操作?
Pixel CLS. Qu'est- ce que ça veut dire CLS?
pixel.CLS。CLS 是什么意思?
C'est pareil, on va regarder la documentation.
同样地,我们查阅文档。
efface l'écran avec la couleur col.
用颜色 col 清空屏幕。
Donc on va effacer l'écran avec la couleur.
因此,我们将用指定颜色清空屏幕。
Alors quelles sont les couleurs de pixel?
那么,pixel 支持哪些颜色呢?
Vous avez ici la liste des couleurs: 0, 1, 2, 3, 4, 5, 6, 7,
您可以看到颜色编号列表:0、1、2、3、4、5、6、7,
8, 9, 10. Donc imaginez par exemple que je veux avoir un arrière- plan qui est
8、9、10。例如,我想设置一个淡紫色的背景,
légèrement violet, je vais mettre 1.
就选用编号 1。
Donc pixel CLS, zéro c'était noir, je vais mettre un.
所以 pixel.CLS 中,0 表示黑色,我将改为 1。
Et ensuite après on a toutes les fonctions de dessin,
之后,我们调用所有绘图函数,
rect, donc ici rectangle pour créer un rectangle,
比如 rect(矩形),用于绘制矩形,
vous avez ça dans la documentation ici, rect.
文档里有说明,就在这个 rect 条目下。
Il est là, la position X, la position Y, donc le
它在这里:X 坐标、Y 坐标,
coin en haut à gauche du rectangle, with la largeur, height la hauteur,
即矩形左上角的位置、width(宽度)、height(高度),
et col la couleur.
以及 col(颜色)。
Donc vous pouvez avoir un rectangle, vous pouvez faire un cercle,
因此,你可以绘制一个矩形,也可以画一个圆形,
vous pouvez faire une ellipse, vous pouvez
还可以绘制一个椭圆,
colorier une partie d'écran.
还能给屏幕的某一部分上色。
Voilà, donc il y a toutes ces
好了,这些就是所有
possibilités- là pour faire des choses de côté graphique,
用于图形操作的功能选项,
ça c'est vraiment l'anti- sèche.
这简直是速查宝典!
Et si vous voulez avoir le détail,
如果你想了解详细信息,
vous avez ici le très très grand readme qui va tout expliquer,
这里有一份非常非常详尽的说明文档(README),会逐一解释,
comment ça se passe, etc.
比如具体如何运行等。
Vous avez la possibilité de faire aussi du son, de
你还可以添加声音、播放音乐,
jouer de la musique, ça on le verra un peu plus tard.
这部分我们稍后再讲。
Donc si je reviens ici, qu'est- ce qui se passe?
那么,如果我回到这里,会发生什么?
Je suis en train de faire un rectangle à la position 10, 10,
我正在位置(10, 10)处绘制一个矩形,
de taille 20, 20 et de couleur 11.
尺寸为20×20,颜色编号为11。
La couleur 11, c'est...
颜色11是……
Du vert bizarre.
一种奇怪的绿色。
On peut, une fois qu'on a écrit le code,
代码写好后,
lancer le programme en appuyant sur Play. ça prend un certain temps surtout sur les
可以点击‘运行’按钮启动程序;尤其在树莓派上,编译需要一定时间,
Raspberry Pi à compiler et vous avez ici votre espace de jeu et on a bien ici un
然后你就能看到游戏区域:背景是紫色系,
arrière plan dans les violets avec un carré qui a été mis ici.
中间还有一个方块。
Il n'y a rien qui bouge, on a.
目前没有任何动画效果。
Pas de contrôle de jeu si ce n'est d'appuyer sur la touche Q.
除了按Q键退出外,没有其他游戏控制功能。
Et là, appuyer sur la touche Q, vu qu'on est en mode
此时按下Q键,由于当前处于网页模式,
web, ça ne quittera pas grand- chose.
其实并不会真正退出什么。
D'accord? Donc là, ici, l'appui sur la touche,
明白了吗?也就是说,这里的按键操作,
le quit ne sert pas à grand- chose puisqu'on n'est pas sur un jeu,
‘退出’功能几乎没用,因为我们并不是在电脑上运行独立游戏或应用,
une application sur l'ordinateur, mais on est dans le web,
而是运行在网页环境中的,
sur la version web.
即网页版。