使用PYGAME开发的坦克游戏[代码][思路]

shiweifu 2011-05-06 11:57:33
加精
坦克游戏设计思路

近期通过pygame设计了个坦克游戏,熟悉了下2D游戏的开发,总结一下吧,否则又忘记了。

游戏类似小时候红白机上的坦克大战,有几种坦克类型,主要区别在于:
攻击力
移动速度
四个方向的贴图(png)
发炮的声音
移动的声音
血量

因为比较喜欢玩手机,所以里面坦克的名字都是以用过的手机名命名的:
E71
N95
HD2
i780
touch
8900
.....

:-) 有点雷人

地图的设计:
666666666666666666666666666
600000000000000000000000006
600000000000000000000000006
600000300001000000000000006
600000300001000001345000006
600000322221000001000100006
600000311111000001222100006
600000300001000001000100006
600000300001000001111000006
644444444444444444444444006
600000000000000000000000006
600000111110000011111000006
600000100000000000200000006
600000111110000000200000006
600000000010000000200000006
600000000010000000200000006
600000111110000011211000006
600000000000000000000000006
600000000000000000000000006
666666666666666666666666666
这就是一张地图,看明白没?
0-6代表7种不一样的元素:





空白
城墙
每种都有不一样的贴图,读取地图文件时算好坐标对着贴就是了

而每关不一样的坦克信息,玩家控制的坦克,敌方控制的坦克,都是写在地图的配置文件里的:
{

"background" : null,

"backcolor" : [0,0,0],

"tank_info" :

{

"normal":1,

"hard":1

},

"player" : "e90",

"slash" : ["6.jpg","7.jpg"],

"sound" : "Mozart_Piano_Sonata_Amin3.ogg",

"mapfile":"map",

"size":[815,700]

}
配置文件是json格式,python 加载json格式非常简单,而且定义清晰明了

然后每关都压缩成个zip文件,加载时进行读取。

坦克的移动和碰撞检测直接用pygame中的sprite对象来做就可以了,都封装在里面了,看看文档就会用,我就不细说了。

开头动画就是简单的图片切换,加上渐变效果。

整个坦克游戏开发从三月中旬一直到四月中旬,从接触pygame到写完这个游戏,也都是在这个时间段,弄明白2D游戏大概是如何开发的了。坦克重做了三回,终于成形了,也不打算改了,再改估计又想重新做了。

猜猜用了多少行。。











在linux下用wc统计,抛去注释的代码,1600多行
python 强大有木有
pygame 给力有木有

先贴几张截图,再传下代码

总体来说,写的比较灵活,可配置性比较强,地图坦克什么的都可以自己改

windows下请放在英文路径下运行,没处理中文路径的问题,这个有空再改吧(估计。。。。改不了了)哪位朋友有空改好也可以发我份哦~



...全文
15344 105 打赏 收藏 转发到动态 举报
写回复
用AI写文章
105 条回复
切换为时间正序
请发表友善的回复…
发表回复
Teng_s2000 2013-03-28
  • 打赏
  • 举报
回复
向lz学习~~~
freefighter123 2013-03-26
  • 打赏
  • 举报
回复
很好的想法,,,支持,,强烈
bigsnow999 2013-02-28
  • 打赏
  • 举报
回复
感谢分享,向楼主学习
xhb198703 2012-08-06
  • 打赏
  • 举报
回复
楼主给力啊, 正好在学习python 下下来学习学习
shiweifu 2012-07-10
  • 打赏
  • 举报
回复
哎,一年多了呀
ynhhjpljx 2012-02-19
  • 打赏
  • 举报
回复
谢谢分享
shiweifu 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 98 楼 grubby4k 的回复:]

想问一下,坦克在冰上的效果如何做的
[/Quote]

冰面效果只是贴图,并没有实现
那时没什么思路。现在来看,先做个简单的地图编辑器更好。
很简单,就是贴贴图什么的,200多行python代码,前几天试着做了个。

我这个是一下把地图中的元素都加载进来了。这样看起来是简单实现了,可是当想对特殊地形做特殊处理的时候,就很难写了。写出来也会很难看,一团糟,只能重写。

关于地图中的特殊效果的实现,我的思路是:
1、在自己的地图编辑器中绘制好地图,每个坐标点都是什么东西,不用太复杂,只需要记录每个坐标点对应的每个贴图即可,保存为json格式的文件。

2、每个地图(json文件)对应一个py文件,用于保存生成特效的函数。

3、手动修改json文件,把打算进行特效处理的坐标点加上个func字段,指向地图对应py文件中的函数,然后用exec执行并在运行中调用

这样的话,地形的特殊效果就好处理多了。思路就是这么个思路,你可以自己扩展下,比如一片地形的效果可以写在一起什么的。



grubby4k 2011-09-07
  • 打赏
  • 举报
回复
想问一下,坦克在冰上的效果如何做的
xrzs1986 2011-06-13
  • 打赏
  • 举报
回复
ding lou zhu
DarkChampion 2011-05-31
  • 打赏
  • 举报
回复
不错,支持一下
jy03189211 2011-05-31
  • 打赏
  • 举报
回复
楼主,你传的文件好像压缩有问题,能不能再传一遍,给个传送门,或者邮件我谢谢nmbqz@hotmail.com
南风咖啡 2011-05-29
  • 打赏
  • 举报
回复
楼主做的很不错,
我最近也在学习,
正好借用下楼主的思路。
wbandzlhgod 2011-05-25
  • 打赏
  • 举报
回复
太爱你啦!!!哈哈哈
zheng_j_c 2011-05-20
  • 打赏
  • 举报
回复
厉害啊!!能给个源码看看不呢??
tangxianghenggood 2011-05-17
  • 打赏
  • 举报
回复
想跟楼主交流下 若不嫌弃 请加qq:416155813 谢谢
paope 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bin418714380 的回复:]
我不为楼主的标题而吸引,也不为贴子内容所迷惑,我不是为抢沙发来,也不是来打酱油,楼主是男的,我不在乎,是女的,我也不希罕,我只为分而刷贴(在此感谢原作者),在这个没有分就寸步难行的世界,楼主,原谅我吧!
[/Quote]
这帖子回的,超级霸道啊!~
CDSoftwareWj 2011-05-16
  • 打赏
  • 举报
回复

楼主你也不说你的这个程序是在py2.6下写的 - -|||
liuzhoou 2011-05-15
  • 打赏
  • 举报
回复
LZ狠强大...
运行中发现有2个地方需要修改下:
1.stage.py at line 395
---debug_print("歌曲播放")
+++debug_print(u"歌曲播放")
2.game.py at line 229
---debug_print("您赢了")
+++debug_print(u"您赢了")
plflove 2011-05-13
  • 打赏
  • 举报
回复
好强诶~崇拜你!
Giant_Swordsman 2011-05-13
  • 打赏
  • 举报
回复
非常感谢,好好学习
加载更多回复(57)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧