惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
B
Blog
博客园 - Franky
小众软件
小众软件
Recorded Future
Recorded Future
B
Blog RSS Feed
爱范儿
爱范儿
宝玉的分享
宝玉的分享
L
LangChain Blog
博客园 - 【当耐特】
The Register - Security
The Register - Security
P
Proofpoint News Feed
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
Last Week in AI
Last Week in AI
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
aimingoo的专栏
aimingoo的专栏
D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
有赞技术团队
有赞技术团队
G
Google Developers Blog
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog

博客园 - 飘啊飘

一个精简的vi源码(2000行) dtruss 粗糙的翻译 gdb常用命令[转] gdb中信号的处理[转] 在linux中通过进程名获得进程id busybox0.60.3源码学习开始 pygame做的贪吃蛇 python中使用struct模块处理二进制数据 一篇很好的讲/etc/inittab的文章[转] 哲学家吃空心粉问题 《代码整洁之道》笔记之函数 使用面向对象概念优化条件判断语句的一个小应用 python生成文件树的代码 深入理解软件包的配置、编译与安装[转] pygame学习之对象移动 pywin32重启电脑 - 飘啊飘 - 博客园 解决LINUX和WINDOWS时间不一置 通过状态机实现的一个配置读取函数 UNIX基础知识--《APUE》第一章笔记
使用PYGAME开发的坦克游戏[代码][思路]
飘啊飘 · 2011-05-09 · via 博客园 - 飘啊飘

下载地址:

http://ishare.iask.sina.com.cn/f/15170274.html 

带图的链接:

http://topic.csdn.net/u/20110506/11/00F9E224-3354-4908-BC96-8670769D93B7.html

 

坦克游戏设计思路

近期通过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下请放在英文路径下运行,没处理中文路径的问题,这个有空再改吧(估计。。。。改不了了)哪位朋友有空改好也可以发我份哦~