太帅了 发表于 2021-11-4 19:23:54

照着python教程写了个play the ball游戏,做了一点属于自己的小改动

照着小甲鱼书上的教程做了玩个球的小游戏,由于一开始都是看书的,所以素材都是我上网上找的,觉得非常有成就感的就发上来了^_^



主要做了以下的几点改动:
1.两个小球碰撞的过程中应当符合物理定律,而不是产生随机的速度。对于弹性碰撞来讲,两个小球碰撞之后速度应该满足能量守恒和动量守恒,所以我把真实的物理碰撞给实现了,这样也可以杜绝两个小球碰撞过后仍然纠缠不清现象的发生。
2.当摩擦次数达到一定次数的时候小球才会变颜色进入可控状态,之前小甲鱼的变色条件是摩擦频率达到一定范围的时候就可以让小球变色,但是我觉得不好玩。对于真正的钢铁猛男来讲从来都是速度至上的,所谓的控制力在绝对的速度面前都是浮云。只有依靠单身多年的手速疯狂摩擦才能擦出“火花”。
3.我们知道,用户反馈在各种商业化产品中是极其重要的,所以在游戏结束的时候我设置了一个给用户评价的窗口。这样我们才能够吸取用户的反馈不断进步。



废话不多说了,上图:
。。。。
本来想上图的,但是发现我现在还发不了图片T_T。


本来想直接发EXE文件的,但是发现同样的我发不了附件T_T。哈哈哈,纯小白。
只好把代码发上来了,主文件命名为:game.py
素材在这里也不好展示,所以我直接把他们都保存在memory_pic.py文件中。
将他们放在同一个文件夹中,然后运行game.py就好了
由于代码文件过于冗长,于是我就直接转战百度网盘了。






链接:https://pan.baidu.com/s/11ltwS9RisTdGtre5CUISXA
提取码:b0wx

附:
程序的不足之处:

虽然实现了碰撞的“真实化”,但是pygame中对于速度的分辨率实在是有点低,speed要求只能是整数,如果速度存在小数的话会自动取整变成整数,例如我通过二维弹性碰撞模型计算出其中一个小球的速度是(1.5,1),程序会自动将速度取整为(1,1),这样就出现了数值的耗散,有点类似于CFD中的数值雷诺数,难以完全做到100%模拟弹性碰撞。对于这个问题我目前没有解决的办法,希望请教一下各位大佬。
个人心得:
从零基础入门学习python到现在,还是一个纯小白,代码编写规范惨不忍睹,对于纯小白的我来说现在目标是程序能够运行,请见谅。照着小甲鱼教程的同时也有按照自己思维编程的时候,程序过程中没有调用到sprite模块中的函数,碰撞检测函数也是我自己写的,但是编写代码的时候写的Ball类还是继承了sprite模块,我懒得改了。
页: [1]
查看完整版本: 照着python教程写了个play the ball游戏,做了一点属于自己的小改动