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小项目--坦克大战(version1.0)
Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...
- Java学习笔记三十:Java小项目之租车系统
Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...
- Java小项目之:五子棋,你下棋下得过电脑吗?
Java小项目之:五子棋,你下棋下得过电脑吗? Java五子棋功能要求: 1.创建窗口和设计一个棋盘界面 2.实现鼠标点击,棋子出现,黑白棋轮流下 3.能够判断五子相连输赢 4.添加重新开始,悔棋,退 ...
- Java小项目之:教你做个聊天系统!
Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...
- Java生鲜电商平台-电商会员体系系统的架构设计与源码解析
Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...
- java小项目之:扫雷,这游戏没有你想的那么简单!
扫雷 我之前分享的小项目和小游戏,电影购票.坦克大战.捕鱼达人.贪吃蛇等,虽然已经是耳熟能详人尽皆知的项目和游戏,但是保不齐真的有人没接触过. 今天分享的这个项目,我不相信没人接触过(仅限80后-00 ...
- java小项目之:象棋,羡慕你们有对象的!
象棋,是我国传统棋类益智游戏,在中国有着悠久的历史,属于二人对抗性游戏的一种,由于用具简单,趣味性强,成为流行极为广泛的棋艺活动.中国象棋是中国棋文化也是中华民族的文化瑰宝. 象棋还有很多口诀,这是最 ...
- java小项目之:抽奖系统!java初学者必备(内附源码)
[Java]Java摇奖源码,Java抽奖源码,Java随机抽奖源码 任务描述 本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了.注册 用 ...
- [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说...
不知大家是否经常遇到这种情况:自己的项目有时会在没有连接到电脑时发生崩溃,好不容易发现的bug结果连接到电脑时又复现不出来了:又或者自己写的一个功能在开机启动时产生小bug导致崩溃,而刚启动的机器想让 ...
随机推荐
- Python:pip 和pip3的区别
前言 装完python3后发现库里面既有pip也有pip3,不知道它们的区别,因此特意去了解了一下. 解释 先搜索了一下看到了如下的解释, 安装了python3之后,库里面既会有pip3也会有pip ...
- Vue 各个阶段生命周期函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python--day32--struct模块
struct模块:该模块可以把一个类型,如数字,转成固定长度的bytes
- H3C 路由的来源
- P1018 灵灵排数字
题目描述 今天灵灵收到了n张卡片,他需要给他们从小到大排序. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 10^5)\) . 输入的第二行包含 \(n\) 个正整数,以空格间隔 ...
- 用Xshell连接谷歌云
谷歌云服务器,默认用浏览器进行SSH链接,而且也不告知密码.以Centos为例,先使用浏览器连接 1,给root修改密码 1 sudo passwd root 2,编辑ssh配置文件 sudo nan ...
- navicat for mysql (10038)如何解决
1.授权(youpassword修改为你的密码) #本机登陆mysql: $:mysql -u root -p #改变数据库: mysql>use mysql; #从所有主机: mysql> ...
- thinkjs解决跨域
this.header("Access-Control-Allow-Origin", "*"); 将上面的代码在请求发送之前执行即可 如果不知道放在哪里 可以参 ...
- Qt4与Qt3的主要不同
Qt4与Qt3的主要不同 1)QT4 中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的 工作是巨大的,这 ...
- ubuntu-wine
sudo dpkg --add-architecture i386 sudo add-apt-repository ppa:wine/wine-buildssudo apt-get update su ...