迷宫day3

day3 完成!


GamePanel:偷笑

package com.cisst;


import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;


import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class GamePanel extends JPanel {

private BufferedImage wall;
private BufferedImage left[]=new BufferedImage[4];
private BufferedImage right[]=new BufferedImage[4];
private BufferedImage up[]=new BufferedImage[4];
private BufferedImage down[]=new BufferedImage[4];

private int direct=0;  //小人的方向
private int index=0;//动画索引
private int row=0;//小人的行,列坐标
private int col =0;

public GamePanel()
{
super();
this.setSize(Config.SWIDTH,Config.SHEIGHT);
this.setVisible(true);
initImage();
}
/*初始化游戏中的图片*/
public void initImage()
{
try {
wall=ImageIO.read(this.getClass().getResource("/com/res/wall.jpg"));

for(int i=1;i<=4;i++)
{
left[i-1]=ImageIO.read(this.getClass().getResource("/com/res/2_"+i+".jpg"));
}
for(int i=1;i<=4;i++)
{
right[i-1]=ImageIO.read(this.getClass().getResource("/com/res/3_"+i+".jpg"));
}
for(int i=1;i<=4;i++)
{
up[i-1]=ImageIO.read(this.getClass().getResource("/com/res/4_"+i+".jpg"));
}
for(int i=1;i<=4;i++)
{
down[i-1]=ImageIO.read(this.getClass().getResource("/com/res/1_"+i+".jpg"));
}


} catch (IOException e) {

System.out.println("ERROR_001_加载图片出错");
e.printStackTrace();
}
}


/*初始化地图*/
public void initMap(Graphics g)
{
g.setColor(Color.white);
g.fillRect(0, 0, Config.SWIDTH, Config.SWIDTH);
for(int i=0;i<Config.map.length;i++)
{
for(int j=0;j<Config.map[i].length;j++)
{
if(Config.map[i][j]==Config.ENTER)
{
row=i;col=j;
}
if(Config.map[i][j]==Config.EXIT)
{
g.setColor(Color.BLACK);
g.fillRect(j*Config.WIDTH,i*Config.WIDTH, Config.WIDTH, Config.WIDTH);
g.setColor(Color.white);
g.drawString("EXIT",j*Config.WIDTH,i*Config.WIDTH);
}
if(Config.map[i][j]==Config.WALL)
{
g.drawImage(wall, Config.WIDTH*j, Config.WIDTH*i, null);
}

}
}
initEntery(g);
}
/*画小人入口*/
public void initEntery(Graphics g)
{
if(col+1>=10&&Config.map[row][col-1]==Config.RODE)
{
direct=Config.LEFT;
g.drawImage(left[0], col*Config.WIDTH, row*Config.WIDTH, null);
}
else if(row+1>=10&&Config.map[row-1][col]==Config.RODE)
{
direct=Config.UP;
g.drawImage(up[0], col*Config.WIDTH, row*Config.WIDTH, null);
}
else if(col-1<=0&&Config.map[row][col+1]==Config.RODE)
{
direct=Config.RIGHT;
g.drawImage(right[0], col*Config.WIDTH, row*Config.WIDTH, null);
}

else if(row-1<=0&&Config.map[row+1][col]==Config.RODE)
{
direct=Config.DOWN;
g.drawImage(down[0], col*Config.WIDTH, row*Config.WIDTH, null);
}
else
{

}


}
    /*操作*/
public void playGame()
{
Graphics g=this.getGraphics();
if(index==3)
index=0;
if(direct==Config.LEFT)
{   isWin(row,col-1);
  

if(col-1>=0&&Config.map[row][col-1]==Config.RODE)
{
g.drawImage(left[index++],(col-1)*Config.WIDTH, (row)*Config.WIDTH, null);
fillblock(g);
col--;
}
}else if(direct==Config.RIGHT)
{//System.out.println(",,,,,,");
isWin(row,col+1);
if(col+1<10&&Config.map[row][col+1]==Config.RODE)
{
//System.out.println(",,,,,,");
g.drawImage(right[index++],(col+1)*Config.WIDTH, (row)*Config.WIDTH, null);
fillblock(g);
col++;
}
}else if(direct==Config.UP)
{
isWin(row-1,col);
if(row-1<10&&Config.map[row-1][col]==Config.RODE)
{
g.drawImage(up[index++],col*Config.WIDTH, (row-1)*Config.WIDTH, null);
fillblock(g);
row--;
}
}else if(direct==Config.DOWN)
{    
isWin(row+1,col);
if(row+1<10&&Config.map[row+1][col]==Config.RODE)
{
g.drawImage(down[index++],col*Config.WIDTH, (row+1)*Config.WIDTH, null);
fillblock(g);
row++;
}
}

}
public void isWin(int row ,int col)
{
if(row>=0&&row<10&&col>=0&&col<10&&Config.map[row][col]==Config.EXIT)
{  int r=JOptionPane.showConfirmDialog(null,"成功!确定退出");
 if(r==JOptionPane.YES_OPTION)
 {
 System.exit(0);
 }
}
}
public void fillblock(Graphics g)
{
g.setColor(Color.white);
g.fillRect(col*Config.WIDTH,row*Config.WIDTH, Config.WIDTH, Config.WIDTH);
}
public int getDirect() {
return direct;
}
public void setDirect(int direct) {
this.direct = direct;
}
public void paint(Graphics g) {
super.paint(g);
this.initMap(g);
}



}



MainFrame.java:

package com.cisst;


import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class MainFrame extends JFrame {


private GamePanel game=new GamePanel();



/*计时功能
private JLabel lab1= new JLabel();
public void getTime()
{
int time=20;
while(time>0)
{

lab1.setText("还剩"+time+"秒");

try {
           Thread.sleep(1000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
time--;
}
if(time<=0)
{int r=JOptionPane.showConfirmDialog(null,"游戏失败!确定退出");
 if(r==JOptionPane.YES_OPTION)
 {
 System.exit(0);
 }
}




}*/




public MainFrame()
{
super("迷宫1");
JPanel jp=new JPanel();


this.setSize(Config.SWIDTH+30,Config.SHEIGHT+33);
this.setLocation(100,10);
// this.add(jp);
//jp.add(lab1);
this.add(game);

this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addKeyListener(new KeyAdapter()
{


@Override
public void keyReleased(KeyEvent e) {
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT:
game.setDirect(Config.LEFT);

break;

case KeyEvent.VK_RIGHT:
//System.out.println(",,,,,,");
game.setDirect(Config.RIGHT);

break;

case KeyEvent.VK_UP:
game.setDirect(Config.UP);

break;
case KeyEvent.VK_DOWN:
game.setDirect(Config.DOWN);

break;
default:
                      break;
}

game.playGame();
}

});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
       new MainFrame();//.getTime();
}


}


明天加上计时器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值