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學習資料的也可以私信我!
祝關注我的人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉發!