📄 gamecanvas.java
字号:
power[6] -= GambingMoney[color];
} else {
power[6] = 0;
dm = "你已经没钱了";
isAgain = false;
scene = 25;
return;
}
// 进入提示界面
scene = 21;
return;
}
break;
// 选择不要的时候
case 1:
// 进入NPC操作状态
AI = true;
// 不显示提示文字
isShow = false;
break;
}
}
// 当按下左软键的时候,回到港口界面
if (keyCode == -6) {
scene = 2;
reStart();
}
}
/**
* npcAI的设定
*/
public void npcAI() {
// 当NPC点数比玩家小
if (aNumber < pNumber) {
// 而且NPC的点数不超过21的话
if (aNumber < 21) {
// 发一张牌
aNumber = Gambing(aNumber);
dm = " ";
}
}
}
/**
* 提示是否进入港口界面按键处理
*
* @param keyCode
* int 键值
* @param action
* int 游戏动作
*/
public void keySok(int keyCode, int action) {
// 根据游戏动作判断玩家选择哪个
switch (action) {
// 向左
case LEFT:
if (repairLabel > 0) {
repairLabel = 0;
} else {
repairLabel = 1;
}
break;
// 向右
case RIGHT:
if (repairLabel < 1) {
repairLabel = 1;
} else {
repairLabel = 0;
}
break;
}
// 当按下确定的时候
if (keyCode == -7) {
if (power[6] > 300) {
// 判断玩家选择哪个
switch (repairLabel) {
// 是
case 0:
// 还原默认值
reStart();
// 依次为玩家和NPC发2张牌
for (int i = 0; i < 2; i++) {
aNumber = Gambing(aNumber);
pNumber = Gambing(pNumber);
}
// 进入赌博界面
scene = 22;
// 是否再来一次设置为false
isAgain = false;
break;
// 否
case 1:
// 进入港口界面
scene = 2;
// 还原默认值
reStart();
// 是否再来一次设置为false
isAgain = false;
break;
}
} else {
dm = "没钱你也来这里";
scene = 25;
}
}
}
/**
* 主线任务对话事件处理
*
* @param keyCode键值
* @param action游戏动作
*/
public void kedog(int keyCode, int action) {
// 如果主线任务对话的下标小于任务进度的数组的话
if (mainindex < mainDalogLenth[mainDalogSum]) {
mainDalog = mainTaskInfo[mainindex];
// 当主线任务对话的下标小于主线任务对话的长度的时候
if (mainindex < mainTaskInfo.length) {
// 显示下一个对话
mainindex++;
}
} else {
// 显示港口界面
scene = 2;
// 对话进度小于主线任务对话的长度
if (mainDalogSum < mainDalogLenth.length) {
mainDalogSum++;
}
}
// 如果主线任务的进度到达2的时候
if (mainTask[1] == 2) {
// 长度小于当前任务的长度
if (mainindex < mainDalogLenth[mainDalogSum]) {
mainDalog = mainTaskInfo[mainindex];
// 当主线任务对话的下标小于主线任务对话的长度的时候
if (mainindex < mainTaskInfo.length) {
// 显示下一个对话
mainindex++;
}
} else {
// 显示港口界面
scene = 2;
// 对话进度小于主线任务对话的长度
if (mainDalogSum < mainDalogLenth.length) {
mainDalogSum++;
}
}
}
}
/**
* 是否移动下标
*
* @param powernum
* int 玩家属性的下标
* @param max
* int[] 需要金钱的数组
* @param mindex
* int 上限的下标
*/
public void moveIndex(int powernum, int max[], int mindex) {
if (power[powernum] == max[moenyindex[mindex]]
&& power[0] >= moenyindex[mindex]) {
moenyindex[mindex]++;
}
}
/**
* 升级属性事件处理
*
* @param powernum所选升级属性
* @param max当前船体升级上限
* @param money升级需要金钱
* @param sum升级增量
*/
protected void LvUp(int powernum, int max[], int index, int mindex, int sum) {
if (power[powernum] < max[moenyindex[mindex]]) {
if (power[6] > Money[index][moenyindex[mindex]]) {
power[6] -= Money[index][moenyindex[mindex]];
power[powernum] += sum;
// 提示升级成功
scene = 11;
dm = "升级成功";
} else {
// 提示金币不足,无法升级
scene = 11;
dm = "金币不足,无法升级";
}
} else {
// 提示船体等级不够,无法升级
scene = 11;
dm = "船体等级不够,无法升级";
}
}
/**
* 船体升级属性事件处理
*
* @param powernum当前船体等级
* @param lvsoundnum需要声望
* @param moneynum需要花费的金钱
*/
protected void LvUp(int powernum, int lvsoundnum, int moneynum) {
if (power[powernum] > lvSound[lvsoundnum]) {
if (power[6] > lvMoney[moneynum]) {
power[6] -= lvMoney[moneynum];
power[0]++;
power[8] += 50;
// 提示升级成功
scene = 11;
dm = "升级成功";
} else {
// 提示金币不足,无法升级
scene = 11;
dm = "金币不足,无法升级";
}
} else {
// 提示声望不足,无法升级
scene = 11;
dm = "声望不足,无法升级";
}
}
/**
* 当按键释放时
*
* @param keyCode释放按键对应的键值
*/
protected void keyReleased(int keyCode) {
// 根据当前scene的值判断执行按键处理
if (scene == 0 || scene == 20) {
// 正常航行状态
direction = -1;
}
}
/** 读取游戏进度 */
void loadGame() {
int len = 0;
try {
RecordStore rs = RecordStore.openRecordStore("NavigateGame", false);
int RMSax = rs.getNumRecords();
if (RMSax == 1) {
byte[] data = rs.getRecord(1);
// 创建输入流对象
ByteArrayInputStream baos = new ByteArrayInputStream(data);
DataInputStream bo = new DataInputStream(baos);
// 恢复数据
len = power.length;
for (int i = 0; i < len; i++) {
power[i] = bo.readInt();
}
// 当前mx,my,x,y,dx,dy,x1,y1坐标
x = bo.readInt();
y = bo.readInt();
mx = bo.readInt();
my = bo.readInt();
dx = bo.readInt();
dy = bo.readInt();
x1 = bo.readInt();
y1 = bo.readInt();
// 保存当前游戏各项任务相关参数,主线任务,跑商任务,
len = mainTask.length;
for (int i = 0; i < len; i++) {
mainTask[i] = bo.readInt();
}
len = runShangTask.length;
for (int i = 0; i < len; i++) {
runShangTask[i] = bo.readInt();
}
// 保存当前游戏隐藏地图打开进度
len = mapOpen.length;
for (int i = 0; i < len; i++) {
mapOpen[i] = bo.readBoolean();
}
// 保存当前地图序号
mapIndex = bo.readInt();
// 保存当前弹药数量
len = ammo.length;
for (int i = 0; i < len; i++) {
ammo[i] = bo.readInt();
}
// 保存当前船舱货物
len = deport.length;
for (int i = 0; i < len; i++) {
deport[i] = bo.readInt();
}
// 关闭流对象
bo.close();
baos.close();
// 关闭记录集
rs.closeRecordStore();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/** 保存游戏 */
// 保存游戏内相关参数:
void saveGame() {
int len = 0;
// 打开(创建)记录集
try {
RecordStore rs = RecordStore.openRecordStore("NavigateGame", true);
// 创建输出流对象
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream bo = new DataOutputStream(baos);
// 记录数据
// 当前玩家power数组内相关参数
len = power.length;
for (int i = 0; i < len; i++) {
bo.writeInt(power[i]);
}
// 当前mx,my,x,y,dx,dy,x1,y1坐标
bo.writeInt(x);
bo.writeInt(y);
bo.writeInt(mx);
bo.writeInt(my);
bo.writeInt(dx);
bo.writeInt(dy);
bo.writeInt(x1);
bo.writeInt(y1);
// 保存当前游戏各项任务相关参数,主线任务,跑商任务,
len = mainTask.length;
for (int i = 0; i < len; i++) {
bo.writeInt(mainTask[i]);
}
len = runShangTask.length;
for (int i = 0; i < len; i++) {
bo.writeInt(runShangTask[i]);
}
// 保存当前游戏隐藏地图打开进度
len = mapOpen.length;
for (int i = 0; i < len; i++) {
bo.writeBoolean(mapOpen[i]);
}
// 保存当前地图序号
bo.writeInt(mapIndex);
// 保存当前弹药数量
len = ammo.length;
for (int i = 0; i < len; i++) {
bo.writeInt(ammo[i]);
}
// 保存当前船舱货物
len = deport.length;
for (int i = 0; i < len; i++) {
bo.writeInt(deport[i]);
}
// 将数据存入byte数组
byte[] data = baos.toByteArray();
// 将数据存入记录集中
int RMSax = rs.getNumRecords();
if (RMSax == 0) {
rs.addRecord(data, 0, data.length);
} else {
rs.setRecord(1, data, 0, data.length);
}
// 关闭流对象
bo.close();
baos.close();
// 关闭记录集
rs.closeRecordStore();
} catch (Exception e) {
}
}
/**
* 清屏方法
*
* @param g画笔对象
*/
public void clearCanvas(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
g.setColor(0);
}
/**
* 部分清屏方法
*
* @param g画笔对象
*/
public void clearSome(Graphics g) {
// 部分清屏
g.setClip(1, cy, width, cueImage.getHeight());
g.setColor(0xffffff);
g.fillRect(1, cy, width, cueImage.getHeight());
g.setColor(0);
g.setClip(0, 0, width, height);
}
protected void paint(Graphics g) {
g.setFont(f);
switch (scene) {
// 剧情界面
case -1:
if (isRuning == false) {
g.drawImage(gutBack, 0, 0, Graphics.TOP | Graphics.LEFT);
if (gutTemp == null) {
gutTemp = splitString(gutString);
}
for (int i = 0; i < gutTemp.length; i++) {
if (i == 0) {
g.drawString(gutTemp[i], 17 + strWidth * 2, 55 + i
* strHeight, Graphics.BASELINE | Graphics.LEFT);
} else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -