java小項目之:植物大戰僵屍,這個僵屍有點冷!內附素材源碼


Java小項目之:植物大戰僵屍!

《植物大戰僵屍》是由PopCap Games開發的一款益智策略類單機游戲,於200955日發售,這款游戲可謂是無人不知無人不曉。

在我身邊,上到40歲的大叔阿姨,下到78歲的小弟弟妹妹都聽說和玩過這游戲。在以前智能手機還沒流行的時候,各種黑網吧,游戲廳便有着玩這游戲的人。當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學習資料的也可以私信我!

祝關注我的人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉發!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM