java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材源码
Java小项目之:植物大战僵尸!
《植物大战僵尸》是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓。
在我身边,上到40岁的大叔阿姨,下到7、8岁的小弟弟妹妹都听说和玩过这游戏。在以前智能手机还没流行的时候,各种黑网吧,游戏厅便有着玩这游戏的人。当3G技术现世,半智能手机和智能手机出现后,这款游戏更是如日中天,与愤怒的小鸟一起霸占了手机游戏市场(但当时估计都是盗版的)。
相信有些使用b站的小伙伴,应该看过很多这样的视频:
这种视频里的植物大战僵尸,大多都是用java实现的,只需改一下素材图片,就可以了!
今天便教大家用java做出植物大战僵尸这款游戏!
奉上游戏图:
部分代码展示:
package tarena.game.gui;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;import tarena.game.constants.GuiConstnat;
import tarena.game.constants.PlantType;
import tarena.game.gui.obj.SeedCard;
import tarena.game.utils.ImageUtil;/** 植物卡片框*/
public class PlantsBar implements GuiConstnat {// 卡片格子数量private int plantSum;// 太阳数量和卡片选择窗口private Image seedBank;// 卡片private SeedCard[] cards;// 太阳数量private int lights;// 画笔颜色,显示太阳数量private Font lightFont;public PlantsBar() {seedBank = ImageUtil.loadImage("SeedBank.png");// allSeedImg = ImageUtil.loadImage("allseeds.png");plantSum = 7;cards = new SeedCard[plantSum];for (int i = 0; i < plantSum; ++i) {cards[i] = new SeedCard(new Point(SEED_OFFSET + ADD_SUN_OFFSET+ (CARD_WIDTH + CARD_GAP_W) * i, TOP_OFFSET), new Point(i,0));}lightFont = new Font(Font.DIALOG, Font.BOLD, 20);lights = 1000;}public void gameUpdate(long time) {for (SeedCard sc : cards) {sc.gameUpdate();}}// 选择植物卡片public PlantType selectedPlant(Point pos) {// 判断是否坐标是否在指定范围if ((pos.x > SEED_OFFSET + ADD_SUN_OFFSET)&& (pos.x < SEED_OFFSET + ADD_SUN_OFFSET+ seedBank.getWidth(null)) && (pos.y > TOP_OFFSET)&& (pos.y < TOP_OFFSET + seedBank.getHeight(null))) {// 判断哪一张卡片被选择,是否可选for (SeedCard sc : cards) {if (sc.mouseIn(pos.x, pos.y) && sc.isEnable()) {if (lights >= sc.getCost()) {System.out.println("This plant will use our "+ sc.getCost() + " lights. we have" + lights);sc.reset();lights -= sc.getCost();return sc.getPlantType();}}}}return PlantType.NONE;}public void draw(Graphics g) {g.drawImage(seedBank, GuiConstnat.SEED_OFFSET, 0, null);for (SeedCard sc : cards) {sc.draw(g);}g.setColor(Color.BLACK);g.setFont(lightFont);g.drawString(String.valueOf(lights), SEED_OFFSET+ ADD_SUN_COUNT_X_OFFSET, ADD_SUN_COUNT_y_OFFSET);// cards[0].draw(g);/** g.drawImage(allSeedImg, SEED_OFFSET + ADD_SUN_OFFSET, TOP_OFFSET,* SEED_OFFSET + ADD_SUN_OFFSET + CARD_WIDTH, TOP_OFFSET + CARD_HEIGHT,* 0, 0, CARD_WIDTH, CARD_HEIGHT, null);*/}// 收集阳光public void collectSun(int num) {lights += num;}
}
需要植物大战僵尸游戏素材和源码的小伙伴可以私信我
喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!
祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!
java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材源码相关推荐
- Android 小应用之一个activity实现简易手电筒(内附免费源码)
Android小应用之一个activity实现简易手电筒(内附免费源码) 1.activity代码 2.xml代码 3.资源文件代码 4.源码压缩包(免费) 今天爷爷说他手机更新之后找不到手电筒了,我 ...
- java项目 干洗店源码,[内附完整源码和文档] 基于Java的洗衣店管理系统
摘 要 随着科技的快速发展,人们的需求也是越来越多,为了方便对信息的管理我们小组就设计了一个洗衣店订单的管理系统. 洗衣店管理系统是典型的的信息管理系统,创建了六个类,分别是:Test类:Person ...
- [内附完整源码和文档] 基于Java的个人通讯录管理系统
摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...
- 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
什么是设计模式:[每天一个java设计模式(零)] - 设计模式基本概念及七大设计原则 创建型模式 工厂模式:[每天一个java设计模式(一)] - 工厂模式 抽象工厂模式: [每天一个java设计模 ...
- [内附完整源码和文档] 基于JAVA的房屋中介管理系统
摘 要 随着住房制度改革不断深化和居民收入水平的提高,住房成为新的消费热点,大部分城市房屋销售价格上涨明显.随之而来国家出台了多项针对房地产行业的调空政策.房屋中介行业是房地产业的重要组成部分,其在房 ...
- [内附完整源码和文档] 基于JAVA的合同管理系统
摘 要 在当今社会的飞速发展,无数的公司和企业诞生,随之也有着大量员工的产生,公司与员工通过合同连接起来.信息化的发展,使得合同管理有了新的高效管理方式的可能. 企业合同管理是市场经济条件下企业经营管 ...
- python手机通讯录管理系统代码_[内附完整源码和文档] 基于Java的个人通讯录管理系统...
摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...
- java webrtc ns降噪_单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)...
webrtc的音频处理模块分为降噪ns,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除 ...
- java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...
摘 要 本系统运用Java面向对象的方法设计而成. 近年来,学生选课系统越来越在高校学生群体中得到普及,其所承担的功能也变得越来越丰富,所起到的作用也变得越来越重要,在被学校学生重视的同时,也意味着它 ...
最新文章
- BREW 计费模式概览
- HRFormer 踩坑日记
- [源码和文档分享]基于C++实现的运动会统分系统
- JavaScript 中的代码小技巧
- 如何在bootstap中修改checkbox的样式
- 网速慢?NO可能是路由器的原因?
- 华为触摸提示音怎么换_抖音苹果iPhone手机怎么改微信消息提示音 自定义换声音教程...
- C语言教程第六章:指针(2)
- 输入法黑科技:语音识别准确率98% 用户超过6亿
- 【NOI OpenJudge】【1.2】编程基础之变量定义、赋值及转换
- 制作一个遍历当前子目录的Makefile
- 又是一年平安夜,程序员教你用trutle画苹果,有手就行
- 银联支付接口申请-手机控件支付
- 无人车之美——双舵轮运动分解与合成
- 六轴机器人matlab工作空间分析
- 【Unity】U3D ARPG游戏制作实例(一)EasyTouch5完整示例
- 照片太大了怎么改小kb?图片压缩在线处理方法
- android textview 显示表情和文字 表情带超链接
- FPGA资源类型简介
- 可能是东半球最好的多线程讲义!