📄 gamecanvas.java
字号:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Random;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreNotFoundException;
/*
* Created on 2007-6-15
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GameCanvas extends Canvas implements Runnable{
GameMidlet m;
RecordStore rs;
String[] menu = {"开始新游戏","读取游戏","游戏背景","帮 助","退出游戏"};
String[] str = {"买","卖","道具名称","价格","数量","确定","重设","退出"};
int select = 0,select1 = 0,select2 = 0,select3 = 0,select4 = 0,select5 = 0,select6 = 0; //选择
String[][] place = {
{"红 豆 村","红豆村外","红豆城堡"},
{"橙 橘 村","橙橘村外","橙橘城堡"},
{"黄 土 村","黄土村外","黄土城堡"},
{"绿 荫 村","绿荫村外","绿荫城堡"},
{"青 竹 村","青竹村外","青竹城堡"},
{"蓝 莲 村","蓝莲村外","蓝莲城堡"},
{"紫 桐 村","紫桐村外","紫桐城堡"}
};
int change = 0; //选择对话框属性,0是买卖选择,1是物品栏选择,2是购买选择
int screenState = 0;
//-1是LOGO界面动画,0是菜单界面,1是游戏界面,2是战斗界面
int checkPoint; //关卡数
private boolean talk = false; //是否处于对话状态
private boolean buy = false; //是否处于购买状态
private boolean add = false,subtract = false; //加减状态
private boolean function = false; //功能界面是否打开
private boolean selected = false; //物品是否被选中
private boolean stateRunnable = false; //状态开关是否打开
private boolean recordOpen = false; //记录是否被打开
private boolean placeState = false; //地点改变时触发的状态
private boolean fightMenuCtrl = false; //战斗界面菜单控制器
private boolean selectState = false; //战斗选择状态是否打开
private boolean attackState = false; //攻击状态
private boolean attackedState = false; //被攻击后的状态显示
private boolean chooseState = false; //战斗状态按钮触发器
private boolean deadState = false; //是否处于死亡状态
private boolean unUseState = false; //可用物品状态
private boolean fightOverState = false; //战斗结束状态
private boolean infoStart = true; //开始菜单事件触发器
private boolean gameOver = false; //游戏全部结束触发事件开关
private int infomation = 0; //事件触发信息
private int overEvent = 0;
//战斗结束事件触发,0为无事件状态,1是战斗胜利,2是战斗失败
private int isAttacked = 0;
//是否被攻击,0是无攻击效果,1是被攻击状态,2是躲闪状态
private int fightState = 0;
//战斗状态,0是不战斗,1是与NPC战斗,2是与BOSS战斗
private int placeChange = 0;
//地点改变时的位置,0是初始位置,1是村内,2是村外,3是boss基地
private int recordState = 0;
//存储记录状态,0是无存储状态,1是存储,2是读取,3是无读取状态,4是删除,5是无删除状态
int talkState = 0;
//说话状态,0是没有,1是与村长的对话状态,2是与防具商对话状态,
//3是与药材商对话状态,4是与boss战斗前对话状态,5与boss战斗后对话
int chooseEnd = 0;
//选择效果,0是无效果,1是攻击气杀,2是普通攻击,3是道具状态,4是防御骤增,5是撤退效果
/***************PLAYER属性***************/
private int pFount = 0; //人物行走方向
private int pFrame = 0; //人物桢变化
private int prow = 0; //人物坐标
private int pcol = 0;
private int pLevel = 0; //等级
private int currentExpValue = 0; //当前经验值
private int maxExpValue = 0; //最大经验值
private int current_pLifeValue = 0; //当前生命值
private int max_pLifeValue = 0; //最大生命值
private int current_pPower = 0; //当前气功值
private int max_pPower = 0; //最大气功值
private int pAttack = 0; //攻击力
private int pDefense = 0; //防御力
private int pHit = 0; //命中值
private int pFends = 0; //闪避值
private int pJust = 0; //正义值
private int pMoney = 0; //player金钱
/***************NPC属性***************/
private int[] nFrame = {0,0,0}; //npc桢变化
private int[] nStyle = {-1,-1,-1}; //npc的类型,0是绿怪,1是矮怪,2是boss
private int nNum = 0; //npc的数量,不超过3个
/***************绘制开始菜单***************/
private void drawBegin(Graphics g){
g.setClip(0,0,w,h);
g.drawImage(bei,0,0,20);
g.setColor(0x4193a8);
g.setFont(font1);
for(int i=0;i<5;i++){
if(select==i){
g.setColor(0xaae7f7);
}
else
g.setColor(0x4193a8);
g.drawString(menu[i],90,130+i*20,Graphics.TOP|Graphics.HCENTER);
}
}
String[] gameFront = {
" 在纷乱缭绕的战国时期,干将偕同妻子",
"莫邪准备退出战乱,隐居深山。孰料在经过",
"天魔山山脚时,一阵狂风肆虐,沙石四起,",
"二人顿时眼前一片漆黑。过了不知多久,天",
"色逐渐好转,眼前的山清水色依然没有变,",
"只是干将觉得好象少了什么,回头一看,妻",
"子莫邪已杳无身影,干将随即向过路人群询",
"问后才得知,妻子原来是被这天魔山的妖怪",
"掳走了,愤慨之下,干将重新背起宝剑,向",
"着天魔山进发......"
};
/***************绘制菜单触发事件***************/
int infoY; //字幕滚屏Y坐标
private void drawInfomation(Graphics g){
if(infomation==1){
g.setClip(w/2-50,h/2-23,100,46);
g.setColor(0x000000);
g.fillRect(w/2-50,h/2-23,100,46);
g.setColor(0x494949);
g.fillRect(w/2-48,h/2-21,96,42);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("没有读取记录",w/2,h/2-18,Graphics.TOP|Graphics.HCENTER);
g.drawString("请开始游戏",w/2,h/2+1,Graphics.TOP|Graphics.HCENTER);
}
else if(infomation==2){
g.setColor(0x000000);
g.fillRect(10,h/2-100,220,200);
g.setColor(0x505155);
g.fillRect(12,h/2-70,216,140);
g.setColor(0xffff00);
g.setFont(font);
g.setClip(12,h/2-70,216,140);
for(int i=0;i<10;i++){
g.drawString(gameFront[i],15,infoY+i*20,20);
}
}
else if(infomation==3){
g.setColor(0x000000);
g.fillRect(10,h/2-100,220,200);
g.setColor(0x505155);
g.fillRect(12,h/2-98,216,196);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("游戏说明:",15,h/2-95,20);
g.drawString(" 该游戏为RPG单机游戏,游戏共有七关,",15,h/2-75,20);
g.drawString("每关难度都会增加,本游戏纯属娱乐,不做",15,h/2-55,20);
g.drawString("商业用途。",15,h/2-35,20);
g.drawString("游戏控制:",15,h/2-15,20);
g.drawString(" 本游戏操作简易,只需键盘上、下、左、",15,h/2+5,20);
g.drawString("右、确定控制游戏的前进、后退、左行进、",15,h/2+25,20);
g.drawString("右行进、选择确定;左软键控制游戏的功",15,h/2+45,20);
g.drawString("能选项,右软键控制游戏进程。",15,h/2+65,20);
}
}
/***************MAP属性***************/
private int outcol = 0; //列偏移
private int outrow = 0; //行偏移
private final byte MyMap_map[][] = {
{ 29, 30, 29, 30, 29, 30, 53, 54, 2, 13, 13, 2, 55, 56, 29, 30, 29, 30, 29, 30 },
{ 41, 41, 41, 41, 41, 41, 65, 66, 2, 13, 13, 2, 67, 68, 41, 41, 41, 41, 41, 41 },
{ 2, 2, 2, 2, 2, 2, 77, 78, 2, 13, 13, 2, 79, 80, 2, 2, 2, 2, 2, 2 },
{ 2, 2, 2, 2, 2, 2, 89, 90, 2, 13, 13, 2, 91, 92, 2, 2, 2, 2, 2, 2 },
{ 85, 86, 85, 86, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 85, 86, 85, 86 },
{ 29, 30, 29, 30, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 29, 30, 29, 30 },
{ 41, 41, 41, 41, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 41, 41, 41, 41 },
{ 41, 41, 41, 41, 29, 30, 29, 30, 42, 42, 42, 42, 29, 30, 29, 30, 41, 41, 41, 41 },
{ 14, 14, 14, 14, 41, 41, 41, 41, 42, 42, 42, 42, 41, 41, 41, 41, 14, 14, 14, 14 },
{ 2, 2, 2, 14, 41, 41, 41, 41, 42, 42, 42, 42, 41, 41, 41, 41, 14, 2, 2, 2 },
{ 2, 2, 2, 14, 14, 14, 14, 14, 42, 42, 42, 42, 14, 14, 14, 14, 14, 2, 2, 2 },
{ 2, 2, 2, 2, 2, 2, 7, 8, 13, 13, 73, 13, 13, 74, 13, 13, 13, 13, 7, 8 },
{ 2, 2, 2, 2, 2, 2, 19, 20, 13, 74, 13, 13, 13, 13, 13, 13, 74, 73, 19, 20 },
{ 5, 6, 2, 2, 2, 2, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 13, 13, 7, 8 },
{ 17, 18, 2, 2, 2, 2, 19, 20, 19, 20, 19, 20, 19, 20, 19, 20, 13, 13, 19, 20 },
{ 2, 13, 13, 73, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 74, 13, 13, 13, 2 },
{ 2, 13, 13, 13, 13, 13, 74, 13, 73, 13, 13, 13, 74, 13, 13, 73, 13, 13, 29, 30 },
{ 29, 42, 42, 42, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 41, 41 },
{ 41, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 2, 2 },
{ 2, 42, 42, 42, 2, 13, 74, 13, 13, 13, 13, 13, 74, 13, 2, 2, 13, 13, 13, 13 },
{ 2, 74, 13, 13, 13, 13, 13, 3, 4, 13, 3, 4, 13, 73, 13, 74, 13, 13, 73, 13 },
{ 2, 13, 13, 73, 13, 13, 2, 15, 16, 2, 15, 16, 2, 13, 13, 13, 2, 2, 29, 30 },
{ 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 42, 42, 42, 29, 30, 41, 41 },
{ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 41, 41, 2, 2 },
{ 2, 2, 2, 13, 13, 13, 13, 13, 13, 73, 13, 13, 13, 42, 42, 42, 13, 13, 13, 13 },
{ 2, 13, 13, 73, 13, 3, 4, 13, 13, 3, 4, 13, 74, 13, 13, 13, 74, 13, 73, 13 },
{ 2, 13, 74, 13, 2, 15, 16, 2, 2, 15, 16, 13, 13, 13, 73, 13, 2, 2, 29, 30 },
{ 29, 42, 42, 42, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 41, 41 },
{ 41, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 2, 2 },
{ 2, 42, 42, 42, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 8, 75, 76, 2, 2, 2 },
{ 2, 13, 13, 13, 13, 13, 13, 74, 13, 13, 2, 2, 2, 19, 20, 87, 88, 2, 2, 2 },
{ 2, 13, 13, 13, 13, 73, 13, 13, 13, 13, 2, 2, 2, 2, 3, 4, 2, 2, 2, 2 },
{ 2, 7, 8, 2, 2, 49, 50, 9, 10, 11, 12, 2, 3, 4, 15, 16, 2, 2, 5, 6 },
{ 2, 19, 20, 2, 2, 61, 62, 21, 22, 23, 24, 2, 15, 16, 2, 2, 2, 2, 17, 18 },
{ 1, 1, 1, 1, 1, 1, 1, 33, 34, 35, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 57, 58, 59, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 33, 34, 35, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 69, 70, 71, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 7, 8, 2, 2, 2, 5, 6, 81, 82, 83, 84, 2, 2, 7, 8, 2, 7, 8, 2, 2 },
{ 19, 20, 2, 2, 2, 17, 18, 93, 94, 95, 96, 2, 2, 19, 20, 2, 19, 20, 2, 2 },
{ 2, 2, 75, 76, 2, 2, 2, 2, 13, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
{ 2, 2, 87, 88, 13, 13, 13, 73, 13, 13, 2, 3, 4, 2, 2, 5, 6, 5, 6, 2 },
{ 2, 3, 4, 13, 51, 52, 13, 13, 13, 2, 2, 15, 16, 75, 76, 17, 18, 17, 18, 2 },
{ 2, 15, 16, 13, 63, 64, 2, 43, 7, 8, 49, 50, 2, 87, 88, 2, 2, 13, 13, 13 },
{ 2, 32, 5, 6, 73, 13, 13, 73, 19, 20, 61, 62, 2, 2, 25, 26, 13, 13, 74, 13 },
{ 2, 2, 17, 18, 2, 13, 13, 74, 13, 2, 2, 2, 32, 44, 37, 38, 13, 13, 2, 43 },
{ 2, 25, 26, 2, 2, 2, 2, 13, 13, 13, 2, 31, 2, 2, 13, 13, 73, 13, 3, 4 },
{ 2, 37, 38, 44, 31, 49, 50, 2, 73, 13, 5, 6, 2, 13, 73, 74, 13, 2, 15, 16 },
{ 13, 13, 13, 2, 2, 61, 62, 2, 13, 13, 17, 18, 13, 13, 13, 7, 8, 75, 76, 2 },
{ 13, 73, 13, 13, 13, 13, 13, 51, 52, 13, 74, 13, 73, 13, 2, 19, 20, 87, 88, 2 },
{ 2, 43, 13, 13, 13, 74, 13, 63, 64, 13, 13, 13, 13, 2, 32, 44, 2, 2, 7, 8 },
{ 75, 76, 2, 2, 5, 6, 2, 2, 5, 6, 13, 13, 2, 2, 2, 27, 28, 2, 19, 20 },
{ 87, 88, 2, 2, 17, 18, 7, 8, 17, 18, 13, 13, 74, 2, 2, 39, 40, 2, 2, 2 },
{ 2, 2, 2, 3, 4, 2, 19, 20, 2, 2, 2, 13, 51, 52, 74, 13, 13, 13, 2, 2 },
{ 2, 2, 2, 15, 16, 5, 6, 2, 13, 13, 73, 13, 63, 64, 13, 73, 13, 74, 13, 43 },
{ 2, 2, 2, 7, 8, 17, 18, 13, 74, 13, 13, 74, 13, 27, 28, 2, 2, 13, 73, 13 },
{ 2, 2, 2, 19, 20, 2, 13, 73, 13, 7, 8, 13, 13, 39, 40, 2, 49, 50, 13, 13 },
{ 2, 2, 7, 8, 2, 73, 13, 13, 2, 19, 20, 13, 73, 13, 13, 31, 61, 62, 2, 2 },
{ 3, 4, 19, 20, 13, 13, 13, 5, 6, 2, 2, 3, 4, 13, 13, 3, 4, 75, 76, 2 },
{ 15, 16, 2, 13, 13, 13, 43, 17, 18, 2, 2, 15, 16, 2, 2, 15, 16, 87, 88, 2 }
};
private final byte MyMap_collides[][] = {
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1},
{1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 5, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 5, 5},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0},
{1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 4, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 4, 0, 0, 0},
{0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1},
{0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1},
{1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1},
{1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 3, 1, 1, 1, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 3, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 1, 1, 0},
};
/***************绘制地图***************/
private void drawMap(Graphics g){
int tempx = 0,tempy = 0;
for(int i=outrow;i<outrow+18;i++){
for(int j=outcol;j<outcol+15;j++){
g.setClip((j-outcol)*16,(i-outrow)*16,16,16);
if(MyMap_map[i][j]!=0){
tempx = (j-outcol)*16-(MyMap_map[i][j]-1)%12*16;
tempy = (i-outrow)*16-(MyMap_map[i][j]-1)/12*16;
g.drawImage(map,tempx,tempy,20);
}
}
}
}
/***************绘制主角***************/
private void drawPlayer(Graphics g){
g.setClip((pcol-outcol)*16,(prow-outrow)*16,32,32);
g.drawImage(player,(pcol-outcol)*16-pFrame*32,(prow-outrow)*16-pFount*32,20);
}
/***************绘制剧情NPC***************/
private int cun_X = 0,cun_Y = 0; //npc的偏移坐标
private int fang_X = 0,fang_Y = 0;
private int medicine_X = 0,medicine_Y = 0;
private void drawPlayNpc(Graphics g){
g.setClip((cun_Y-outcol)*16,(cun_X-outrow)*16,32,32);
g.drawImage(cunzhang_npc,(cun_Y-outcol)*16,(cun_X-outrow)*16,20);
g.setClip((fang_Y-outcol)*16,(fang_X-outrow)*16,32,32);
g.drawImage(fangju_npc,(fang_Y-outcol)*16,(fang_X-outrow)*16,20);
g.setClip((medicine_Y-outcol)*16,(medicine_X-outrow)*16,32,32);
g.drawImage(medicine_npc,(medicine_Y-outcol)*16,(medicine_X-outrow)*16,20);
}
/***************绘制对话框***************/
String[] talk_about = {
"请问这位大爷,这是天魔山吗?", //P 0
"是呀,小伙子,你到这里做什么?", //C 1
"我的女友被这山上的怪物掳走了,", //P 2
"我要去救她。", //P 3
"唉,小伙子,我劝你还是别去了。", //C 4
"为什么......", //P 5
"这天魔山共有七层,由七个胞胎怪", //C 6
"物常年在此驻守着,它们呼风唤雨,", //C 7
"力量无穷,实在是太厉害了。每年", //C 8
"它们都会到我们村子掳走很多的女", //C 9
"人,村中比较强壮的男人集中起来", //C 10
"与它们抗争,可是死伤无数,如今", //C 11
"村民逃命的逃命,已经没有多少人", //C 12
"了,我劝你还是赶快回去吧。", //C 13
"没想到这七个怪物如此作恶多端,", //P 14
"我怎能坐视不理?为救女友,为了", //P 15
"你们大家,我一定要将它们除去。", //P 16
"小伙子,你叫什么名字?", //C 17
"我叫干将!", //P 18
"", //C 19
"", //C 20
"去,我这把老骨头还有我的村民一定", //C 21
"会助你一臂之力。", //C 22
"不用了,老人家,我一个人上山就可", //P 23
"以了,你们听我的好消息吧。", //P 24
"那小伙子,祝你好运!", //C 25
"一路小心,我代表村民们感谢你!", //C 26
"出售各种防具,兄弟,随便看看吧。", //F 27
"出售各种药材,帅哥,随便看看吧。", //Y 28
"让我看看有什么好东西。", //P 29
"不了,我还要赶路呢。", //P 30
"唉,生意难做啊!" , //F 31
"哈哈......居然有人来送死!", //B 32
"......................", //P 33
"一个白痴嘛,这么猖狂......", //P 34
"什么,居然敢在我面前无礼,找死!", //B 35
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -