📄 gameworld.java
字号:
case 1:
drawFrame(mainMenu, 0, x, 180, 72, 17, 0, g);
break;
case 2:
drawFrame(mainMenu, 0, x, 180, 72, 17, 1, g);
break;
case 3:
drawFrame(mainMenu, 0, x, 180, 72, 17, 2, g);
break;
case 4:
drawFrame(mainMenu, 0, x, 180, 72, 17, 3, g);
break;
case 5:
drawFrame(mainMenu, 0, x, 180, 72, 17, 4, g);
break;
}
if (true)
{
drawFrame(icoImage, 0, 40, 182, 6, 11, 0, g);
drawFrame(icoImage, 1, 130, 182, 6, 11, 0, g);
}
// showMemory(g);
}
/** *************************音效设置************************** */
if (setGame)
{
g.setColor(0x000000);
g.fillRect(0, 0, screenWidth, screenHeight);
drawFrame(menuSelect, 0, 53, 73, 68, 58, 0, g);
drawFrame(menuSelect, 2, 53, 73, 68, 58, 0, g);
if (sound)
{
drawFrame(menuSelect, 4, 53, 73, 68, 29, 0, g);
drawFrame(menuSelect, 8, 53, 102, 34, 29, 1, g);
} else
{
drawFrame(menuSelect, 9, 87, 102, 34, 29, 1, g);
}
if (!keyMenu)
{
keyTime += speed;
if (keyTime >= 500)
{
keyMenu = true;
keyTime = 0;
}
}
// showMemory(g);
return;
}
/** *************************帮助画面************************ */
if (help)
{
if (!keyMenu)
{
keyTime += speed;
if (keyTime >= 500)
{
keyMenu = true;
keyTime = 0;
}
}
g.setColor(0x000000);
g.fillRect(0, 0, screenWidth, screenHeight);
g.setColor(0xffffff);
switch (helpItem)
{
case 0:
g.drawString(" 【剧情介绍】", 0, 20, 20);
g.drawString("游戏中玩家扮演的是", 32, 40, 20);
g.drawString("一位骁勇的特种兵,执行", 0, 60, 20);
g.drawString("清剿叛乱份子的任务。游", 0, 80, 20);
g.drawString("戏采用第一人称视角,视", 0, 100, 20);
g.drawString("野随时间流逝而移动,玩", 0, 120, 20);
g.drawString("家控制瞄准镜的移动,瞄", 0, 140, 20);
g.drawString("准并射击消灭敌人。", 0, 160, 20);
break;
case 1:
g.drawString(" 【操作方式】", 0, 20, 20);
g.drawString("菜单界面下,导航键控制", 0, 40, 20);
g.drawString("光标移动,左软键确定 ,", 0, 60, 20);
g.drawString("右软键取消游戏界面下 ,", 0, 80, 20);
g.drawString("导航键或者 1 2 3 4 6 7 8 9", 0, 100, 20);
g.drawString("八个键控制瞄准镜向八个", 0, 120, 20);
g.drawString("对应的方向移动, 5 键进", 0, 140, 20);
g.drawString("行单发射击,* 键发动空", 0, 160, 20);
g.drawString("袭进行全屏攻击。", 0, 180, 20);
break;
case 2:
g.drawString(" 【系统介绍】", 0, 20, 20);
g.drawString("游戏中玩家击败敌人", 32, 40, 20);
g.drawString("一定几率获得生命值,全", 0, 60, 20);
g.drawString("屏导弹以及常规子弹,由", 0, 80, 20);
g.drawString("于数量有限并且威力巨大,", 0, 100, 20);
g.drawString("所以建议用不要太浪费。", 0, 120, 20);
g.drawString("不要妄想把所有的敌人都", 0, 140, 20);
g.drawString("消灭,合理的利用现有资", 0, 160, 20);
g.drawString("源才是取胜之道。", 0, 180, 20);
break;
}
// showMemory(g);
return;
}
/** *****************************************开***************场********************************* */
if (isStartCaption)
{// 显示开场序幕,
if (!keyMenu)
{
keyTime += speed;
if (keyTime >= 500)
{
keyMenu = true;
keyTime = 0;
}
}
level = 1;
if (caption == null)
{
caption = new Image[2];
caption[0] = loadImage("/actionMan.png");
caption[1] = loadImage("/action.png");
}
g.setColor(0x000000);
g.fillRect(0, 0, screenWidth, screenHeight);
g.setColor(0xff0000);
// 开始动画
switch (startCaptionFlag / 50)
{
case 0:
drawFrame(caption[0], 0, 0, 0, 91, 72, 0, buffImag
.getGraphics());
drawFrame(caption[1], 2, 0 - 2 - vx1, 0 - 10, 53, 60, 0,
buffImag.getGraphics());
drawFrame(caption[1], 3, 0 + 45 + vx1, 0 - 10, 53, 60, 0,
buffImag.getGraphics());
g.drawImage(buffImag, 0, 120, 20);
if (vx1 < 15 && startCaptionFlag / 10 > 1)
vx1++;
break;
case 1:
drawFrame(caption[0], 1, 0, 0, 91, 72, 0, buffImag
.getGraphics());
drawFrame(caption[1], 4, 0 - vx2, 0 - 19, 53, 60, 0, buffImag
.getGraphics());
g.drawImage(buffImag, 85, 80, 20);
if (vx2 < 15 && startCaptionFlag / 10 > 6)
vx2++;
break;
case 2:
drawFrame(caption[0], 2, 0, 0, 91, 72, 0, buffImag
.getGraphics());
drawFrame(caption[1], 1, 0 + 24, 0 + 35 - vx3, 53, 60, 0,
buffImag.getGraphics());
drawFrame(caption[1], 0, 0 + 25, 0 - 21, 53, 60, 0, buffImag
.getGraphics());
g.drawImage(buffImag, 85, 33, 20);
if (vx3 < 15 && startCaptionFlag / 10 > 11)
vx3++;
break;
case 3:
drawFrame(caption[0], 3, 0, 0, 91, 72, 0, buffImag
.getGraphics());
drawFrame(caption[1], 5, 0 + 49 + vx4, 0 + vx4, 53, 60, 0,
buffImag.getGraphics());
g.drawImage(buffImag, 8, 8, 20);
if (vx4 < 15 && startCaptionFlag / 10 > 16)
vx4++;
break;
}
if ((startCaptionFlag / 50) == 4)
{// 开始游戏条件
caption = null;
isStartCaption = false;
startCaptionFlag = 0;
System.gc();
initGame(20, level);
gameStart = true;
return;
} else
{
startCaptionFlag++;
}
// showMemory(g);
return;
}
if (isLoading)
{
g.setColor(0x000000);
g.fillRect(0, 0, screenWidth, screenHeight);
g.setColor(0xffffff);
g.drawRect(19, screenHeight - 26, 131, 6);
g.setColor(0xff2222);
g.fillRect(20, screenHeight - 25, 8 * this.loadScale, 5);
// drawFrame(this.gameLogoImage, 0, 0, 0, 176, 167, 0, g);
// showMemory(g);
return;
}
return;
}
/**
* 绘制分数
* @param g Graphics 画笔对象
* @param num int 分数
* @param x int X坐标
* @param y int Y坐标
* @param w int 每一个数字的宽度
* @param h int 每一个数字的高度
* @param im Image 源图片
*/
final void paintNum(Graphics g, int num, int x, int y, int w, int h,
Image im)
{
if (num == -1)
{
drawFrame(im, 0, x + w, y, w, h, 2, g);
} else if (num == 1000000)
{
} else if (num > 100000)
{
} else if (num > 10000)
{
} else if (num > 1000)
{
} else if (num == 100)
{
drawFrame(im, 1, x + w, y, w, h, 0, g);
drawFrame(im, 0, x + w * 2 + 1, y, w, h, 0, g);
drawFrame(im, 0, x + w * 3 + 2, y, w, h, 0, g);
} else if (num >= 10)
{
int temp = num / 10;
drawFrame(im, temp, x + w * 2 + 1, y, w, h, 0, g);
temp = num % 10;
drawFrame(im, temp, x + w * 3 + 2, y, w, h, 0, g);
} else
{
int temp = num % 10;
drawFrame(im, temp, x + w * 3 + 2, y, w, h, 0, g);
}
}
// 读取地图
public byte[][] loadMap(String lv)
{
byte[][] bb = new byte[13][100];
try
{
InputStream in = getClass().getResourceAsStream("/map.txt");
DataInputStream din = new DataInputStream(in);
String ss = din.readUTF();
while (ss != null)
{
if (ss.equals(lv))
{
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < 100; j++)
{
bb[i][j] = din.readByte();
}
}
break;
} else
{
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < 100; j++)
{
din.readByte();
}
}
ss = din.readUTF();
}
}
in.close();
din.close();
} catch (Exception ex)
{
}
return bb;
}
// 测试RMS是否被初始
public boolean testRMS()
{
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", false);
rs.getRecord(1);
return true;
} catch (Exception ex)
{
return false;
}
}
// 初始化RMS
public void initRMS()
{
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", true);
ByteArrayOutputStream os = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeInt(1); // 关卡数
byte[] bb = os.toByteArray();
os.flush();
os.reset();
rs.addRecord(bb, 0, bb.length);
for (int i = 0; i < 9; i++)
{
dos.writeBoolean(false);
byte[] bb2 = os.toByteArray();
os.flush();
os.reset();
rs.addRecord(bb2, 0, bb2.length);
}
dos.writeBoolean(true);
byte[] bb3 = os.toByteArray();
rs.addRecord(bb3, 0, bb3.length);
rs.closeRecordStore();
os.close();
dos.close();
} catch (Exception ex)
{
System.out.println("Gameworld initRMS");
ex.printStackTrace();
}
}
// 自动保存记录
public void autoSave()
{
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", false);
ByteArrayOutputStream os = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(os);
if (level == 10)
{
dos.writeInt(9);
} else
{
dos.writeInt(level);
}
byte[] bb = os.toByteArray();
// if (level >= this.allowLevel)//保存最高的关数
// {
rs.setRecord(1, bb, 0, bb.length);
// }
os.reset();
dos.flush();
rs.closeRecordStore();
os.close();
dos.close();
} catch (Exception ex)
{
System.out.println("Gameworld autoSave");
ex.printStackTrace();
}
}
// 保存声音数据
public void saveSetUP()
{
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", true);
ByteArrayOutputStream os = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeBoolean(sound);
byte[] bb = os.toByteArray();
rs.setRecord(11, bb, 0, bb.length);
rs.closeRecordStore();
os.close();
dos.close();
} catch (Exception ex)
{
System.out.println("Gameworld saveSetUP");
ex.printStackTrace();
}
}
// 读取声音数据
public boolean loadSetUP()
{
boolean b = false;
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", true);
byte[] bb = rs.getRecord(11);
ByteArrayInputStream is = new ByteArrayInputStream(bb);
DataInputStream dis = new DataInputStream(is);
b = dis.readBoolean();
rs.closeRecordStore();
is.close();
dis.close();
} catch (Exception ex)
{
System.out.println("Gameworld loadSetUP");
ex.printStackTrace();
}
return b;
}
//读取关卡
public int loadLevel()
{
int temp = 0;
try
{
RecordStore rs = RecordStore.openRecordStore("warGame", true);
byte[] bb = rs.getRecord(1);
ByteArrayInputStream is = new ByteArrayInputStream(bb);
DataInputStream dis = new DataInputStream(is);
temp = dis.readInt();
rs.closeRecordStore();
is.close();
dis.close();
} catch (Exception ex)
{
System.out.println("Gameworld loadLevel");
ex.printStackTrace();
}
return temp;
}
// /** 显示内存消耗 */
// public static void showMemory(Graphics g)
// {
// long memory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
// g.setColor(0xFF0000);
// g.drawString(" t="+Runtime.getRuntime().totalMemory()+" f="+Runtime.getRuntime().freeMemory()+" u="+memory, 0, 5, 0);
// System.gc();
// }
/** *************游戏中用到的图片**************** */
Image mainMenu = null;
Image menuSelect = null;
Image icoImage = null;
Image gameoverImage = null; //任务结果字样
Image uiImage = null; //画板
Image numberImage = null; //数字
static Image itemImage = null; //物品
static Vector bulletVector = null; //记录子弹图标
static int bulletImageX[];//={164,159,154,149,144,139,134,129,124,119, 164,159,154,149,144,139,134,129,124,119, 164,159,154,149,144,139,134,129,124,119};
static int bulletImageY[];//={200,200,200,200,200,200,200,200,200,200, 195,195,195,195,195,195,195,195,195,195, 190,190,190,190,190,190,190,190,190,190};
static Vector bombVector = null;
static int bombImageX[];//={9,16,23,30,37};
boolean lifeAlarm = true;//生命警报
/****************** LEVEL 1-1 至 1-3 **********************/
Image windowImage = null; //窗户
Image casernImage = null; //碉堡
Image stoneImage = null; //石头
Image backgroundImage=null; //背景
Image grenadeImage = null; //手雷
Image smallEnemyImage = null;//随机敌人
Image bigEnemyImage = null; //丢炸弹的士兵
Image bombImage = null; //爆炸效果
Image hpImage = null; //血瓶
Image shipImage = null; //船
Image tankImage = null; //坦克
Image playerImage = null; //主角视窗
Image towerImage = null; //塔
Image planeImage = null; //飞机
Image houseImage2 = null; //房子2
Image footmanImage3 = null; //特种兵
Image coconutImage = null; //叶子树
Image grassImage = null; //草
Image gameLogoImage = null; //开始背景
Image potImage = null; //木
Image busImage = null; //汽车
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -