Java小項目之:植物大戰殭屍!
《植物大戰殭屍》是由PopCap Games開發的一款益智策略類單機遊戲,於2009年5月5日發售,這款遊戲可謂是無人不知無人不曉。
在我身邊,上到40歲的大叔阿姨,下到七、8歲的小弟弟妹妹都據說和玩過這遊戲。在之前智能手機還沒流行的時候,各類黑網吧,遊戲廳便有着玩這遊戲的人。當3G技術現世,半智能手機和智能手機出現後,這款遊戲更是如日中天,與憤怒的小鳥一塊兒霸佔了手機遊戲市場(但當時估計都是盜版的)。
相信有些使用b站的小夥伴,應該看過不少這樣的視頻:java
這種視頻裏的植物大戰殭屍,大多都是用java實現的,只需改一下素材圖片,就能夠了!
今天便教你們用java作出植物大戰殭屍這款遊戲!
奉上游戲圖:ide
部分代碼展現:
package tarena.game.gui;ui
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;code
import tarena.game.constants.GuiConstnat;
import tarena.game.constants.PlantType;
import tarena.game.gui.obj.SeedCard;
import tarena.game.utils.ImageUtil;視頻
/*blog
植物卡片框
*/
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圖片
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_OFFSETget
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);
/*
}
// 收集陽光public void collectSun(int num) {lights += num;}}須要植物大戰殭屍遊戲素材和源碼的小夥伴能夠私信我喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!祝關注個人人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉髮!