📄 canvaszhu.java
字号:
runStart();
repaint();
Thread.sleep(60);
break;
case Continue:
ReadGame();
keyControl = true;
if (beijing == null) {
beijing = Image.createImage("/zhu/res/beijing.png");
repaint();
}
break;
case HelpForm:
if (caozuo == null) {
caozuo = Image.createImage("/zhu/res/caozuo.png");
repaint();
}
break;
case FirstForm:
/** 动化中狼和猪走动切图频率 */
runpinlv();
/** 连续按键 */
runkeypressed();
/** ******箭的移动******** */
runjiance();// 生成新的箭
runjianMove();// 箭左移动
/** ******狼的移动******** */
runFirstForm();
repaint();
Thread.sleep(100);
break;
}
} catch (Exception e) {
}
}
}
private void runkeypressed() {
// 连续按键
if (pressedUp) {
if (zhuFirstFormy <= 80) {
pressedUp = false;
} else {
zhuFirstFormy -= 8;
}
}
if (pressedDown) {
if (zhuFirstFormy >= 240) {
pressedDown = false;
} else {
zhuFirstFormy += 8;
}
}
}
private void runStart() {
if (langfangxiang[0] == 3) {
if (langStartx >= -(LANG_ZHU + LANG_ZHU + 40)) {
/** 一个LANG_ZHU是小猪图的宽度 */
langStartx -= 5;
} else {
langfangxiang[0] = 0;
}
if (zhux >= 0 && langStartx <= WIDTH / 2) {
zhux -= 5;
}
} else {
if (langStartx <= WIDTH + 40) {
langStartx += 5;
} else {
langfangxiang[0] = 3;
}
if (zhux <= WIDTH) {
zhux += 5;
}
}
}
private void runpinlv() {
tushu++;
if (tushu == 3) {
if (tushuL == 2) {
tushuL = -1;
}
if (tushuZ == 1) {
tushuZ = -1;
}
tushuZ++;
tushuL++;
tushu = 0;
}
}
private void runjianMove() {
for (int i = 0; i < jianArray.length; i++) {
if (jianArray[i][0] > -(LANG_ZHU - 5) && jianArray[i][0] != ZHUX) {
jianArray[i][0] -= 10;// 箭左移
} else if (jianArray[i][0] < -(LANG_ZHU - 5)) {
jianArray[i][0] = -(LANG_ZHU - 5);
}
}
}
private void runjiance() {
if (controljian) {// 只出现一个x坐标为 ZHUX 的箭
for (int i = 0; i < jianArray.length; i++) {
if (jianArray[i][0] == ZHUX) {
controljian = false;
break;
}
if (jiange <= 45) {
jiange++;
} else {
for (byte ii = 0; ii < jianArray.length; ii++) {
if (jianArray[ii][0] <= -(LANG_ZHU - 5)) {
jianArray[ii][0] = ZHUX;
jiange = 0;
jiani = ii;
controljian = false;
break;
}
}
}
}
}
}
private void runFirstForm() {
for (byte i = 0; i <= ii; i++) {
if (langLife == 7) {// 上到崖上的狼数 控制石头下落
// 禁止移动和发射键盘
keyControl = false;
// 石头下落
runshiDown();
} else if (langLife <= 6) {
if ((langx[i] == langLifeArray[langLife] && langy[i] == YA_Y)) {
// 当狼移动到崖上狼队伍的末尾时,数据初始化,狼重新在右下出现
runReNewNum(i);
} else {
// 狼移动
runlangMove(i);
}
}
if (temp[i] == 20 && ii < 2) {
ii++;
}
}
}
private void runReNewNum(byte ii) {
qiqiuy[ii] = (HEIGHT - LANG_ZHU);
langfangxiang[ii] = 0;
if (langLife >= 2) {
for (int i = 0; i < langLifeArray.length; i++) {
// 崖上狼 右移 10
langLifeArray[i] = (langLifeArray[i] + 10);
}
// 石头右移动
shix += 10;
}
langLife++;// 活着的狼数
t[ii] = (byte) (Math.abs(r.nextInt() % 28) + 5);
temp[ii] = 0;
langx[ii] = 0;
langy[ii] = HEIGHT;
boolDun[ii] = false;
defenbool[ii] = true;
}
private void runlangMove(byte ii) {
if (t[ii] >= temp[ii]) {
/** 狼向右移动 */
langx[ii] += 5;// 狼出来 向右移动
temp[ii]++;// 狼移动次数
} else {
/** 狼向上移动 */
runLangUpMove(ii);
}
}
private void runLangUpMove(byte ii) {
// 加气球
if (qiqiuy[ii] + LANG_ZHU == langy[ii]) {
boolQiqiu[ii] = true;
}
// 碰撞判断
runpengzhuang(ii);
// 向上移动
if (!bool[ii] && controlMove[ii]) {// boolLang == true
// 狼移动方向标识
langfangxiang[ii] = 1;
// 狼移动操作
if (qiqiuy[ii] >= 0) {
qiqiuy[ii] -= 5;
langy[ii] = qiqiuy[ii] + LANG_ZHU;
}
if (langy[ii] <= YA_Y) {// 崖的x坐标 40
if (langy[ii] < YA_Y) {
langy[ii] = YA_Y;
} else {
boolQiqiu[ii] = false;
boolDun[ii] = false;
/** 狼在崖上移动 */
runLangUpMove_YA(ii);
}
}
} else {
/** 狼被射中向下移动,气球向上移动 */
runlangDownMove(ii);
}
}
private void runlangDownMove(byte ii) {
if (langy[ii] >= HEIGHT + LANG_ZHU && qiqiuy[ii] <= 0) {
// 为狼重新出现 数据初始化
qiqiuy[ii] = (HEIGHT - LANG_ZHU);
t[ii] = (byte) (Math.abs(r.nextInt() % 28) + 5);
temp[ii] = 0;
langx[ii] = 0;
langy[ii] = HEIGHT;
defenbool[ii] = true;
bool[ii] = false;
boolQiqiu[ii] = false;
langfangxiang[ii] = 0;
controlMove[ii] = true;
} else {
// 狼 气球移动
langy[ii] += 10;
qiqiuy[ii] -= 10;
}
}
private void runLangUpMove_YA(byte ii) {
if (Math.abs(langLifeArray[langLife] - langx[ii]) > 5) {
if (langLifeArray[langLife] < langx[ii]) {
langfangxiang[ii] = 3;
langx[ii] -= 5;
}
if (langLifeArray[langLife] > langx[ii]) {
langfangxiang[ii] = 4;
langx[ii] += 5;
}
} else {
langfangxiang[ii] = 5;
langx[ii] = langLifeArray[langLife];
}
}
private void runpengzhuang(byte ii) {
// 碰撞处理 中了为true
for (int i = 0; i < jianArray.length; i++) {
/** ***射中狼的判断**** */
if ((LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
* (LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
+ (LANG_ZHU / 2 + 3 / 2)// 箭的高度为3
* (LANG_ZHU / 2 + 3 / 2) >= (jianArray[i][0]
- (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
* (jianArray[i][0] - (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
+ (jianArray[i][1] - 3 / 2 - (langy[ii] - LANG_ZHU / 2))
* (jianArray[i][1] - 3 / 2 - (langy[ii] - LANG_ZHU / 2))) {// 射中狼
if (t[ii] % 4 == 0) {// 几率射中
bool[ii] = bool[ii] || true;
controlMove[ii] = false;
langfangxiang[ii] = 2;// 狼死
if (defenbool[ii]) {
defen = defen + 10;
defenString = DEFENS + defen;
defenbool[ii] = false;
}
jianArray[i][0] = -LANG_ZHU;
break;
} else {
boolDun[ii] = true;
jianArray[i][0] = -LANG_ZHU;
}
}
/** ***射中气球判断**** */
if ((LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
* (LANG_ZHU / 2 + (LANG_ZHU - 5) / 4)
+ (LANG_ZHU / 2 + 3 / 2) * (LANG_ZHU / 2 + 3 / 2) >= (jianArray[i][0]
- (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
* (jianArray[i][0] - (LANG_ZHU - 5) / 4 - (langx[ii] - LANG_ZHU / 2))
+ (jianArray[i][1] - 3 / 2 - (qiqiuy[ii] - LANG_ZHU / 2))
* (jianArray[i][1] - 3 / 2 - (qiqiuy[ii] - LANG_ZHU / 2))) {
bool[ii] = bool[ii] || true;
controlMove[ii] = false;
boolQiqiu[ii] = false;
boolDun[ii] = false;
langfangxiang[ii] = 2;
if (defenbool[ii]) {
defen = defen + 3;
defenString = DEFENS + defen;
defenbool[ii] = false;
}
break;
}
}
}
private void runshiDown() {
if (shiy <= zhuFirstFormy) {
shiy = (shiy + 10);
} else {
try {
Thread.sleep(1000);
// 让狼的移动条件都不成立
langLife = 8;
// 跳转到下个界面
index = Result;
} catch (Exception e) {
}
}
}
private void SaveGame() {
try {
rs = RecordStore.openRecordStore("recordlist", false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeByte(ii);
dos.writeInt(defen);
dos.writeByte(index);
dos.writeByte(jiange);
dos.writeByte(jiani);
dos.writeByte(langLife);
dos.writeByte(Menu_index);
dos.writeInt(shix);
dos.writeInt(shiy);
dos.writeBoolean(controljian);
dos.writeInt(zhuFirstFormy);
for (int i = 0; i < jianArray.length; i++) {
for (int j = 0; j < jianArray[i].length; j++) {
dos.writeInt(jianArray[i][j]);
}
}
for (int i = 0; i < 3; i++) {
dos.writeInt(langx[i]);
dos.writeInt(langy[i]);
dos.writeInt(qiqiuy[i]);
dos.writeBoolean(controlMove[i]);
dos.writeBoolean(boolQiqiu[i]);
dos.writeBoolean(boolDun[i]);
dos.writeBoolean(defenbool[i]);
dos.writeByte(t[i]);
dos.writeByte(temp[i]);
dos.writeBoolean(bool[i]);
dos.writeByte(langfangxiang[i]);
}
String s="";
if (rs.getNumRecords() == 1) {
s= String.valueOf(0);
rs.addRecord(s.getBytes(), 0, s.getBytes().length);
}
rs.setRecord(2, baos.toByteArray(), 0, baos.toByteArray().length);
baos.close();
dos.close();
// 存到编号为1的记录集
s = String.valueOf(jixu);
rs.setRecord(1, s.getBytes(), 0, s.getBytes().length);
s=null;
rs.closeRecordStore();
} catch (Exception e) {
}
}
private void ReadGame() {
try {
rs = RecordStore.openRecordStore("recordlist", false);
ByteArrayInputStream bais = new ByteArrayInputStream(rs
.getRecord(2));
DataInputStream dis = new DataInputStream(bais);
ii = dis.readByte();
defen = dis.readInt();
index = dis.readByte();
jiange = dis.readByte();
jiani = dis.readByte();
langLife = dis.readByte();
Menu_index = dis.readByte();
shix = dis.readInt();
shiy = dis.readInt();
controljian = dis.readBoolean();
zhuFirstFormy = dis.readInt();
for (int i = 0; i < jianArray.length; i++) {
for (int j = 0; j < jianArray[i].length; j++) {
jianArray[i][j] = dis.readInt();
}
}
for (int i = 0; i < 3; i++) {
langx[i] = dis.readInt();
langy[i] = dis.readInt();
qiqiuy[i] = dis.readInt();
controlMove[i] = dis.readBoolean();
boolQiqiu[i] = dis.readBoolean();
boolDun[i] = dis.readBoolean();
defenbool[i] = dis.readBoolean();
t[i] = dis.readByte();
temp[i] = dis.readByte();
bool[i] = dis.readBoolean();
langfangxiang[i] = dis.readByte();
}
defenString = DEFENS + defen;
} catch (Exception e) {
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -