初学python和使用pygame遇到的一些问题

原先只学过C,因为很想做点小游戏于是选择了python。单看基础教程感觉不容易记住,决定直接上手写来帮助学习。

我是根据https://eyehere.net/目光博客上的内容进行学习的,这位博主写的很好。

1.gameobject 包

学习用pygame写小游戏,肯定要用到向量库。原博提供的是python2的,CSDN上也有python3的,链接在这。

https://blog.csdn.net/qq_40773512/article/details/83189384

下载之后需要通过源码进行安装,安装的办法如下

https://blog.csdn.net/qq_34104395/article/details/80209574

通过setup.py安装模块

现在终于可以在安装的库列表里看到它了

初学python和使用pygame遇到的一些问题

2.用一个完成的程序测试一下

好,现在我们运行一下目光博客里的教程:用Python和Pygame写游戏-从入门到精通(9)里最后一段的代码

(这一段可以直接在这个网址https://eyehere.net/2011/python-pygame-novice-professional-9/里找到)

初学python和使用pygame遇到的一些问题

然后就出现了问题

from gameobjects.vector2 import *

在编译这句话的时候,运行框报错,说“No module named 'gameobjects'”

百度上的办法

初学python和使用pygame遇到的一些问题

没有任何卵用

我要的就是gameobjects里的vector2啊,你给我pygame.math的干啥

因为我是刚刚开始学python,对这个语法一点都不熟悉,然后我鼠标移动上去,发现确实找不到这个模块,就想是不是识别不了这个路径呢

于是我就搜索,发现pycharm编译的时候对于库的搜索是这样的。它搜索的路径在sys这个模块里头初学python和使用pygame遇到的一些问题

然后你得看看你安装的gameobjects的路径是不是在这些路径里,如果不是,就添加一下。

(我自己本人已经安装在site-packages这个文件夹里了,和其他模块在一起但是不知道为啥一开始不识别,我就手动添加...site-packages\\gameobjects这个路径,然后就行了。如果还不行,建议先把这个模块卸载干净再装一遍,再添加路径重启pycharm或者你的其他IDE,应该就能行。)

现在你的代码应该不会再报这个错误,会报一个新错误

TypeError: unsupported operand type(s) for /: 'Vector2' and 'int'

初学python和使用pygame遇到的一些问题

它的意思是说Vector2返回的值和整形数据2不能做除法

问题来了,调用完函数返回的值是什么数据类型呢?然后我去翻,翻到了调用的函数(原谅我不太了解python,这个东西好像叫方法还是什么的),python和C很不一样的一点就是它能return多个值。

def get_size(self):

    """Retrieves the size of the grid as a tuple (width, height)."""

    return self.width, self.height

这段代码告诉我们,调用完后返回了两个值,并且是以元组的形式。在python里,元组不能做除法和减法,所以当然不能/2

那我们就乘嘛!

于是我修改了一下,把

destination = (Vector2(*pygame.mouse.get_pos()) - Vector2(*sprite.get_size()) /2)

改成了

destination = (Vector2(*pygame.mouse.get_pos()) - Vector2(*sprite.get_size()) *2)

OK!咱们终于把这个例子跑起来了,效果就是小鱼会跟着你的鼠标动