做了几天的多线程游戏终于有点样子了。下面就我实现的一些功能简单列举下:
1.植物的种植(实现4种)
2.豌豆炮弹的设置(有僵尸在同一路出现时开炮。打中后消失。没有僵尸时停止开炮)
3.太阳花的设置(为了调试起见,设置为每隔相同时间生产一个太阳)
4.草莓弹的设置(只有僵尸在同一路,并碰到时炸开。并消灭相邻两路紧挨的僵尸)
5.土豆的设置(僵尸碰到土豆是停止前进。其他植物也一样)
6.僵尸的设置(僵尸随机产生从那一路出现。僵尸中10个豌豆弹或碰到草莓弹时消失)
7.小车的设置(僵尸碰到小车时,僵尸消失,小车向前开去)
8.用当前的太阳分值控制植物的种植。
还有一些功能比如植物的消失还没实现,将会进一步实现。下面就遇到的一些问题及我的解决方案小结下:
一.给窗体添加背景图片。
在给窗体添加背景图片是如果用JLabel的话,我们再在上面添加JLabel标签的话就加不上去,正如我们所知道的JFrame窗体是分层次的。我们要把背景JLabel放到最低层才行。
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明 jp1 = (JPanel) frame.getContentPane(); jp1.setOpaque(false); // 内容窗格默认的布局管理器为BorderLayout jp1.setLayout(null); jp1.add(label4); jp1.add(toolpanel); //将toolpanel面板加到当前面板 frame.getLayeredPane().setLayout(null); // 把背景图片添加到分层窗格的最底层作为背景 frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); frame.setVisible(true);
同时我们也可以将背景图片画在JFrame上。
//将背景图片画在JFrame容器上方法 public void paint(Graphics g1) { super.paint(g1); ImageIcon image = new ImageIcon("image\\18.PNG"); //设置图片 g1.drawImage(image.getImage(), 0, 0, null); }
二.创建多线程的方式及注意的一些问题
通常创建线程有两种方法,实现Runnabel接口和继承Thread类。在我写的程序中主要是通过内部类的方式创建线程。
在运用内部类线程时,调用内部类线程对象时不方便的,因此我们只能通过一些方法获取内部类的属性,运用全局变量来控制线程的休眠,或跳出。我们只需要在要线程休眠或停止的地方改变全局变量即可。
同时我们也要注意,多线程之间是不会互相影响的,他们独立运行。如果多线程对同一静态全局变量进行访问将会对多线程的独立性产生影响。
三.经验小结
耐心+恒心+细心+清晰的思路=好的程序
相关推荐
通过对《安卓Android源码——植物大战僵尸源码》的深入研究,开发者不仅可以学习到游戏开发的基本流程,还能掌握Android系统的高级特性,提升自己的编程技能和解决问题的能力。无论是对个人成长还是团队协作,这都是...
"安卓Android源码——植物大战僵尸(简单版).zip" 这个标题揭示了我们要探讨的内容是一份基于Android平台的游戏源代码,这个游戏是植物大战僵尸的一个简化版本。这意味着我们可以期待看到一个关于游戏开发的实例,...
【C# Winform小游戏-植物大战僵尸】 C# Winform是一个基于.NET框架的用户界面库,用于构建桌面应用程序。在这个项目中,"植物大战僵尸"游戏被移植到了Winform平台上,为用户提供了一种在本地环境下体验这款经典游戏...
在Java版的植物大战僵尸源码中,我们可以看到Java语言在游戏开发中的应用,包括面向对象的设计、图形用户界面(GUI)的创建、事件处理、多线程等核心概念。这些知识对于想要深入学习Java游戏开发的人来说,无疑是一...
植物大战僵尸是一款深受玩家喜爱的塔防类游戏,通过策略性地种植不同类型的植物,防御僵尸的入侵。在C++环境下复现这个游戏,开发者需要掌握以下几个关键知识点: 1. **面向对象编程**:C++是面向对象的语言,游戏...
总的来说,这个Java版的“植物大战僵尸”项目不仅提供了游戏开发的实战案例,还涵盖了Java GUI编程、多线程、动画制作、资源管理等多个核心知识点。通过深入研究和实践这个项目,开发者可以提升自己的Java编程技能,...
《植物大战僵尸Javascript版web游戏源码》是一个基于JavaScript编程语言开发的网页游戏,它完美地复刻了经典的电脑版《植物大战僵尸》的游戏体验。这款游戏的源代码提供了丰富的学习和研究材料,对于想要深入理解...
总之,C++编写植物大战僵尸的源代码是一个综合性的项目,涉及到面向对象编程、图形处理、算法设计等多个方面,对提升C++编程技能和游戏开发经验有着显著的帮助。通过研究这样的源代码,开发者不仅可以深入理解C++,...
通过分析这个Java版植物大战僵尸项目,我们可以看到它涵盖了Java编程的多个方面,不仅涉及基本语法和面向对象设计,还包括图形用户界面开发、多线程编程、数据结构与算法的应用以及游戏开发的特定技术。这个项目为...
植物大战僵尸包含多个游戏状态,如开始界面、游戏进行中、游戏结束等。这些状态的切换需要合理的设计和管理。在源码中,我们可能看到一个游戏状态机的实现,通过状态变量和条件判断来控制游戏流程。 七、音频处理 ...
在这个“植物大战僵尸”项目中,开发者可能利用了操作系统的多线程功能来实现游戏的并发执行,确保游戏流畅运行。多线程允许游戏同时处理玩家输入、渲染画面、计算游戏逻辑等多个任务,提高游戏体验。 再来看多线程...
总的来说,"Java项目:植物大战僵尸(java+swing)"是一个综合性的项目,它涵盖了Java编程、Swing GUI设计、多线程编程、游戏逻辑实现、碰撞检测、音效处理、数据持久化等多个IT领域的知识点。这个项目对于学习Java和...
《Java技术在“植物大战僵尸”游戏开发中的应用解析》 在编程世界中,Java以其跨平台、面向对象和高效性等特性,被广泛应用于各种软件开发,包括游戏开发领域。这里我们将深入探讨如何利用Java技术来开发一款类似...
其次,项目中必定会涉及到多线程技术,因为游戏需要同时处理玩家操作、僵尸行动、动画更新等多个任务。Java的Thread类和ExecutorService接口可以用来管理并发,确保游戏的流畅运行。此外,为了实现游戏循环,开发者...
在本资源中,我们主要探讨的是一个基于Java编程语言实现的"植物大战僵尸"简易版游戏的源代码。这个游戏是经典游戏"植物大战僵尸"的一个简化版本,旨在帮助初学者理解游戏开发的基本原理,以及Java编程的核心概念。...
和第一次课设一样,以状态机的方式实时对用户的输入做出反应,达到多线程并行,而不会阻碍其他 功能的执行。 随着植物和僵尸种类的增加,考虑用继承实现代码复用,所有植物公用一个基类,所有僵尸以普通僵 尸为基类...
综合以上信息,这个“纯Java游戏-植物大战僵尸源码”项目不仅是一个娱乐产品,更是一个学习和研究的实例,展示了如何用Java语言和Swing库来开发复杂的游戏,并通过多线程优化性能。对于想要提升Java编程技能,特别是...
"安卓源码_植物大战僵尸(简单版).zip" 是一个包含安卓应用程序源代码的压缩文件,特别的是,它是一个简化版本的"植物大战僵尸"游戏的源码。这个标题暗示我们可以从中学到如何在Android平台上开发类似的游戏,包括...
《植物大战僵尸游戏C#源码》是一款基于C#编程语言开发的游戏项目,它展示了如何利用C#构建一个简易版的《植物大战僵尸》游戏。这款游戏的特色在于它实现了基本的战斗功能,允许玩家在有限的场景中抵御僵尸的入侵。...