資源簡介
非常有價值的Java游戲源碼(本鵬保證在此前無人發過,而且原本都是非商用的),包含了戰棋,彈幕,即時戰略,射擊等多種游戲類型。比如以東方系列人物為主角的戰棋類游戲,原本為Applet開發的東方戰棋Demo示例(關卡不完整,目前原作者采用C/C++重制了該游戲(日本有售,夢幻模擬戰風格),Java版已廢棄(2010年即終止開發))。不過Applet版采用“蜂格式”地圖,以斜45度角進行角色戰斗,內置三關。加上該游戲程序結構嚴謹,即使被原作者淘汰,也同樣非常值得學習研究(有較大的移植重用空間)。
而其中DreadMaze2的源碼可以生成任意大小的隨機迷宮,也附帶有自走未知大小迷宮的功能,還有一個簡單的游戲模式,可以在隨機迷宮中打怪。Warcraft_Remake這個游戲也非常有參考價值,其完整模擬了《魔獸爭霸一》的戰場功能,從AI戰斗到建筑物升級與修復等等無一不包。至于SRPGWar這個工程中的源碼雖僅有一關,卻屬于比較罕見的即時戰斗的SRPG,有傭兵系統,也有多兵種指揮,只是結構比較混亂,較難重用。
代碼片段和文件信息
//?Decompiled?by?Jad?v1.5.8g.?Copyright?2001?Pavel?Kouznetsov.
//?Jad?home?page:?http://www.kpdus.com/jad.html
//?Decompiler?options:?packimports(3)?
//?Source?File?Name:???AnimationSet.java
package?mm;
import?java.awt.image.BufferedImage;
import?java.io.PrintStream;
import?java.util.*;
//?Referenced?classes?of?package?mm:
//????????????ImageManager?Globals?SoundManager
public?class?AnimationSet
{
????public?static?class?Animation
????{
????????public?BufferedImage?getCurrentImage()
????????{
????????????return?ImageManager.getImage((new?StringBuilder(String.valueOf(prefix))).append(currentframe).append(“.png“).toString());
????????}
????????public?void?advance()
????????{
????????????int?now?=?Globals.getCurrentTurn();
????????????if(now?-?lastAdvance?>=?delay?&&?currentframe?ames?-?1)
????????????{
????????????????currentframe++;
????????????????lastAdvance?=?now;
????????????????if(soundPrefix.length()?>?0)
????????????????????SoundManager.playSound((new?StringBuilder(String.valueOf(soundPrefix))).append(currentframe).append(“.wav“).toString());
????????????}
????????}
????????public?boolean?isDone()
????????{
????????????int?now?=?Globals.getCurrentTurn();
????????????return?now?-?lastAdvance?>=?Math.max(delay?endDelay)?&&?currentframe?>=?nframes?-?1;
????????}
????????public?int?getPriority()
????????{
????????????return?priority;
????????}
????????public?void?restart()
????????{
????????????currentframe?=?0;
????????????lastAdvance?=?Globals.getCurrentTurn();
????????????if(soundPrefix.length()?>?0)
????????????????SoundManager.playSound((new?StringBuilder(String.valueOf(soundPrefix))).append(currentframe).append(“.wav“).toString());
????????}
????????public?void?preloadAll()
????????{
????????????for(int?i?=?0;?i?ames;?i++)
????????????{
????????????????ImageManager.preloadImage((new?StringBuilder(String.valueOf(prefix))).append(i).append(“.png“).toString());
????????????????if(soundPrefix.length()?>?0)
????????????????????SoundManager.preloadSound((new?StringBuilder(String.valueOf(soundPrefix))).append(i).append(“.wav“).toString());
????????????}
????????}
????????private?String?prefix;
????????private?String?soundPrefix;
????????private?int?nframes;
????????private?int?delay;
????????private?int?endDelay;
????????private?int?priority;
????????private?int?currentframe;
????????private?int?lastAdvance;
????????public?Animation(String?name?String?sound?int?num?int?pause?int?endPause?int?prioritee)
????????{
????????????prefix?=?name;
????????????soundPrefix?=?sound;
????????????nframes?=?num;
????????????delay?=?pause;
????????????endDelay?=?endPause;
????????????priority?=?prioritee;
????????????currentframe?=?0;
????????}
????}
????public?AnimationSet(String?defaultNom?Animation?defaultAnimation)
????{
????????animations?=?new?HashMap();
????????defaultName?=?defaultNom;
????????currentAnimation?=?defaultName;
???
評論
共有 條評論