java植物僵尸_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植物僵尸_Java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材相关推荐
- java 拼图游戏_Java小项目之:拼图游戏!
Java小项目之:拼图游戏! 今天教大家用java做出一个拼图游戏,很适合java初学者练手. 所用素材: 部分代码: package picture_mosical; import java.awt ...
- java 迷宫游戏_Java小项目之迷宫游戏的实现方法
项目要求: 一个网格迷宫由n行n列的单元格组成,每个大院个要么是空地(用0表示),要么是障碍物(用1表示),你的任务是找一条从起点到终点的移动序列,其中只能上下左右移动到相邻单元格.任何时候都不能在有 ...
- java五子棋难度_Java小项目之:五子棋,你下棋下得过电脑吗?
Java小项目之:五子棋,你下棋下得过电脑吗? Java五子棋功能要求: 1.创建窗口和设计一个棋盘界面 2.实现鼠标点击,棋子出现,黑白棋轮流下 3.能够判断五子相连输赢 4.添加重新开始,悔棋,退 ...
- 植物大战僵尸java版视频_Java小项目之:植物大战僵尸,这个僵尸不太冷!
植物卡片框 */ public class PlantsBar implements GuiConstnat { // 卡片格子数量 private int plantSum; // 太阳数量和卡片选 ...
- 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发
今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...
- java编写家庭收支记录,Java家庭收支记账小项目(java基础)
Java家庭收支记账小项目(java基础) Java家庭收支记账小项目(java基础) 需求说明: 模拟实现基于文本界面的<家庭记账软件>. 该软件能够记录家庭的收入.支出,并能够打印收支 ...
- java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材源码
Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...
- 我是一只小僵尸java,Java小项目之:植物大战僵尸,这个僵尸不太冷!内附素材...
Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...
- java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...
俗话说的好,一如JAVA深似海.听起来好像胡说八道,其实却是很实在. 学过java的人都知道,java分支多,知识点十分丰富,单单论基础知识,也够学一壶的了,很多人在学习基础的时候已经被基础知识烦倒, ...
最新文章
- 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
- php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)
- linux命令之date
- 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem
- Linux 使用记录
- 大型“数码管”解决方案:用了 28 个舵机的时钟,到底有什么特别?
- __stdcall详解
- redis学习篇(十)-----高级特性之持久化处理
- angularjs -- 监听angularJs列表数据是否渲染完毕
- DOM操作之确定元素大小
- js获取非行间样式--有bug,忧伤
- 使用Homebrew安装Git与Github在idea中的配置
- php远程上传实例,PHP ftp类实现远程附件上传例子
- Swoft单元测试基本坑
- MySQL查询优化和索引优化学习笔记
- Linux 端口扫描
- envi插件大津法_IDL处理Himawari8-NC数据
- matlab boxplot显示平均值,r – Boxplot显示平均值
- NR 5G SSB介绍
- 微信小程序与servlet交互
热门文章
- linux数据库12c安装图解,Linux + Oracle 12c RAC安装配置详细记录过程_图文并茂.pdf
- 数学计算机软件课程,《数学软件》课程教学大纲.doc
- vue+axios以流的形式下载文件
- java判断两个数互质_AcWing 458. 比例简化-java(无需判断互质)
- 还有波音737飞机在飞行吗
- Cocos2d-x 2.0.1 学习tests示例(一)Manual Transformation
- 云计算原理与实践 第一章、云计算概述
- 使用cl_gui_docking_container实现多ALV
- karas 实现lstm 文本分类
- win10html5无法播放,Win10网页视频无法播放提示启用adobe flash player