📄 rpg_demo.java
字号:
break;
case MAIN_STATE_ABOUT:
DrawAbout();
break;
}
input();
endTime=System.currentTimeMillis();
if(endTime-startTime<50)//如果一个循环的运行时间小于一定的时间
{
try
{
Thread.sleep(80);
} catch (InterruptedException e)
{
// TODO 自动生成 catch 块
e.printStackTrace();
}//end try
}//end if
/* System.gc();
g.setColor(0);
g.fillRect(0, 0, 80, 80);
g.setColor(0xff0000);
g.drawString(""+Runtime.getRuntime().freeMemory(), 0, 0, 0);
g.drawString(""+Runtime.getRuntime().totalMemory(), 0, 30, 0);*/
flushGraphics();
}//end while
}//end run
public void DrawLogo()
{
int index=0;
while(index<3) //画三桢Logo界面
{
g.drawImage(logo_Image, SCREEN_WIDTH/2+10, SCREEN_HEIGHT/2, Graphics.VCENTER|Graphics.HCENTER);
index++;
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
flushGraphics();
}
}
public void DrawMenu()
{
g.setColor(0x00000000);
g.fillRect(0,0,getWidth(),getHeight());
try
{
menu_Image=Image.createImage("/background.png");
g.drawImage(menu_Image,getWidth()/2, getHeight()/2+20, Graphics.VCENTER|Graphics.HCENTER);
}catch(Exception exp)
{
System.out.println(exp);
}
for(int i=0;i<mainMenu.length;i++)
{
if(i==menu_Selected)
{
//g.setColor(highBGColor);
//g.fillRect(50,startHeight+(i*highFont.getHeight())+spacing,SCREEN_WIDTH,highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(mainMenu[i],(SCREEN_WIDTH-lowFont.stringWidth(mainMenu[i]))/2,
startHeight+(i*highFont.getHeight())+spacing,20);
}else
{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(mainMenu[i],(SCREEN_WIDTH-lowFont.stringWidth(mainMenu[i]))/2,startHeight+(i*highFont.getHeight())+spacing,20);
}
}
}
public void DrawLoading()
{
int times=0;
int index=1;
while(times<10)
{
g.setColor(0x000000);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
buffer.delete(0, buffer.length()); //每次要将字符缓冲区清空
buffer.append("读取中");
for(int i=0;i<index;i++)
buffer.append(".");
g.setColor(0xffff00);
g.setFont(medium);
g.drawString(buffer.toString(), SCREEN_WIDTH/2-25, SCREEN_HEIGHT/2-10, Graphics.LEFT|Graphics.TOP);
times++;
index=(index+1)%4;
/* try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
} */
// flushGraphics();
}
menu_Image=null;
//System.out.println("run here_LOADING");
System.gc();
}
public void DrawGame()
{
lm=new LayerManager();
cunzi=new Map_cuizi();
bg=cunzi.BG_cell;
pz=cunzi.PZ_cell;
try
{
sprite_hero_Image=Image.createImage("/hero.png");
guaiwu_qiulin_Image=Image.createImage("/qiulin.png");
guaiwu_senlin_Image=Image.createImage("/senlin.png");
guaiwu_yanshi_Image=Image.createImage("/yanshi.png");
npc_king_Image=Image.createImage("/NPC_2.png");
npc_shangdian_Image=Image.createImage("/NPC_1.png");
npc_tiejiang_Image=Image.createImage("/NPC_3.png");
}catch(Exception e)
{
System.out.println(e.getMessage());
}
npc_king=new Npc(npc_king_Image,24,32,8,352+10,"镇长");
npc_tiejiang=new Npc(npc_tiejiang_Image,24,32,176+10,288-10,"铁匠");
npc_shangdian=new Npc(npc_shangdian_Image,24,32,22,448+28,"杂货商");
Hero=new Player_RPG(sprite_hero_Image,24,32,150,200+64+32);
/*for(int i=0;i<guai_map1.length;i++)
guai_map1[i].defineCollisionRectangle(5, 5, 20, 25);*///给怪物设置碰撞区域
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,368,128,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,400,240,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,192,112,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,112,16,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,320,16,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,476,272,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,80,80,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,208,16,"丘陵怪"));
vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,416,80,"丘陵怪"));
/*for(int j=0;j<vec.size();j++)
lm.insert((Enemy)vec.elementAt(j), 0);*/
//**
tl_BG=new TiledLayer(32,32,map_cunzi_Image,16,16);
tl_PZ=new TiledLayer(32,32,map_cunzi_Image,16,16);
for(int i=0;i<bg.length;i++)
{
for(int j=0;j<bg[i].length;j++)
{
tl_BG.setCell(j,i,bg[i][j]);
tl_PZ.setCell(j,i,pz[i][j]);
}
}
lm.append(Hero);
lm.insert(npc_king,1);
lm.insert(npc_tiejiang,1);
lm.insert(npc_shangdian,1);
for(int i=0;i<vec.size();i++)
lm.insert((Enemy)vec.elementAt(i), 1);
lm.append(tl_PZ);
lm.append(tl_BG);
}
public void DrawAbout()
{
g.setColor(0x1c1814);
g.fillRect(0, 0, getWidth(), getHeight()+20);
g.setColor(0x4cc428);
g.setFont(highFont);
g.drawString(buffer.append("2--上,4--左,6--右,8--下").toString(),0,0, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("5--普通攻击/技能攻击").toString(),0,20, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("7--使用红药").toString(),0,40, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("9--使用蓝药").toString(),0,60, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("#--人物状态查看").toString(),0,80, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("*--技能切换").toString(),0,100, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("本游戏由软技0531班game").toString(),0,getHeight()-40, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
g.drawString(buffer.append("one小组开发。仅供学习。").toString(),0,getHeight()-20, Graphics.TOP|Graphics.LEFT);
buffer.delete(0,buffer.length());
}
public void render()
{
g.setColor(0x00ff0000);
g.fillRect(0, 0, getWidth(), getHeight());
// 滚动屏幕
if((Hero.getX()-viewWindowX)<50){
viewWindowX-=Hero.spend_Move;
if(viewWindowX<=0)viewWindowX=0;
}
if(Hero.getX()+Hero.w_Frame+50>viewWindowX+getWidth()){
viewWindowX+=Hero.spend_Move;
if(viewWindowX+getWidth()>tl_BG.getWidth())viewWindowX=tl_BG.getWidth()-getWidth();
}
if(Hero.getY()-viewWindowY<50){
viewWindowY-=Hero.spend_Move;
if(viewWindowY<0)viewWindowY=0;
}
if(Hero.getY()+Hero.h_Frame*2>viewWindowY+getHeight()){
viewWindowY+=Hero.spend_Move;
if(viewWindowY+getHeight()>tl_BG.getHeight())viewWindowY=tl_BG.getHeight()-getHeight();
}
//根据上面的调整重新设置视窗的位置
lm.setViewWindow(viewWindowX,viewWindowY, getWidth(),getHeight());
checkCollision(PlayerState);
lm.paint(g, 0, 0);
g.translate(-viewWindowX,-viewWindowY);
npc_king.DrawState(g,npc_Name_king,npc_king.x,npc_king.y);
npc_tiejiang.DrawState(g,npc_Name_tiejiang,npc_tiejiang.x,npc_tiejiang.y);
npc_shangdian.DrawState(g,npc_Name_shangdian,npc_shangdian.x,npc_shangdian.y);
//(Enemy)vec.elementAt(0).DrawState(g,guai_map1[0].nx,guai_map1[0].ny,guai_map1[0].name);
for(int i=0;i<vec.size();i++)
{
((Enemy)(vec.elementAt(i))).DrawState(g, ((Enemy)(vec.elementAt(i))).nx, ((Enemy)(vec.elementAt(i))).ny, ((Enemy)(vec.elementAt(i))).name);
}
g.translate(viewWindowX, viewWindowY);
Hero.Draw_STATE(g, touxiang_Image,red_Image,blue_Image,jn_Image,SCREEN_WIDTH,SCREEN_HEIGHT);
}//end render
private void checkCollision(int key)
{
if (Hero.collidesWith(tl_PZ, true))
{
if (key == LEFT_PRESSED)
{
Hero.move(Hero.spend_Move, 0);
Hero.px+=Hero.spend_Move;
}
else if (key == RIGHT_PRESSED)
{
Hero.move(-Hero.spend_Move, 0);
Hero.px-=Hero.spend_Move;
}
else if (key == UP_PRESSED)
{
Hero.move(0, Hero.spend_Move);
Hero.py+=Hero.spend_Move;
}
else if(key==DOWN_PRESSED)
{
Hero.move(0, -Hero.spend_Move);
Hero.py-=Hero.spend_Move;
}
}//end if
}//end checkCollission
public void DrawGameMenu()
{
g.setColor(0x000000);
g.drawRect(getWidth()-70, 30, 70, 120);
g.setColor(0xf3ddaa);
g.fillRect(getWidth()-69, 31, 69, 119);
for(int i=0;i<gameMenu.length;i++)
{
if(i==gamemenu_Selected)
{
//g.setColor(highBGColor);
//g.fillRect(50,startHeight+(i*highFont.getHeight())+spacing,SCREEN_WIDTH,highFont.getHeight());
g.setFont(highFont);
g.setColor(highColor);
g.drawString(gameMenu[i],getWidth()-65,30+i*28,20);
}else
{
g.setFont(lowFont);
g.setColor(lowColor);
g.drawString(gameMenu[i],getWidth()-65,30+i*28,20);
}
}
/*g.setFont(mini);
g.setColor(0xff0000);
g.fillRect(121, 30+gamemenu_Selected*28, 54, 14);
g.setColor(0x0000ff);
for(int i=0;i<gameMenu.length;i++)
g.drawString(gameMenu[i], 125, 30+i*28, Graphics.TOP|Graphics.LEFT);*/
}
public void drawManssage()
{
}
public void drawGameover()
{
try
{
gameover_Image=Image.createImage("/gameover.png");
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
player.stop();
player.close();
is=getClass().getResourceAsStream("/gameover.mid");
player=Manager.createPlayer(is,"audio/midi");
player.realize();
player.setLoopCount(-1);
player.start();
}catch (MediaException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
g.setColor(0x008c8a7b);
g.fillRect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT+20);
g.drawImage(gameover_Image, SCREEN_WIDTH/2, SCREEN_WIDTH/2, Graphics.VCENTER|Graphics.HCENTER);
flushGraphics();
try
{
Thread.sleep(3000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
mapindex=MAP_CUNZI;
}
public void DrawTacking(String[] arg0)
{
g.setColor(0x00ffffff);
g.drawRect(0,getHeight()-40,getWidth(),40);
g.setColor(0x00f3ddaa);
g.fillRect(1,getHeight()-39,getWidth()-1,39);
g.setColor(0x000000);
g.setFont(medium);
g.drawString(arg0[tacking_Selected],3,getHeight()-37,20);
}
public void hero_Judge()
{
// System.out.println("----"+Hero.px);
// System.out.println("++++"+Hero.py);
if(Hero.exp>=Hero.exp_max)
{
Hero.Levelup(true);
}
if(Hero.hp<=0)
{
for(int i=0;i<vec.size();i++)
lm.remove((Enemy)vec.elementAt(i));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -