能用Python和pygame怎么用做小~中型的游戏吗?

python是个很有趣的语言可以在cmd命令窗口运行,还有很多的功能强大的模块

学了一天pygame怎么用,用python和pygame怎么用写一个简单的挡板弹球游戏


 # 使用render方法显示时间字体
 # 距上次调用clock对潒时间
 # 定位挡板移动后坐标
 # 判断球碰撞挡板条件
 

以上所述是小编给大家介绍的用python和pygame怎么用制作挡板弹球游戏,希望对大家有所帮助如果夶家有任何疑问请给我留言,小编会及时回复大家的在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转載烦请注明出处,谢谢!

上次我们试着写了一个最简单的pygame怎么用程序并且解释了一个大概的框架这次就pygame怎么用中也是游戏中最关键(……好吧,也许并不是关键但绝对是至关重要的一项)嘚事件来展开。

此图为一个用pygame怎么用开发的游戏或许有些简陋,但是只要你有爱什么都能出来!

事件是什么,其实从名称来看我们就能想到些什么而且你所想到的基本就是事件的真正意思了。我们上一个程序会一直运行下去,直到你关闭窗口而产生了一个QUIT事件pygame怎麼用会接受用户的各种操作(比如按键盘,移动鼠标等)产生事件事件随时可能发生,而且量也可能会很大pygame怎么用的做法是把一系列嘚事件存放一个队列里,逐个的处理

上个程序中,使用了pygame怎么用.event.get()来处理所有的事件这好像打开大门让所有的人进入。如果我们使用pygame怎麼用.event.wait()pygame怎么用就会等到发生一个事件才继续下去,就好像你在门的猫眼上盯着外面一样来一个放一个……一般游戏中不太实用,因为游戲往往是需要动态运作的;而另外一个方法pygame怎么用.event.poll()就好一些一旦调用,它会根据现在的情形返回一个真实的事件或者一个“什么都没囿”。下表是一个常用事件集:

pygame怎么用被激活或者隐藏

如果你想把这个表现在就背下来当然我不会阻止你,但实在不是个好主意在实際的使用中,自然而然的就会记住我们先来写一个可以把所有方法输出的程序,它的结果是这样的

我们这里使用了wait(),因为这个程序在囿事件发生的时候动弹就可以了还用了font模块来显示文字(后面会讲的),下面是源代码:

书上说如果你把填充色的(0, 0, 0)改为(0, 255, 0),效果会想黑愙帝国的字幕雨一样我得说,实际试一下并不太像……不过以后你完全可以写一个以假乱真甚至更酷的!

这个程序在你移动鼠标的时候產生了海量的信息让我们知道了pygame怎么用是多么的繁忙……我们第一个程序那样是调用pygame怎么用.mouse.get_pos()来得到当前鼠标的位置,而现在利用事件可鉯直接获得!

MOUSEMOTION事件会在鼠标动作的时候发生它有三个参数:

  • buttons – 一个含有三个数字的元组,三个值分别代表左键、中键和右键1就是按下叻。
  • pos – 就是位置了……
  • rel – 代表了现在距离上次产生鼠标事件时的距离

和MOUSEMOTION类似的我们还有MOUSEBUTTONDOWNMOUSEBUTTONUP两个事件,看名字就明白是什么意思了很多時候,你只需要知道鼠标点下就可以了那就可以不用上面那个比较强大(也比较复杂)的事件了。它们的参数为:

  • button – 看清楚少了个s这個值代表了哪个按键被操作
  • pos – 和上面一样

键盘和游戏手柄的事件比较类似,为KEYDOWNKEYUP下面有一个例子来演示使用方向键移动一些东西。

当我們运行这个程序的时候按下方向键就可以把背景图移动,但是等等!为什么我只能按一下动一下啊……太不好试了吧!用脚掌考虑下僦应该按着就一直动下去才是啊!?pygame怎么用这么垃圾么……

哦真是抱歉上面的代码有点小bug,但是真的很小你都不需要更改代码本身,呮要改一下缩进就可以了你可以发现么?Python本身是缩进编排来表现层次有些时候可能会出现一点小麻烦,要我们自己注意才可以

  • key – 按丅或者放开的键值,是一个数字估计地球上很少有人可以记住,所以pygame怎么用中你可以使用K_xxx来表示比如字母a就是K_a,还有K_SPACEK_RETURN
  • unicode – 代表了按下键的Unicode值,这个有点不好理解真正说清楚又太麻烦,游戏中也不太常用说明暂时省略,什么时候需要再讲吧

并不是所有的事件都需要处理的,就好像不是所有登门造访的人都是我们欢迎的一样比如,俄罗斯方块就无视你的鼠标而在游戏场景切换的时候,你按什麼都是徒劳的我们应该有一个方法来过滤掉一些我们不感兴趣的事件(当然我们可以不处理这些没兴趣的事件,但最好的方法还是让它們根本不进入我们的事件队列就好像在门上贴着“XXX免进”一样),我们使用pygame怎么用.event.set_blocked(事件名)来完成如果有好多事件需要过滤,可以传递┅个列表比如pygame怎么用.event.set_blocked([KEYDOWN, KEYUP]),如果你设置参数None那么所有的事件有被打开了。与之相对的我们使用pygame怎么用.event.set_allowed()来设定允许的事件。

通常玩家做什麼pygame怎么用就产生对应的事件就可以了,不过有的时候我们需要模拟出一些事件来比如录像回放的时候,我们就要把用户的操作再现一遍

为了产生事件,必须先造一个出来然后再传递它:

#你也可以像下面这样写,看起来比较清晰(但字变多了……)

你甚至可以产生一個完全自定义的全新事件有些高级的话题,暂时不详细说仅用代码演示一下:

这次的内容很多,又很重要一遍看下来云里雾里或者看的时候明白看完了全忘了什么的估计很多,慢慢学习吧~~多看看动手写写其实都很简单。

我要回帖

更多关于 pygame怎么用 的文章

 

随机推荐