⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfcanvas.java

📁 一个RPG的JAVA游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import java.io.*;
import java.util.Random;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreNotFoundException;

public class SFCanvas extends GameCanvas
	implements Runnable
{

	private final int LISTENER_LEFT = 4;
	private final int LISTENER_RIGHT = 32;
	private final int LISTENER_UP = 2;
	private final int LISTENER_DOWN = 64;
	private int setX;
	private int setY;
	private int heroWidth;
	private int heroHeight;
	private int mapdir;
	private int itempage;
	private int itemchoice;
	static int keyState;
	static int nowShopcho = 0;
	static int buynum = 0;
	private boolean isCho1;
	private boolean isData1;
	private boolean isData2;
	private boolean isOpenItem;
	private boolean isGetpress;
	private boolean isDelpress;
	private boolean isDelok;
	private boolean isChkdel;
	private boolean isOpenshop;
	private boolean isOpenintro;
	private boolean isFirst;
	private boolean isOut;
	private boolean isBreak;
	private boolean isOpenmisn;
	private Random randdead;
	String dataname;
	private int menuselc;
	private int menudisp;
	private Graphics g;
	private byte heroData[];
	private int itemprice[] = {
		30, 100, 500, 1000, 3000
	};
	public RecordStore rs;
	public int myid;
	public int itemcho;
	public static Image hImage;
	public static Image mapImage;
	public static Image monsterImage;
	public static Image bfImage;
	public static Image bloodImage;
	public static Image hpImage;
	public static Image hplImage;
	public static Image loadImage;
	public static Image loadImage2;
	public static Image itemImage;
	public static Image goldImage;
	public static Image gearImage;
	public static Image houseImagetop;
	public static Image houseImagebottom;
	public static Image npcImage;
	public static Image npcImage1;
	public static Image shopImage;
	public static Image menuImage;
	public static Image barImage;
	public static Image bgImage;
	public static Image missionImage;
	private int jqcount;
	private int marktime;
	final int GAME_MENU = -1;
	final int GAME_TITLE = 0;
	final int GAME_ING = 1;
	final int GAME_JQ = 2;
	final int GAME_OVER = 3;
	public int herolv;
	public int heroitem;
	public int herogold;
	public int heroitemlv;
	public int heroexp;
	public static String heroMyItem;
	public static String DataName = null;
	public char tempitem;
	public Thread thread;
	int DEFAULT_HP;
	int DEFAULT_LV;
	int GAME_STATE;
	HeroSprite heroSprite;
	MapTiled mapTiled;
	MonsterSprite monsterSprite;
	MonsterSprite monsterSprite1;
	MonsterSprite monsterSprite2;
	MonsterSprite monsterSprite3;
	MonsterSprite monsterSprite4;
	MonsterSprite monsterSprite5;
	MonsterSprite monsterSprite6;
	MonsterSprite monsterSprite7;
	MonsterSprite monsterSprite8;
	MonsterSprite monsterSprite9;
	MonsterSprite monsterSprite10;
	NPCSprite npcSprite;
	NPCSprite npcSprite1;
	LayerManager layManager;
	ASprite tempMonster;

	public void doHeroInit()
	{
		heroSprite.lv = 1;
		heroSprite.itemlv = 0;
		heroSprite.gold = 0;
		heroSprite.MyItem = "000000000000";
		heroSprite.exp = 210;
	}

	public void gotoMap(int i)
	{
		if (i == 0)
		{
			monsterSprite = null;
			monsterSprite1 = null;
			monsterSprite2 = null;
			monsterSprite3 = null;
			monsterSprite4 = null;
			monsterSprite5 = null;
			monsterSprite6 = null;
			monsterSprite7 = null;
			monsterSprite8 = null;
			monsterSprite9 = null;
			monsterSprite10 = null;
			monsterImage = null;
			layManager.remove(mapTiled);
			mapImage = null;
			mapTiled = null;
			heroSprite.isWalkable = (boolean[][])null;
			try
			{
				mapImage = Image.createImage("/map2.png");
				houseImagetop = Image.createImage("/house_01.png");
				houseImagebottom = Image.createImage("/house_02.png");
				shopImage = Image.createImage("/shop.png");
				npcImage = Image.createImage("/npc.png");
				npcImage1 = Image.createImage("/npc1.png");
			}
			catch (Exception exception) { }
			mapTiled = new MapTiled(30, 30, mapImage, 16, 16, getWidth(), getHeight());
			mapTiled.drawMap(i, setX, setY);
			heroSprite.chgMapbool(mapTiled.isWalkable0);
			layManager.append(mapTiled);
			npcSprite = new NPCSprite(npcImage1, 25, 32, 1, 86, 161);
			npcSprite1 = new NPCSprite(npcImage, 15, 35, 2, 328, 288);
			heroSprite.mapdir = 0;
		} else
		{
			layManager.remove(mapTiled);
			mapImage = null;
			mapTiled = null;
			houseImagetop = null;
			houseImagebottom = null;
			heroSprite.isWalkable = (boolean[][])null;
			npcSprite = null;
			npcSprite1 = null;
			shopImage = null;
			try
			{
				mapImage = Image.createImage("/title.png");
				monsterImage = Image.createImage("/monster.png");
			}
			catch (Exception exception1) { }
			mapTiled = new MapTiled(40, 40, mapImage, 16, 16, getWidth(), getHeight());
			mapTiled.drawMap(i, setX, setY);
			heroSprite.chgMapbool(mapTiled.isWalkable);
			layManager.append(mapTiled);
			monsterSprite = new MonsterSprite(monsterImage, 50, 50, 90, 90, false, 2);
			monsterSprite1 = new MonsterSprite(monsterImage, 50, 50, 140, 140, false, 1);
			monsterSprite2 = new MonsterSprite(monsterImage, 50, 50, 120, 120, false, 3);
			monsterSprite3 = new MonsterSprite(monsterImage, 50, 50, 300, 110, false, 5);
			monsterSprite4 = new MonsterSprite(monsterImage, 50, 50, 300, 160, false, 4);
			monsterSprite5 = new MonsterSprite(monsterImage, 50, 50, 300, 200, false, 5);
			monsterSprite6 = new MonsterSprite(monsterImage, 50, 50, 400, 50, false, 7);
			monsterSprite7 = new MonsterSprite(monsterImage, 50, 50, 400, 110, false, 7);
			monsterSprite8 = new MonsterSprite(monsterImage, 50, 50, 400, 500, false, 8);
			monsterSprite9 = new MonsterSprite(monsterImage, 50, 50, 460, 500, false, 9);
			monsterSprite10 = new MonsterSprite(monsterImage, 50, 50, 420, 550, false, 12);
			heroSprite.mapdir = 1;
		}
	}

	public SFCanvas()
	{
		super(true);
		setX = (180 - getWidth() / 2) + 20;
		setY = (180 - getHeight() / 2) + 20;
		mapdir = 0;
		itempage = 1;
		itemchoice = 1;
		isCho1 = true;
		isData1 = false;
		isData2 = false;
		isOpenItem = false;
		isDelpress = false;
		isDelok = false;
		isChkdel = false;
		isOpenshop = false;
		isOpenintro = false;
		isFirst = false;
		isOut = false;
		isBreak = false;
		isOpenmisn = false;
		randdead = new Random();
		dataname = "crazy4";
		menuselc = 1;
		menudisp = 0;
		myid = -1;
		itemcho = 1;
		jqcount = 0;
		marktime = 0;
		herolv = -1;
		heroitem = -1;
		herogold = -1;
		heroitemlv = -1;
		heroexp = -1;
		DEFAULT_HP = 100;
		DEFAULT_LV = 1;
		GAME_STATE = -1;
		System.out.print("构造函数开始运行");
		try
		{
			hImage = Image.createImage("/mainch.png");
			mapImage = Image.createImage("/map2.png");
			houseImagetop = Image.createImage("/house_01.png");
			houseImagebottom = Image.createImage("/house_02.png");
			npcImage = Image.createImage("/npc.png");
			npcImage1 = Image.createImage("/npc1.png");
			bloodImage = Image.createImage("/blood.png");
			hpImage = Image.createImage("/blood.png");
			hplImage = Image.createImage("/bloodti.png");
			loadImage = Image.createImage("/load1.png");
			loadImage2 = Image.createImage("/load2.png");
			itemImage = Image.createImage("/box.png");
			goldImage = Image.createImage("/gold.png");
			gearImage = Image.createImage("/item.png");
			shopImage = Image.createImage("/shop.png");
			menuImage = Image.createImage("/menu.png");
			barImage = Image.createImage("/bar.png");
			bgImage = Image.createImage("/1212.png");
			missionImage = Image.createImage("/menumain.png");
		}
		catch (Exception exception) { }
		mapTiled = new MapTiled(30, 30, mapImage, 16, 16, getWidth(), getHeight());
		heroSprite = new HeroSprite(hImage, 40, 40);
		heroWidth = heroSprite.getWidth() / 2;
		heroHeight = heroSprite.getHeight() / 2;
		heroSprite.chgMapbool(mapTiled.isWalkable0);
		npcSprite = new NPCSprite(npcImage1, 25, 32, 1, 86, 161);
		npcSprite1 = new NPCSprite(npcImage, 15, 35, 2, 328, 288);
		heroSprite.isAlive = true;
		mapTiled.drawMap(0, setX, setY);
		g = getGraphics();
		layManager = new LayerManager();
		layManager.append(mapTiled);
		thread = new Thread(this);
		System.out.print("构造函数运行完毕");
		thread.start();
	}

	private void doMonster(MonsterSprite monstersprite, HeroSprite herosprite, RecordStore recordstore, int i)
	{
		herosprite.doMonster(monstersprite.doMovedraw(herosprite.x + heroWidth, herosprite.y + heroHeight, getHeight(), getWidth(), herosprite.dir, herosprite.iisBattle, herosprite, herosprite.hp, herosprite.lv, herosprite.itemlv), monstersprite.deadlv, recordstore, i);
	}

	private void monsterBlood(MonsterSprite monstersprite)
	{
		if (monstersprite.isAlive)
		{
			g.setColor(0x8a56e8);
			g.drawRoundRect(monstersprite.x - setX - 10, monstersprite.y - setY - 15, 20, 5, 3, 3);
			g.setColor(0xff030f);
			g.fillRoundRect(monstersprite.x - setX - 10, monstersprite.y - setY - 15, (20 * monstersprite.hp) / monstersprite.maxHp, 5, 3, 3);
			g.setColor(0);
			g.drawString(monstersprite.lv + "等级", monstersprite.x - setX - 10, monstersprite.y - setY - 15, 36);
		} else
		if (!monstersprite.isGet)
		{
			if (monstersprite.goldOritem == 0)
			{
				g.drawImage(itemImage, monstersprite.x - setX - 10, monstersprite.y - setY, 36);
			} else
			{
				g.drawString(String.valueOf(monstersprite.goldforhero), monstersprite.x - setX, monstersprite.y - setY - 15, 36);
				g.drawImage(goldImage, monstersprite.x - setX - 10, monstersprite.y - setY - 5, 36);
			}
			if (isGetpress)
			{
				isGetpress = false;
				if (monstersprite.heroDis < 22500)
					if (monstersprite.goldOritem == 0)
					{
						monstersprite.redOritem = Math.abs(randdead.nextInt() % 5);
						if (monstersprite.redOritem == 1)
						{
							if (monstersprite.lv >= 1 && monstersprite.lv <= 3)
								monstersprite.itemc = '1';
							else
							if (monstersprite.lv >= 4 && monstersprite.lv <= 7)
								monstersprite.itemc = '2';
							else
							if (monstersprite.lv >= 8 && monstersprite.lv <= 9)
								monstersprite.itemc = '3';
							else
							if ((monstersprite.lv >= 10) & (monstersprite.lv <= 12))
								monstersprite.itemc = '4';
						} else
						{
							monstersprite.itemc = '5';
						}
						int i = 0;
						do
						{
							if (i >= 12)
								break;
							if (i == 11 && heroSprite.itemcode[i] != '0')
								g.drawImage(itemImage, monstersprite.x - setX - 10, monstersprite.y - setY, 36);
							if (heroSprite.itemcode[i] == '0')
							{
								heroSprite.itemcode[i] = monstersprite.itemc;
								try
								{
									rs.setRecord(myid, heroSprite.chgTorms(false), 0, heroSprite.chgTorms(false).length);
									monstersprite.isGet = true;
								}
								catch (Exception exception1)
								{
									System.out.println(exception1);
								}
								break;
							}
							i++;
						} while (true);
					} else
					{
						heroSprite.gold = heroSprite.gold + monstersprite.goldforhero;
						try
						{
							rs.setRecord(myid, heroSprite.chgTorms(false), 0, heroSprite.chgTorms(false).length);
							monstersprite.isGet = true;
						}
						catch (Exception exception)
						{
							System.out.println(exception);
						}
					}
			}
		}
	}

	private void drawItem(char ac[], int i)
	{
		g.fillRect(135, 103 + ((i - 1) * 55) / 4, 5, 5);
		if (keyState == 2 && itemcho > 1)
			itemcho--;
		if (keyState == 64 && itemcho < 3)
			itemcho++;
		if (isDelpress)
			if (ac[(itemcho - 1) + (i - 1) * 3] != '0')
			{
				g.setColor(0xea0053);
				g.fillRoundRect(40, 40, 100, 50, 5, 5);
				g.setColor(0xffffff);
				g.drawString("是否要真的丢弃?", 50, 50, 20);
				if (isChkdel)
				{
					g.setColor(0);
					g.drawString("是", 50, 65, 20);
					g.setColor(0xffffff);
					g.drawString("否", 100, 65, 20);
				} else
				{
					g.setColor(0xffffff);
					g.drawString("是", 50, 65, 20);
					g.setColor(0);
					g.drawString("否", 100, 65, 20);
				}
				g.setColor(0xffffff);
			} else
			{
				isDelpress = false;
			}
		if (keyState == 256)
		{
			if (!isDelpress)
			{
				if (ac[(itemcho - 1) + (i - 1) * 3] != '5' && ac[(itemcho - 1) + (i - 1) * 3] != '0')
				{
					if (heroSprite.itemlv != 0)
						switch (heroSprite.itemlv)
						{
						case 1: // '\001'
							tempitem = '1';
							break;

						case 2: // '\002'
							tempitem = '2';
							break;

						case 3: // '\003'
							tempitem = '3';
							break;

						case 4: // '\004'
							tempitem = '4';
							break;
						}
					else
						tempitem = '0';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -