- 浏览: 36490 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xiaochun91103:
佩服,相当不错
山寨 植物大战僵尸 0.01beta版 -
ediwer:
我不得不说,javaeye有人才在...
山寨 植物大战僵尸 0.01beta版 -
化蝶自在飞:
开独立博客吧.尝尝什么叫鸡飞狗跳的感觉.呵呵.
看来我的博客得搬家了.JAVAEYE的博客做的太差了。 -
gedoua:
你好 你是在长春工作吗?那的软件公司多吗?我是个快毕业的大学生 ...
又换书看了。 -
ht_09:
我嘞个去,完整版的没有了
山寨 植物大战僵尸 0.01beta版
花了一周时间把 植物大战僵尸 都打通关了。
好久没有游戏让我能玩这么长时间了,于是就打算用pygame实现,可惜发现自己的python玩了太烂了,
还是Java Swing吧,由于比较简单没有使用什么现成的2D游戏引擎(找了半天也没找到合适的,也不想学了)。
现在还只能种两个植物,
用了周六周日,完成了最基础的一部分,以后有时间,再接着做吧。
已经加上源代码了。没有什么框架,想到哪写到哪,也没有注释。想看的就对付看吧。
已删除美女,后来的同学来晚了。
- ZobiesOnYourLawn游戏.rar (1.3 MB)
- 描述: jar 游戏包
- 下载次数: 2985
- ZobiesOnYourLawn源代码.rar (1.3 MB)
- 描述: eclipse 下源代码
- 下载次数: 2981
评论
70 楼
xiaochun91103
2010-11-18
佩服,相当不错
69 楼
ediwer
2010-11-12
我不得不说,javaeye有人才在...
68 楼
ht_09
2010-09-17
我嘞个去,完整版的没有了
67 楼
keke020
2010-09-15
还不会玩这种游戏...土了.......
66 楼
swingmay
2010-09-15
帖子都长期不动了,看来Swingmay的风潮快过去了,
65 楼
swingmay
2010-09-14
图片确实很漂亮,楼主应该把程序完善,借这个东风好好推推
64 楼
keter12345
2010-09-01
哈哈,强大的,我也玩了2个星期通关的,觉得很不错~不过我是做J2EE的~SWING不大懂~
63 楼
seth_yang
2010-08-30
引用
哪位会用java2d实现那个图片,一部分亮,一部分暗啊。
我找了半天没有找到,只好用photoshop变暗了图片用两张实现的。
应该使用AffineTransform来实现吧,图形学不太会啊,
在这里抛砖引玉,给出一份 ColdDown 的例子
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Arc2D; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.EventListener; import java.util.EventObject; /** * Created by IntelliJ IDEA. * User: seth.yang * Date: 2010-8-30 * Time: 15:56:26 */ public class ColdDownSample { public static void main (String[] args) throws Exception { JFrame frame = new JFrame ("Test"); ImageIcon icon = new ImageIcon ("20203.png"); JPanel panel = new JPanel (); final ColdDownLabel cd1 = new ColdDownLabel (icon, .5f, 1000, ColdDownLabel.Type.Pie); final ColdDownLabel cd2 = new ColdDownLabel (icon, .5f, 5000, ColdDownLabel.Type.Line); final ColdDownLabel cd3 = new ColdDownLabel (icon, .8f, 10000, ColdDownLabel.Type.Line); cd1.setMaskColor (Color.ORANGE); cd2.setMaskColor (Color.MAGENTA); cd3.setMaskColor (Color.GREEN); panel.add (cd1); panel.add (cd2); panel.add (cd3); frame.getContentPane ().add (panel); panel = new JPanel (); final JButton button = new JButton ("Cold Down All"); button.addActionListener (new ActionListener() { public void actionPerformed (ActionEvent e) { cd1.start (); cd2.start (); cd3.start (); button.setEnabled (false); } }); panel.add (button); frame.getContentPane ().add (panel, BorderLayout.SOUTH); frame.pack (); frame.setVisible (true); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); ColdDownCompleteListener l = new ColdDownCompleteListener() { public void coldDown (ColdDownEvent e) { if (cd1.isColdDownComplete () && cd2.isColdDownComplete () && cd3.isColdDownComplete ()) button.setEnabled (true); } }; cd1.addColdDownCompleteListener (l); cd2.addColdDownCompleteListener (l); cd3.addColdDownCompleteListener (l); } } class ColdDownEvent extends EventObject { public ColdDownEvent (Object source) { super (source); } } interface ColdDownCompleteListener extends EventListener { void coldDown (ColdDownEvent e); } class ColdDownLabel extends JLabel implements Runnable { private long interval = 0; private int top = 0, angle = 360; private Type type = Type.Line; private static int lineDelta = 1, angleDelta = 1; private double x, y; // 饼状 CD 时候的左上角坐标 private double r; // 饼状 CD 时的半径 private boolean running; private float alpha = 1f; private boolean coldDownComplete; private final Object lock = new Object (); private Color maskColor; private BufferedImage buff; private Icon icon; private final java.util.List<ColdDownCompleteListener> listeners = new ArrayList<ColdDownCompleteListener> (); private Runnable repainter = new Runnable() { public void run () { repaint (); } }; public static enum Type { Line, Pie } public ColdDownLabel (Icon icon, float alpha, long delay, Type type) { this.icon = icon; setSize (icon.getIconWidth (), icon.getIconWidth ()); buff = new BufferedImage (icon.getIconWidth (), icon.getIconHeight (), BufferedImage.TYPE_INT_RGB); setAlpha (alpha); setDelay (delay); setType (type); paintShawdow (); } public void setType (Type type) { this.type = type; if (type == Type.Pie) { int x0 = icon.getIconWidth () / 2, y0 = icon.getIconHeight () / 2; // center point r = Math.sqrt (x0 * x0 + y0 * y0); x = x0 - r; y = y0 - r; } } public void setDelay (long delay) { if (type == Type.Line) { interval = delay * lineDelta / icon.getIconHeight (); } else { interval = delay * angleDelta / 360; } } public void setAlpha (float alpha) { this.alpha = alpha; setMaskColor (Color.black); } public void start () { synchronized (lock) { if (running) return; } top = 0; angle = 360; running = true; coldDownComplete = false; new Thread (this).start (); } public boolean isColdDownComplete () { return coldDownComplete; } @Override public Dimension getPreferredSize () { if (icon == null) return super.getPreferredSize (); return new Dimension (icon.getIconWidth (), icon.getIconHeight ()); } @Override public void paint (Graphics g) { g.drawImage (buff, 0, 0, this); } public void setMaskColor (Color c) { maskColor = new Color (c.getRed (), c.getGreen (), c.getBlue (), (int)(255 * alpha)); // 不透明度为 aplha } public void run () { while (running) { if (type == Type.Line) top += lineDelta; else angle -= angleDelta; paintShawdow (); SwingUtilities.invokeLater (repainter); try { Thread.sleep (interval); } catch (InterruptedException e) { e.printStackTrace (); } running = type == Type.Line ? top < icon.getIconHeight () : angle > 0; } coldDownComplete = true; if (listeners.size () > 0) { ColdDownEvent e = new ColdDownEvent (this); for (ColdDownCompleteListener l : listeners) l.coldDown (e); } } public void addColdDownCompleteListener (ColdDownCompleteListener l) { synchronized (listeners) { listeners.add (l); } } private void paintShawdow () { Graphics2D g2 = buff.createGraphics (); g2.setColor (Color.white); g2.fillRect (0, 0, getWidth (), getHeight ()); icon.paintIcon (this, g2, 0, 0); g2.setPaint (maskColor); if (type == Type.Line) g2.fill (new Rectangle (0, top, getWidth (), getHeight () - top)); else g2.fill (new Arc2D.Double (x, y, 2 * r, 2 * r, 90, angle, Arc2D.PIE)); } }
62 楼
xinshou
2010-08-15
见过还有一个网页版的,纯js写的。
61 楼
SteveZhang
2010-08-15
楼主的代码非常值得学习,收下了
60 楼
kelongsoft
2010-08-11
好像俺来晚了!
59 楼
yixh1
2010-07-19
唉,果然来晚了,没看到美女。
58 楼
andyjojo
2010-07-18
mark
57 楼
C_J
2010-07-08
哇哈哈,坛子里都是些如饥似渴的郎啊
56 楼
HeDYn
2010-07-07
强烈抗议阉割版,强烈要求发原版,不能没有美女图啊
55 楼
dreamweaver
2010-07-01
看图就觉得很不错啊,要下过来仔细看看
54 楼
cloud21
2010-06-21
看了你的东西,比较感兴趣,回家利用几天 用flex做了一个山寨的。
你还接着做吗,有时间一起研究,我想吧这个添加点功能。玩家对战,一方僵尸,一方植物。
你还接着做吗,有时间一起研究,我想吧这个添加点功能。玩家对战,一方僵尸,一方植物。
53 楼
ycysth
2010-06-12
很不错哦,我基本没做过游戏
52 楼
wangsysu
2010-06-06
哈哈,楼主好强大啊。
51 楼
yadihaoku
2010-06-03
谁有 那两个 美女的图片啊????
让我 Look 一下.........
让我 Look 一下.........
发表评论
-
看来我的博客得搬家了.JAVAEYE的博客做的太差了。
2010-08-03 16:11 886je的博客在chrome下,总出现各种问题。 并且,还 ... -
记录一下我会的编程语言。
2010-07-21 16:30 998JAVA 工作中用了快三年了,SE应该是比较熟练了。 ... -
数据挖掘 初探
2010-06-29 08:55 911开始看数据挖掘了。看了《数据挖掘 概念与技术》名词太多了。 ... -
再见了Java, 以后要专攻Oracle了。
2010-06-17 17:19 1124做Java也有几年了,换工作了,以后要专搞数据库了。 ... -
写个什么有技术含量的东西呢。
2010-06-01 15:03 744天天做的东西都是无聊的东西, 是写个股票软件,还是写个 ... -
今天许个愿。
2010-05-31 11:25 685老天帮找个好点的工作吧。 -
囫囵吞枣,看完了Effective Oracle by Design
2010-05-24 08:58 723本以为还能把关键的地方翻译出来。 做个学习笔记呢。 不 ... -
画图时遇到的问题?可以说是一个算法题吧。
2010-05-21 09:40 1387坐标系是这个样的 ------------------ ... -
新手贴: 请教为什么各种JAVA的书里的class的名总用Foo, Bar
2009-04-03 11:33 937Java se的文档和hibernate,和一些书籍总用这两个 ... -
开始写blog
2008-11-21 22:16 730JavaEye 可以制作电子书了,这个比较牛。 现在开始写b ...
相关推荐
《山寨版植物大战僵尸源码0_01beta版》是一个非常适合初学者研究的游戏开发项目,它基于Java编程语言,提供了完整的源代码,为想要学习Java游戏开发的程序员提供了宝贵的实践资源。Java作为一种广泛使用的面向对象...
《Flash ActionScript3网页游戏:植物大战僵尸网络对战版》 本文将深入探讨一个基于Flash ActionScript3(AS3)开发的网页游戏——山寨版的植物大战僵尸,该版本独特之处在于支持双人对战模式,玩家可以分别在两个...
《Uchome插件:植物大战僵尸(完美版) 安装及使用指南》 "Uchome 插件 植物大战僵尸(完美版) 亲测可用 Uchome插件"这一主题,指的是在Uchome社区平台上的一个特色插件,即我们熟知的"植物大战僵尸"游戏的完美版本。...
可以从pc版本的植物大战僵尸1代解包所有资源,包括图片、音乐等文件,方便大家山寨需要
《植物大战僵尸》是一款深受玩家喜爱的塔防类游戏,其山寨版源码为我们提供了一个了解游戏开发过程的独特视角。源码是程序的核心,包含了游戏的逻辑、算法和设计思想,对于学习游戏编程的开发者来说,是宝贵的参考...
这次实训的重点是复刻经典游戏“植物大战僵尸”,学员将学习如何构建游戏的基本框架,实现游戏逻辑,以及与用户交互的界面设计。 在“植物大战僵尸”这款游戏中,玩家需要通过放置不同种类的植物来抵御僵尸的入侵。...
《植物大战僵尸》是一款深受玩家喜爱的塔防类游戏,其山寨版的可使用性意味着我们可以深入了解游戏的内部机制和编程实现。在这个“PlantPKGhost”压缩包中,很可能包含了这款游戏的源代码,这为我们提供了宝贵的资料...
【标题解析】:“山寨平板8650最终极精简版”这个标题指的是一个针对型号为8650的山寨平板电脑的系统优化版本。"最终极精简版"意味着这是该系列的一个高度优化和轻量化的固件,可能是为了提高设备的运行速度和效率,...
山寨主板的BIOS ROM
java版山寨QQ项目 里面有四个压缩包 QQ服务器端.rar QQ客户端.rar 改进QQ客户机服务器视频实现.rar Q第三方库.rar 这个java版山寨QQ项目实现的功能有: 1.实现的java视频聊天; 2.集成了Mina框架; 3.服务器管理...
【标题】"山寨版QQ和坦克大战"是一个适合初学者的编程练习项目,它涵盖了多个IT领域的关键知识点,包括网络编程、多线程处理以及图形用户界面(GUI)设计等。 【描述】中的"网络编程"是指通过网络进行数据交换的...
正式版通常会在测试版的基础上进行完善,修复所有已知问题,确保所有功能都能正常运行,并且可能包含更多的新特性、优化和改进。因此,用户在使用测试版时需要注意可能存在不稳定的情况,而正式版则更适合用于生产...
这个系统可以被视为对经典Linux 0.11的一个致敬或学习实践,虽然被标签为“山寨”,但其中蕴含的技术原理和实现方法对于理解操作系统底层工作原理具有重要价值。 首先,实模式与保护模式是x86处理器的两种主要工作...
【标题】"山寨java版qq" 是一个基于Java编程语言开发的简易聊天软件,它旨在模仿QQ的功能,但并非官方版本。这个项目主要是为了学习和实践网络通信、多线程以及用户界面设计等技术。 【描述】这个"山寨版局域网聊天...
【标题】"山寨QQ完整版"揭示了这个项目的核心,即一个模仿QQ即时通讯软件的实现。这个"山寨"版本并非官方腾讯QQ,而是由开发者或爱好者基于QQ的功能特性自行构建的一个版本,目的是为了学习、研究或者测试即时通讯...
山寨E盾,将需要登陆的程序山寨到本地,或者指定的服务器上
QQ是中国知名的即时通讯软件,由腾讯公司开发,其源代码是商业机密,不对外公开。然而,"山寨版qq源码.素材"这个主题暗示我们可能会探讨的是一个非官方的、模仿QQ功能的软件源码及相关的素材。在IT行业中,这样的...
HTML5小游戏源码下载,JS小游戏源码下载,坦克大战,驴子跳,连连看,俄罗斯方块,圈泡泡,塔防,太空战舰,愤怒的小鸟,植物大战僵尸,水果忍者,扫雷,超级玛丽,打地鼠,坦克大战,麻将等JS小游戏源码下载,游戏...
### 山寨APP的危害以及防止山寨APP的方法 #### 山寨APP的危害 ##### 对用户的危害 1. **窃取账号**:山寨APP通过各种手段获取用户的登录信息,进而非法访问用户的账户,可能导致资金被盗或其他隐私泄露。 2. **...
山寨云PC版,破解百度云限速,还有几个网盘搜索引擎可供免费下载